@ch20026103/anysis 0.0.3-alpha → 0.0.5-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/dist/cjs/analyze/Month/index.d.ts +1 -1
  2. package/dist/cjs/analyze/Month/index.test.d.ts +1 -0
  3. package/dist/cjs/analyze/Month/index.test.js +22 -0
  4. package/dist/cjs/analyze/Regression/simpleRegressoinModel.d.ts +1 -1
  5. package/dist/cjs/analyze/Slope/slope.test.js +6 -0
  6. package/dist/cjs/analyze/TimeSeries/R/index.d.ts +1 -1
  7. package/dist/cjs/index.d.ts +2 -0
  8. package/dist/cjs/index.js +5 -1
  9. package/dist/cjs/stockSkills/ema.d.ts +9 -0
  10. package/dist/cjs/stockSkills/ema.js +41 -0
  11. package/dist/cjs/stockSkills/ema.test.d.ts +1 -0
  12. package/dist/cjs/stockSkills/ema.test.js +11 -0
  13. package/dist/cjs/stockSkills/gold.d.ts +4 -4
  14. package/dist/cjs/stockSkills/kd.d.ts +31 -4
  15. package/dist/cjs/stockSkills/kd.js +58 -4
  16. package/dist/cjs/stockSkills/kd.test.js +34 -2
  17. package/dist/cjs/stockSkills/ma.d.ts +38 -9
  18. package/dist/cjs/stockSkills/ma.js +28 -1
  19. package/dist/cjs/stockSkills/ma.test.js +12 -0
  20. package/dist/cjs/stockSkills/macd.d.ts +52 -6
  21. package/dist/cjs/stockSkills/macd.js +87 -0
  22. package/dist/cjs/stockSkills/macd.test.js +24 -0
  23. package/dist/cjs/stockSkills/obv.d.ts +44 -0
  24. package/dist/cjs/stockSkills/obv.js +89 -0
  25. package/dist/cjs/stockSkills/obv.test.d.ts +1 -0
  26. package/dist/cjs/stockSkills/obv.test.js +20 -0
  27. package/dist/cjs/stockSkills/rsi.d.ts +4 -4
  28. package/dist/cjs/stockSkills/utils/getWeekLine.d.ts +2 -2
  29. package/dist/cjs/stockSkills/williams.d.ts +4 -4
  30. package/dist/esm/analyze/Month/index.d.ts +1 -1
  31. package/dist/esm/analyze/Month/index.test.d.ts +1 -0
  32. package/dist/esm/analyze/Month/index.test.js +20 -0
  33. package/dist/esm/analyze/Regression/simpleRegressoinModel.d.ts +1 -1
  34. package/dist/esm/analyze/Slope/slope.test.js +6 -0
  35. package/dist/esm/analyze/TimeSeries/R/index.d.ts +1 -1
  36. package/dist/esm/index.d.ts +2 -0
  37. package/dist/esm/index.js +2 -0
  38. package/dist/esm/stockSkills/ema.d.ts +9 -0
  39. package/dist/esm/stockSkills/ema.js +39 -0
  40. package/dist/esm/stockSkills/ema.test.d.ts +1 -0
  41. package/dist/esm/stockSkills/ema.test.js +9 -0
  42. package/dist/esm/stockSkills/gold.d.ts +4 -4
  43. package/dist/esm/stockSkills/kd.d.ts +31 -4
  44. package/dist/esm/stockSkills/kd.js +58 -4
  45. package/dist/esm/stockSkills/kd.test.js +34 -2
  46. package/dist/esm/stockSkills/ma.d.ts +38 -9
  47. package/dist/esm/stockSkills/ma.js +28 -1
  48. package/dist/esm/stockSkills/ma.test.js +12 -0
  49. package/dist/esm/stockSkills/macd.d.ts +52 -6
  50. package/dist/esm/stockSkills/macd.js +87 -0
  51. package/dist/esm/stockSkills/macd.test.js +24 -0
  52. package/dist/esm/stockSkills/obv.d.ts +44 -0
  53. package/dist/esm/stockSkills/obv.js +87 -0
  54. package/dist/esm/stockSkills/obv.test.d.ts +1 -0
  55. package/dist/esm/stockSkills/obv.test.js +18 -0
  56. package/dist/esm/stockSkills/rsi.d.ts +4 -4
  57. package/dist/esm/stockSkills/utils/getWeekLine.d.ts +2 -2
  58. package/dist/esm/stockSkills/williams.d.ts +4 -4
  59. package/dist/umd/index.js +349 -53
  60. package/package.json +15 -17
