@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.
- package/dist/cjs/analyze/Month/index.d.ts +1 -1
- package/dist/cjs/analyze/Month/index.test.d.ts +1 -0
- package/dist/cjs/analyze/Month/index.test.js +22 -0
- package/dist/cjs/analyze/Regression/simpleRegressoinModel.d.ts +1 -1
- package/dist/cjs/analyze/Slope/slope.test.js +6 -0
- package/dist/cjs/analyze/TimeSeries/R/index.d.ts +1 -1
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.js +5 -1
- package/dist/cjs/stockSkills/ema.d.ts +9 -0
- package/dist/cjs/stockSkills/ema.js +41 -0
- package/dist/cjs/stockSkills/ema.test.d.ts +1 -0
- package/dist/cjs/stockSkills/ema.test.js +11 -0
- package/dist/cjs/stockSkills/gold.d.ts +4 -4
- package/dist/cjs/stockSkills/kd.d.ts +31 -4
- package/dist/cjs/stockSkills/kd.js +58 -4
- package/dist/cjs/stockSkills/kd.test.js +34 -2
- package/dist/cjs/stockSkills/ma.d.ts +38 -9
- package/dist/cjs/stockSkills/ma.js +28 -1
- package/dist/cjs/stockSkills/ma.test.js +12 -0
- package/dist/cjs/stockSkills/macd.d.ts +52 -6
- package/dist/cjs/stockSkills/macd.js +87 -0
- package/dist/cjs/stockSkills/macd.test.js +24 -0
- package/dist/cjs/stockSkills/obv.d.ts +44 -0
- package/dist/cjs/stockSkills/obv.js +89 -0
- package/dist/cjs/stockSkills/obv.test.d.ts +1 -0
- package/dist/cjs/stockSkills/obv.test.js +20 -0
- package/dist/cjs/stockSkills/rsi.d.ts +4 -4
- package/dist/cjs/stockSkills/utils/getWeekLine.d.ts +2 -2
- package/dist/cjs/stockSkills/williams.d.ts +4 -4
- package/dist/esm/analyze/Month/index.d.ts +1 -1
- package/dist/esm/analyze/Month/index.test.d.ts +1 -0
- package/dist/esm/analyze/Month/index.test.js +20 -0
- package/dist/esm/analyze/Regression/simpleRegressoinModel.d.ts +1 -1
- package/dist/esm/analyze/Slope/slope.test.js +6 -0
- package/dist/esm/analyze/TimeSeries/R/index.d.ts +1 -1
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/stockSkills/ema.d.ts +9 -0
- package/dist/esm/stockSkills/ema.js +39 -0
- package/dist/esm/stockSkills/ema.test.d.ts +1 -0
- package/dist/esm/stockSkills/ema.test.js +9 -0
- package/dist/esm/stockSkills/gold.d.ts +4 -4
- package/dist/esm/stockSkills/kd.d.ts +31 -4
- package/dist/esm/stockSkills/kd.js +58 -4
- package/dist/esm/stockSkills/kd.test.js +34 -2
- package/dist/esm/stockSkills/ma.d.ts +38 -9
- package/dist/esm/stockSkills/ma.js +28 -1
- package/dist/esm/stockSkills/ma.test.js +12 -0
- package/dist/esm/stockSkills/macd.d.ts +52 -6
- package/dist/esm/stockSkills/macd.js +87 -0
- package/dist/esm/stockSkills/macd.test.js +24 -0
- package/dist/esm/stockSkills/obv.d.ts +44 -0
- package/dist/esm/stockSkills/obv.js +87 -0
- package/dist/esm/stockSkills/obv.test.d.ts +1 -0
- package/dist/esm/stockSkills/obv.test.js +18 -0
- package/dist/esm/stockSkills/rsi.d.ts +4 -4
- package/dist/esm/stockSkills/utils/getWeekLine.d.ts +2 -2
- package/dist/esm/stockSkills/williams.d.ts +4 -4
- package/dist/umd/index.js +349 -53
- 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$
|
|
178
|
-
__assign$
|
|
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$
|
|
186
|
+
return __assign$6.apply(this, arguments);
|
|
187
187
|
};
|
|
188
188
|
function addDetail(obj, list, detail) {
|
|
189
189
|
if (detail)
|
|
190
|
-
return __assign$
|
|
190
|
+
return __assign$6(__assign$6({}, obj), { detail: list });
|
|
191
191
|
else
|
|
192
|
-
return __assign$
|
|
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$
|
|
464
|
-
__assign$
|
|
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$
|
|
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$
|
|
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
|
|
490
|
-
var rsv = ((
|
|
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$
|
|
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$
|
|
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
|
|
513
|
-
var rsv = ((
|
|
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$
|
|
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$
|
|
533
|
-
__assign$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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 <
|
|
651
|
-
res[i] = __assign$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
700
|
-
__assign$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
842
|
-
__assign$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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;
|