package/dist/umd/index.js CHANGED
@@ -174,8 +174,8 @@
174
174
  return nextYearForecast;
175
175
  }
176
176
 
177
- var __assign$5 = (undefined && undefined.__assign) || function () {
178
- __assign$5 = Object.assign || function(t) {
177
+ var __assign$6 = (undefined && undefined.__assign) || function () {
178
+ __assign$6 = Object.assign || function(t) {
179
179
  for (var s, i = 1, n = arguments.length; i < n; i++) {
180
180
  s = arguments[i];
181
181
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -183,13 +183,13 @@
183
183
  }
184
184
  return t;
185
185
  };
186
- return __assign$5.apply(this, arguments);
186
+ return __assign$6.apply(this, arguments);
187
187
  };
188
188
  function addDetail(obj, list, detail) {
189
189
  if (detail)
190
- return __assign$5(__assign$5({}, obj), { detail: list });
190
+ return __assign$6(__assign$6({}, obj), { detail: list });
191
191
  else
192
- return __assign$5({}, obj);
192
+ return __assign$6({}, obj);
193
193
  }
194
194
  function getWeekLine(list, detail) {
195
195
  var res = [];
@@ -460,8 +460,8 @@
460
460
  return Gold;
461
461
  }());
462
462
 
463
- var __assign$4 = (undefined && undefined.__assign) || function () {
464
- __assign$4 = Object.assign || function(t) {
463
+ var __assign$5 = (undefined && undefined.__assign) || function () {
464
+ __assign$5 = Object.assign || function(t) {
465
465
  for (var s, i = 1, n = arguments.length; i < n; i++) {
466
466
  s = arguments[i];
467
467
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -469,11 +469,65 @@
469
469
  }
470
470
  return t;
471
471
  };
472
- return __assign$4.apply(this, arguments);
472
+ return __assign$5.apply(this, arguments);
473
473
  };
474
474
  var Kd = /** @class */ (function () {
475
475
  function Kd() {
476
476
  }
477
+ Object.defineProperty(Kd.prototype, "init", {
478
+ enumerable: false,
479
+ configurable: true,
480
+ writable: true,
481
+ value: function (data) {
482
+ return {
483
+ dataset: [data],
484
+ rsv: undefined,
485
+ k: undefined,
486
+ d: undefined,
487
+ "k-d": undefined,
488
+ };
489
+ }
490
+ });
491
+ Object.defineProperty(Kd.prototype, "next", {
492
+ enumerable: false,
493
+ configurable: true,
494
+ writable: true,
495
+ value: function (data, preList, type) {
496
+ preList.dataset.push(data);
497
+ if (preList.dataset.length < type) {
498
+ return {
499
+ dataset: preList.dataset,
500
+ rsv: undefined,
501
+ k: undefined,
502
+ d: undefined,
503
+ "k-d": undefined,
504
+ };
505
+ }
506
+ else {
507
+ if (preList.dataset.length > type) {
508
+ preList.dataset.shift();
509
+ }
510
+ var low = Math.min.apply(Math, preList.dataset.map(function (item) { return item.l; }));
511
+ var hight = Math.max.apply(Math, preList.dataset.map(function (item) { return item.h; }));
512
+ var close_1 = data.c;
513
+ var rsv = ((close_1 - low) / (hight - low)) * 100;
514
+ rsv = Math.round(rsv * 100) / 100;
515
+ var k = (2 / 3) * (preList.k ? preList.k : 50) + (1 / 3) * rsv;
516
+ var d = (2 / 3) * (preList.d ? preList.d : 50) + (1 / 3) * k;
517
+ var k_d = k - d;
518
+ k = Math.round(k * 100) / 100;
519
+ d = Math.round(d * 100) / 100;
520
+ k_d = Math.round(k_d * 100) / 100;
521
+ return {
522
+ dataset: preList.dataset,
523
+ rsv: rsv,
524
+ k: k,
525
+ d: d,
526
+ "k-d": k_d,
527
+ };
528
+ }
529
+ }
530
+ });
477
531
  Object.defineProperty(Kd.prototype, "getRSV", {
478
532
  enumerable: false,
479
533
  configurable: true,
@@ -482,14 +536,14 @@
482
536
  var res = [];
483
537
  for (var i = 0; i < list.length; i++) {
484
538
  if (i < 8)
485
- res[i] = __assign$4(__assign$4({}, list[i]), { rsv: undefined });
539
+ res[i] = __assign$5(__assign$5({}, list[i]), { rsv: undefined });
486
540
  else {
487
541
  var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
488
542
  var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
489
- var close_1 = list[i].c;
490
- var rsv = ((close_1 - low) / (hight - low)) * 100;
543
+ var close_2 = list[i].c;
544
+ var rsv = ((close_2 - low) / (hight - low)) * 100;
491
545
  rsv = Math.round(rsv * 100) / 100;
492
- res[i] = __assign$4(__assign$4({}, list[i]), { rsv: rsv });
546
+ res[i] = __assign$5(__assign$5({}, list[i]), { rsv: rsv });
493
547
  }
494
548
  }
495
549
  return res;
@@ -505,12 +559,12 @@
505
559
  var yesterdayD = 50;
506
560
  for (var i = 0; i < list.length; i++) {
507
561
  if (i < 8)
508
- res[i] = __assign$4(__assign$4({}, list[i]), { rsv: undefined, k: undefined, d: undefined, "k-d": undefined });
562
+ res[i] = __assign$5(__assign$5({}, list[i]), { rsv: undefined, k: undefined, d: undefined, "k-d": undefined });
509
563
  else {
510
564
  var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
511
565
  var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
512
- var close_2 = list[i].c;
513
- var rsv = ((close_2 - low) / (hight - low)) * 100;
566
+ var close_3 = list[i].c;
567
+ var rsv = ((close_3 - low) / (hight - low)) * 100;
514
568
  rsv = Math.round(rsv * 100) / 100;
515
569
  var k = (2 / 3) * yesterdayK + (1 / 3) * rsv;
516
570
  var d = (2 / 3) * yesterdayD + (1 / 3) * k;
@@ -518,7 +572,7 @@
518
572
  k = Math.round(k * 100) / 100;
519
573
  d = Math.round(d * 100) / 100;
520
574
  k_d = Math.round(k_d * 100) / 100;
521
- res[i] = __assign$4(__assign$4({}, list[i]), { rsv: rsv, k: k, d: d, "k-d": k_d });
575
+ res[i] = __assign$5(__assign$5({}, list[i]), { rsv: rsv, k: k, d: d, "k-d": k_d });
522
576
  yesterdayK = k;
523
577
  yesterdayD = d;
524
578
  }
@@ -529,8 +583,8 @@
529
583
  return Kd;
530
584
  }());
531
585
 
532
- var __assign$3 = (undefined && undefined.__assign) || function () {
533
- __assign$3 = Object.assign || function(t) {
586
+ var __assign$4 = (undefined && undefined.__assign) || function () {
587
+ __assign$4 = Object.assign || function(t) {
534
588
  for (var s, i = 1, n = arguments.length; i < n; i++) {
535
589
  s = arguments[i];
536
590
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -538,11 +592,38 @@
538
592
  }
539
593
  return t;
540
594
  };
541
- return __assign$3.apply(this, arguments);
595
+ return __assign$4.apply(this, arguments);
542
596
  };
543
597
  var Ma = /** @class */ (function () {
544
598
  function Ma() {
545
599
  }
600
+ Object.defineProperty(Ma.prototype, "init", {
601
+ enumerable: false,
602
+ configurable: true,
603
+ writable: true,
604
+ value: function (data, type) {
605
+ return { dataset: [data], ma: 0, type: type };
606
+ }
607
+ });
608
+ Object.defineProperty(Ma.prototype, "next", {
609
+ enumerable: false,
610
+ configurable: true,
611
+ writable: true,
612
+ value: function (data, preList, type) {
613
+ preList.dataset.push(data);
614
+ if (preList.dataset.length < type) {
615
+ return { dataset: preList.dataset, ma: 0, type: type };
616
+ }
617
+ else {
618
+ if (preList.dataset.length > type) {
619
+ preList.dataset.shift();
620
+ }
621
+ var sum = preList.dataset.reduce(function (pre, current) { return pre + current.c; }, 0);
622
+ var ma = Math.round((sum / type) * 100) / 100;
623
+ return { dataset: preList.dataset, ma: ma, type: type };
624
+ }
625
+ }
626
+ });
546
627
  Object.defineProperty(Ma.prototype, "getAllMa", {
547
628
  enumerable: false,
548
629
  configurable: true,
@@ -568,13 +649,13 @@
568
649
  var res = [];
569
650
  for (var i = 0; i < list.length; i++) {
570
651
  if (i < 4)
571
- res[i] = __assign$3(__assign$3({}, list[i]), { ma5: undefined });
652
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma5: undefined });
572
653
  else {
573
654
  var sum = list
574
655
  .slice(i - 4, i + 1)
575
656
  .reduce(function (pre, current) { return pre + current.c; }, 0);
576
657
  var ma5 = Math.round((sum / 5) * 100) / 100;
577
- res[i] = __assign$3(__assign$3({}, list[i]), { ma5: ma5 });
658
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma5: ma5 });
578
659
  }
579
660
  }
580
661
  return res;
@@ -588,13 +669,13 @@
588
669
  var res = [];
589
670
  for (var i = 0; i < list.length; i++) {
590
671
  if (i < 9)
591
- res[i] = __assign$3(__assign$3({}, list[i]), { ma10: undefined });
672
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma10: undefined });
592
673
  else {
593
674
  var sum = list
594
675
  .slice(i - 9, i + 1)
595
676
  .reduce(function (pre, current) { return pre + current.c; }, 0);
596
677
  var ma10 = Math.round((sum / 10) * 100) / 100;
597
- res[i] = __assign$3(__assign$3({}, list[i]), { ma10: ma10 });
678
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma10: ma10 });
598
679
  }
599
680
  }
600
681
  return res;
@@ -608,13 +689,13 @@
608
689
  var res = [];
609
690
  for (var i = 0; i < list.length; i++) {
610
691
  if (i < 19)
611
- res[i] = __assign$3(__assign$3({}, list[i]), { ma20: undefined });
692
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma20: undefined });
612
693
  else {
613
694
  var sum = list
614
695
  .slice(i - 19, i + 1)
615
696
  .reduce(function (pre, current) { return pre + current.c; }, 0);
616
697
  var ma20 = Math.round((sum / 20) * 100) / 100;
617
- res[i] = __assign$3(__assign$3({}, list[i]), { ma20: ma20 });
698
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma20: ma20 });
618
699
  }
619
700
  }
620
701
  return res;
@@ -628,13 +709,13 @@
628
709
  var res = [];
629
710
  for (var i = 0; i < list.length; i++) {
630
711
  if (i < 59)
631
- res[i] = __assign$3(__assign$3({}, list[i]), { ma60: undefined });
712
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma60: undefined });
632
713
  else {
633
714
  var sum = list
634
715
  .slice(i - 59, i + 1)
635
716
  .reduce(function (pre, current) { return pre + current.c; }, 0);
636
717
  var ma60 = Math.round((sum / 60) * 100) / 100;
637
- res[i] = __assign$3(__assign$3({}, list[i]), { ma60: ma60 });
718
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma60: ma60 });
638
719
  }
639
720
  }
640
721
  return res;
@@ -647,14 +728,14 @@
647
728
  value: function (list, self) {
648
729
  var res = [];
649
730
  for (var i = 0; i < list.length; i++) {
650
- if (i < (self - 1))
651
- res[i] = __assign$3(__assign$3({}, list[i]), { maSelf: undefined });
731
+ if (i < self - 1)
732
+ res[i] = __assign$4(__assign$4({}, list[i]), { maSelf: undefined });
652
733
  else {
653
734
  var sum = list
654
735
  .slice(i - (self - 1), i + 1)
655
736
  .reduce(function (pre, current) { return pre + current.c; }, 0);
656
737
  var maSelf = Math.round((sum / self) * 100) / 100;
657
- res[i] = __assign$3(__assign$3({}, list[i]), { maSelf: maSelf });
738
+ res[i] = __assign$4(__assign$4({}, list[i]), { maSelf: maSelf });
658
739
  }
659
740
  }
660
741
  return res;
@@ -668,7 +749,7 @@
668
749
  var res = [];
669
750
  var _loop_1 = function (i) {
670
751
  if (i < 24)
671
- res[i] = __assign$3(__assign$3({}, list[i]), { ma25: undefined, bollUb: undefined, bollLb: undefined });
752
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma25: undefined, bollUb: undefined, bollLb: undefined });
672
753
  else {
673
754
  // ma25
674
755
  var sumMa25 = list
@@ -684,7 +765,7 @@
684
765
  : pre;
685
766
  }, 0);
686
767
  var base = Math.round(Math.sqrt(sumBase / 25) * 100) / 100;
687
- res[i] = __assign$3(__assign$3({}, list[i]), { ma25: ma25_1, bollUb: ma25_1 + 2 * base, bollLb: ma25_1 - 2 * base });
768
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma25: ma25_1, bollUb: ma25_1 + 2 * base, bollLb: ma25_1 - 2 * base });
688
769
  }
689
770
  };
690
771
  for (var i = 0; i < list.length; i++) {
@@ -696,8 +777,8 @@
696
777
  return Ma;
697
778
  }());
698
779
 
699
- var __assign$2 = (undefined && undefined.__assign) || function () {
700
- __assign$2 = Object.assign || function(t) {
780
+ var __assign$3 = (undefined && undefined.__assign) || function () {
781
+ __assign$3 = Object.assign || function(t) {
701
782
  for (var s, i = 1, n = arguments.length; i < n; i++) {
702
783
  s = arguments[i];
703
784
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -705,11 +786,98 @@
705
786
  }
706
787
  return t;
707
788
  };
708
- return __assign$2.apply(this, arguments);
789
+ return __assign$3.apply(this, arguments);
709
790
  };
710
791
  var MACD = /** @class */ (function () {
711
792
  function MACD() {
712
793
  }
794
+ Object.defineProperty(MACD.prototype, "init", {
795
+ enumerable: false,
796
+ configurable: true,
797
+ writable: true,
798
+ value: function (data) {
799
+ return {
800
+ dataset: [data],
801
+ ema12: undefined,
802
+ ema26: undefined,
803
+ dif: [],
804
+ macd: undefined,
805
+ osc: undefined,
806
+ };
807
+ }
808
+ });
809
+ Object.defineProperty(MACD.prototype, "next", {
810
+ enumerable: false,
811
+ configurable: true,
812
+ writable: true,
813
+ value: function (data, preList) {
814
+ var _a, _b;
815
+ preList.dataset.push(data);
816
+ if (preList.dataset.length > 34)
817
+ preList.dataset.shift();
818
+ // EMA12
819
+ var ema12 = undefined;
820
+ if (preList.dataset.length === 12) {
821
+ ema12 = this.getStartEMA(preList.dataset);
822
+ ema12 = (ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
823
+ ema12 = Math.round(ema12 * 100) / 100;
824
+ }
825
+ else if (preList.dataset.length > 12 && preList.ema12) {
826
+ ema12 = (preList.ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
827
+ ema12 = Math.round(ema12 * 100) / 100;
828
+ }
829
+ // EMA26
830
+ var ema26 = undefined;
831
+ if (preList.dataset.length === 26) {
832
+ ema26 = this.getStartEMA(preList.dataset);
833
+ ema26 = (ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
834
+ ema26 = Math.round(ema26 * 100) / 100;
835
+ }
836
+ else if (preList.dataset.length > 26 && preList.ema26) {
837
+ ema26 = (preList.ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
838
+ ema26 = Math.round(ema26 * 100) / 100;
839
+ }
840
+ // DIF
841
+ var dif = undefined;
842
+ if (ema12 && ema26) {
843
+ dif = ema12 - ema26;
844
+ dif = Math.round(dif * 100) / 100;
845
+ (_a = preList.dif) === null || _a === void 0 ? void 0 : _a.push(dif);
846
+ if (preList.dif.length > 9)
847
+ (_b = preList.dif) === null || _b === void 0 ? void 0 : _b.shift();
848
+ }
849
+ // MACD & OSC
850
+ var macd = undefined;
851
+ var osc = undefined;
852
+ if (preList.dif.length === 9) {
853
+ if (preList.macd === undefined) {
854
+ macd = preList.dif.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
855
+ for (var i = 0; i < 9; i++) {
856
+ var item = preList.dif[i];
857
+ macd = macd + ((item - macd) * 2) / 10;
858
+ macd = Math.round(macd * 100) / 100;
859
+ osc = item - macd;
860
+ osc = Math.round(osc * 100) / 100;
861
+ }
862
+ }
863
+ else {
864
+ macd = preList.macd + ((dif - preList.macd) * 2) / 10;
865
+ macd = Math.round(macd * 100) / 100;
866
+ var item = preList.dif[preList.dif.length - 1];
867
+ osc = item - macd;
868
+ osc = Math.round(osc * 100) / 100;
869
+ }
870
+ }
871
+ return {
872
+ dataset: preList.dataset,
873
+ ema12: ema12,
874
+ ema26: ema26,
875
+ dif: preList.dif,
876
+ macd: macd,
877
+ osc: osc,
878
+ };
879
+ }
880
+ });
713
881
  Object.defineProperty(MACD.prototype, "getMACD", {
714
882
  enumerable: false,
715
883
  configurable: true,
@@ -759,10 +927,10 @@
759
927
  var res = [];
760
928
  for (var i = 0; i < list.length; i++) {
761
929
  if (i < 12)
762
- res[i] = __assign$2(__assign$2({}, list[i]), { EMA12: undefined });
930
+ res[i] = __assign$3(__assign$3({}, list[i]), { EMA12: undefined });
763
931
  else {
764
932
  beforeEMA12 = (beforeEMA12 * 11) / 13 + (this.getDI(list[i]) * 2) / 13;
765
- res[i] = __assign$2(__assign$2({}, list[i]), { EMA12: beforeEMA12 });
933
+ res[i] = __assign$3(__assign$3({}, list[i]), { EMA12: beforeEMA12 });
766
934
  }
767
935
  }
768
936
  return res;
@@ -778,10 +946,10 @@
778
946
  var res = [];
779
947
  for (var i = 0; i < list.length; i++) {
780
948
  if (i < 26)
781
- res[i] = __assign$2(__assign$2({}, list[i]), { EMA26: undefined });
949
+ res[i] = __assign$3(__assign$3({}, list[i]), { EMA26: undefined });
782
950
  else {
783
951
  beforeEMA26 = (beforeEMA26 * 25) / 27 + (this.getDI(list[i]) * 2) / 27;
784
- res[i] = __assign$2(__assign$2({}, list[i]), { EMA26: beforeEMA26 });
952
+ res[i] = __assign$3(__assign$3({}, list[i]), { EMA26: beforeEMA26 });
785
953
  }
786
954
  }
787
955
  return res;
@@ -796,12 +964,12 @@
796
964
  var res = [];
797
965
  for (var i = 0; i < list.length; i++) {
798
966
  if (i < 26)
799
- res[i] = __assign$2(__assign$2({}, list[i]), { DIF: undefined });
967
+ res[i] = __assign$3(__assign$3({}, list[i]), { DIF: undefined });
800
968
  else {
801
969
  var EMA12 = ((_a = ResEMA12 === null || ResEMA12 === void 0 ? void 0 : ResEMA12[i]) === null || _a === void 0 ? void 0 : _a["EMA12"]) && ResEMA12[i]["EMA12"];
802
970
  var EMA26 = ((_b = ResEMA26 === null || ResEMA26 === void 0 ? void 0 : ResEMA26[i]) === null || _b === void 0 ? void 0 : _b["EMA26"]) && ResEMA26[i]["EMA26"];
803
971
  var DIF = EMA12 - EMA26;
804
- res[i] = __assign$2(__assign$2({}, list[i]), { DIF: DIF });
972
+ res[i] = __assign$3(__assign$3({}, list[i]), { DIF: DIF });
805
973
  }
806
974
  }
807
975
  return res;
@@ -816,19 +984,19 @@
816
984
  var beforeMACD9 = 0;
817
985
  for (var i = 0; i < list.length; i++) {
818
986
  if (i < 26)
819
- res[i] = __assign$2(__assign$2({}, list[i]), { MACD9: undefined, OSC: undefined });
987
+ res[i] = __assign$3(__assign$3({}, list[i]), { MACD9: undefined, OSC: undefined });
820
988
  else if (i === 26) {
821
989
  var MACD9 = DIF.slice(26, 34)
822
990
  .map(function (item) { return ((item === null || item === void 0 ? void 0 : item.DIF) ? item["DIF"] : 0); })
823
991
  .reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
824
992
  var OSC = DIF[i]["DIF"] - MACD9;
825
- res[26] = __assign$2(__assign$2({}, list[i]), { MACD9: MACD9, OSC: OSC });
993
+ res[26] = __assign$3(__assign$3({}, list[i]), { MACD9: MACD9, OSC: OSC });
826
994
  beforeMACD9 = MACD9;
827
995
  }
828
996
  else {
829
997
  var MACD9 = beforeMACD9 + ((DIF[i]["DIF"] - beforeMACD9) * 2) / 10;
830
998
  var OSC = DIF[i]["DIF"] - MACD9;
831
- res[i] = __assign$2(__assign$2({}, list[i]), { MACD9: MACD9, OSC: OSC });
999
+ res[i] = __assign$3(__assign$3({}, list[i]), { MACD9: MACD9, OSC: OSC });
832
1000
  beforeMACD9 = MACD9;
833
1001
  }
834
1002
  }
@@ -838,8 +1006,8 @@
838
1006
  return MACD;
839
1007
  }());
840
1008
 
841
- var __assign$1 = (undefined && undefined.__assign) || function () {
842
- __assign$1 = Object.assign || function(t) {
1009
+ var __assign$2 = (undefined && undefined.__assign) || function () {
1010
+ __assign$2 = Object.assign || function(t) {
843
1011
  for (var s, i = 1, n = arguments.length; i < n; i++) {
844
1012
  s = arguments[i];
845
1013
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -847,7 +1015,7 @@
847
1015
  }
848
1016
  return t;
849
1017
  };
850
- return __assign$1.apply(this, arguments);
1018
+ return __assign$2.apply(this, arguments);
851
1019
  };
852
1020
  var Rsi = /** @class */ (function () {
853
1021
  function Rsi() {
@@ -874,13 +1042,13 @@
874
1042
  var res = [];
875
1043
  // 前5筆
876
1044
  for (var i = 0; i < 5; i++) {
877
- res[i] = __assign$1(__assign$1({}, list[i]), { rsi6: undefined });
1045
+ res[i] = __assign$2(__assign$2({}, list[i]), { rsi6: undefined });
878
1046
  }
879
1047
  // 第6筆Rsi
880
1048
  var beforeUpAvg = this.getStartUpAvg(list, 6);
881
1049
  var beforeDownAvg = this.getStartDownAvg(list, 6);
882
1050
  var firstRsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
883
- res[5] = __assign$1(__assign$1({}, list[5]), { rsi6: firstRsi6 });
1051
+ res[5] = __assign$2(__assign$2({}, list[5]), { rsi6: firstRsi6 });
884
1052
  // else
885
1053
  for (var i = 6; i < list.length; i++) {
886
1054
  var minusU = 0;
@@ -895,7 +1063,7 @@
895
1063
  beforeUpAvg = (beforeUpAvg * 5) / 6 + minusU / 6;
896
1064
  beforeDownAvg = (beforeDownAvg * 5) / 6 + Math.abs(minusD) / 6;
897
1065
  var rsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
898
- res[i] = __assign$1(__assign$1({}, list[i]), { rsi6: Math.round(rsi6 * 100) / 100 });
1066
+ res[i] = __assign$2(__assign$2({}, list[i]), { rsi6: Math.round(rsi6 * 100) / 100 });
899
1067
  }
900
1068
  return res;
901
1069
  }
@@ -908,13 +1076,13 @@
908
1076
  var res = [];
909
1077
  // 前11筆
910
1078
  for (var i = 0; i < 11; i++) {
911
- res[i] = __assign$1(__assign$1({}, list[i]), { rsi12: undefined });
1079
+ res[i] = __assign$2(__assign$2({}, list[i]), { rsi12: undefined });
912
1080
  }
913
1081
  // 第12筆Rsi
914
1082
  var beforeUpAvg = this.getStartUpAvg(list, 12);
915
1083
  var beforeDownAvg = this.getStartDownAvg(list, 12);
916
1084
  var firstRsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
917
- res[11] = __assign$1(__assign$1({}, list[11]), { rsi12: firstRsi12 });
1085
+ res[11] = __assign$2(__assign$2({}, list[11]), { rsi12: firstRsi12 });
918
1086
  // else
919
1087
  for (var i = 12; i < list.length; i++) {
920
1088
  var minusU = 0;
@@ -929,7 +1097,7 @@
929
1097
  beforeUpAvg = (beforeUpAvg * 11) / 12 + minusU / 12;
930
1098
  beforeDownAvg = (beforeDownAvg * 11) / 12 + Math.abs(minusD) / 12;
931
1099
  var rsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
932
- res[i] = __assign$1(__assign$1({}, list[i]), { rsi12: Math.round(rsi12 * 100) / 100 });
1100
+ res[i] = __assign$2(__assign$2({}, list[i]), { rsi12: Math.round(rsi12 * 100) / 100 });
933
1101
  }
934
1102
  return res;
935
1103
  }
@@ -981,6 +1149,132 @@
981
1149
  return Rsi;
982
1150
  }());
983
1151
 
1152
+ var __assign$1 = (undefined && undefined.__assign) || function () {
1153
+ __assign$1 = Object.assign || function(t) {
1154
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
1155
+ s = arguments[i];
1156
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
1157
+ t[p] = s[p];
1158
+ }
1159
+ return t;
1160
+ };
1161
+ return __assign$1.apply(this, arguments);
1162
+ };
1163
+ var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {
1164
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
1165
+ if (ar || !(i in from)) {
1166
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
1167
+ ar[i] = from[i];
1168
+ }
1169
+ }
1170
+ return to.concat(ar || Array.prototype.slice.call(from));
1171
+ };
1172
+ var Obv = /** @class */ (function () {
1173
+ function Obv() {
1174
+ }
1175
+ Object.defineProperty(Obv.prototype, "init", {
1176
+ enumerable: false,
1177
+ configurable: true,
1178
+ writable: true,
1179
+ value: function (data) {
1180
+ return {
1181
+ dataset: [data],
1182
+ obv: data.v,
1183
+ preClose: data.c,
1184
+ };
1185
+ }
1186
+ });
1187
+ Object.defineProperty(Obv.prototype, "next", {
1188
+ enumerable: false,
1189
+ configurable: true,
1190
+ writable: true,
1191
+ value: function (data, preList) {
1192
+ var currentVolume = data.v;
1193
+ var currentClose = data.c;
1194
+ // obv
1195
+ var obv = preList.obv;
1196
+ if (currentClose > preList.preClose) {
1197
+ obv += currentVolume;
1198
+ }
1199
+ else if (currentClose < preList.preClose) {
1200
+ obv -= currentVolume;
1201
+ }
1202
+ return {
1203
+ dataset: __spreadArray(__spreadArray([], preList.dataset, true), [data], false),
1204
+ obv: obv,
1205
+ preClose: currentClose,
1206
+ };
1207
+ }
1208
+ });
1209
+ Object.defineProperty(Obv.prototype, "getObv", {
1210
+ enumerable: false,
1211
+ configurable: true,
1212
+ writable: true,
1213
+ value: function (list) {
1214
+ var res = [];
1215
+ var obv = 0;
1216
+ for (var i = 0; i < list.length; i++) {
1217
+ var currentVolume = list[i].v;
1218
+ var currentClose = list[i].c;
1219
+ if (i > 0) {
1220
+ // obv
1221
+ if (currentClose > list[i - 1].c) {
1222
+ obv += currentVolume;
1223
+ }
1224
+ else if (currentClose < list[i - 1].c) {
1225
+ obv -= currentVolume;
1226
+ }
1227
+ }
1228
+ else {
1229
+ obv = currentVolume;
1230
+ }
1231
+ res[i] = __assign$1(__assign$1({}, list[i]), { obv: obv });
1232
+ }
1233
+ return res;
1234
+ }
1235
+ });
1236
+ return Obv;
1237
+ }());
1238
+
1239
+ var Ema = /** @class */ (function () {
1240
+ function Ema() {
1241
+ }
1242
+ Object.defineProperty(Ema.prototype, "getStartEma", {
1243
+ enumerable: false,
1244
+ configurable: true,
1245
+ writable: true,
1246
+ value: function (list, period) {
1247
+ if (list.length < period)
1248
+ throw new Error("list.length < period");
1249
+ var sum = 0;
1250
+ for (var i = 0; i < period; i++) {
1251
+ sum += list[i];
1252
+ }
1253
+ var initialEMA = sum / period;
1254
+ return initialEMA;
1255
+ }
1256
+ });
1257
+ Object.defineProperty(Ema.prototype, "getEma", {
1258
+ enumerable: false,
1259
+ configurable: true,
1260
+ writable: true,
1261
+ value: function (list, period) {
1262
+ var res = [];
1263
+ var ema = this.getStartEma(list.slice(0, period), period);
1264
+ for (var i = 0; i < list.length; i++) {
1265
+ if (i < period) {
1266
+ res.push(undefined);
1267
+ continue;
1268
+ }
1269
+ ema = (list[i] * 2 + (period - 1) * ema) / (period + 1);
1270
+ res.push(ema);
1271
+ }
1272
+ return res;
1273
+ }
1274
+ });
1275
+ return Ema;
1276
+ }());
1277
+
984
1278
  var Mode;
985
1279
  (function (Mode) {
986
1280
  Mode[Mode["NumberToString"] = 1] = "NumberToString";
@@ -1119,10 +1413,12 @@
1119
1413
  return a - b;
1120
1414
  }
1121
1415
 
1416
+ exports.Ema = Ema;
1122
1417
  exports.Gold = Gold;
1123
1418
  exports.Kd = Kd;
1124
1419
  exports.Ma = Ma;
1125
1420
  exports.Macd = MACD;
1421
+ exports.Obv = Obv;
1126
1422
  exports.Rsi = Rsi;
1127
1423
  exports.Williams = Williams;
1128
1424
  exports.add = add;