@ch20026103/anysis 0.0.3-alpha → 0.0.6-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 +3 -0
- package/dist/cjs/index.js +7 -1
- package/dist/cjs/stockSkills/boll.d.ts +58 -0
- package/dist/cjs/stockSkills/boll.js +101 -0
- package/dist/cjs/stockSkills/boll.test.d.ts +1 -0
- package/dist/cjs/stockSkills/boll.test.js +36 -0
- 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 +41 -14
- package/dist/cjs/stockSkills/kd.js +60 -6
- package/dist/cjs/stockSkills/kd.test.js +34 -2
- package/dist/cjs/stockSkills/ma.d.ts +49 -30
- package/dist/cjs/stockSkills/ma.js +37 -44
- package/dist/cjs/stockSkills/ma.test.js +15 -20
- package/dist/cjs/stockSkills/macd.d.ts +62 -16
- package/dist/cjs/stockSkills/macd.js +92 -5
- package/dist/cjs/stockSkills/macd.test.js +26 -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 +8 -8
- package/dist/cjs/stockSkills/rsi.js +2 -2
- package/dist/cjs/stockSkills/utils/getWeekLine.d.ts +2 -2
- package/dist/cjs/stockSkills/williams.d.ts +8 -8
- package/dist/cjs/stockSkills/williams.js +2 -2
- 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 +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/stockSkills/boll.d.ts +58 -0
- package/dist/esm/stockSkills/boll.js +99 -0
- package/dist/esm/stockSkills/boll.test.d.ts +1 -0
- package/dist/esm/stockSkills/boll.test.js +34 -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 +41 -14
- package/dist/esm/stockSkills/kd.js +60 -6
- package/dist/esm/stockSkills/kd.test.js +34 -2
- package/dist/esm/stockSkills/ma.d.ts +49 -30
- package/dist/esm/stockSkills/ma.js +37 -44
- package/dist/esm/stockSkills/ma.test.js +15 -20
- package/dist/esm/stockSkills/macd.d.ts +62 -16
- package/dist/esm/stockSkills/macd.js +92 -5
- package/dist/esm/stockSkills/macd.test.js +26 -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 +8 -8
- package/dist/esm/stockSkills/rsi.js +2 -2
- package/dist/esm/stockSkills/utils/getWeekLine.d.ts +2 -2
- package/dist/esm/stockSkills/williams.d.ts +8 -8
- package/dist/esm/stockSkills/williams.js +2 -2
- package/dist/umd/index.js +458 -96
- 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$7 = (undefined && undefined.__assign) || function () {
|
|
178
|
+
__assign$7 = 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$7.apply(this, arguments);
|
|
187
187
|
};
|
|
188
188
|
function addDetail(obj, list, detail) {
|
|
189
189
|
if (detail)
|
|
190
|
-
return __assign$
|
|
190
|
+
return __assign$7(__assign$7({}, obj), { detail: list });
|
|
191
191
|
else
|
|
192
|
-
return __assign$
|
|
192
|
+
return __assign$7({}, 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$6 = (undefined && undefined.__assign) || function () {
|
|
464
|
+
__assign$6 = 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$6.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: null,
|
|
485
|
+
k: null,
|
|
486
|
+
d: null,
|
|
487
|
+
"k-d": null,
|
|
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: null,
|
|
501
|
+
k: null,
|
|
502
|
+
d: null,
|
|
503
|
+
"k-d": null,
|
|
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$6(__assign$6({}, list[i]), { rsv: null });
|
|
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$6(__assign$6({}, 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$6(__assign$6({}, list[i]), { rsv: null, k: null, d: null, "k-d": null });
|
|
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$6(__assign$6({}, 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$5 = (undefined && undefined.__assign) || function () {
|
|
587
|
+
__assign$5 = 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$5.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,
|
|
@@ -553,9 +634,8 @@
|
|
|
553
634
|
var responseMa10 = this.getMa10(list);
|
|
554
635
|
var responseMa20 = this.getMa20(list);
|
|
555
636
|
var responseMa60 = this.getMa60(list);
|
|
556
|
-
var responseBoll = this.getBoll(list);
|
|
557
637
|
for (var i = 0; i < list.length; i++) {
|
|
558
|
-
res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseMa60[i]
|
|
638
|
+
res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseMa60[i]);
|
|
559
639
|
}
|
|
560
640
|
return res;
|
|
561
641
|
}
|
|
@@ -568,13 +648,13 @@
|
|
|
568
648
|
var res = [];
|
|
569
649
|
for (var i = 0; i < list.length; i++) {
|
|
570
650
|
if (i < 4)
|
|
571
|
-
res[i] = __assign$
|
|
651
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { ma5: null });
|
|
572
652
|
else {
|
|
573
653
|
var sum = list
|
|
574
654
|
.slice(i - 4, i + 1)
|
|
575
655
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
576
656
|
var ma5 = Math.round((sum / 5) * 100) / 100;
|
|
577
|
-
res[i] = __assign$
|
|
657
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { ma5: ma5 });
|
|
578
658
|
}
|
|
579
659
|
}
|
|
580
660
|
return res;
|
|
@@ -588,13 +668,13 @@
|
|
|
588
668
|
var res = [];
|
|
589
669
|
for (var i = 0; i < list.length; i++) {
|
|
590
670
|
if (i < 9)
|
|
591
|
-
res[i] = __assign$
|
|
671
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { ma10: null });
|
|
592
672
|
else {
|
|
593
673
|
var sum = list
|
|
594
674
|
.slice(i - 9, i + 1)
|
|
595
675
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
596
676
|
var ma10 = Math.round((sum / 10) * 100) / 100;
|
|
597
|
-
res[i] = __assign$
|
|
677
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { ma10: ma10 });
|
|
598
678
|
}
|
|
599
679
|
}
|
|
600
680
|
return res;
|
|
@@ -608,13 +688,13 @@
|
|
|
608
688
|
var res = [];
|
|
609
689
|
for (var i = 0; i < list.length; i++) {
|
|
610
690
|
if (i < 19)
|
|
611
|
-
res[i] = __assign$
|
|
691
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { ma20: null });
|
|
612
692
|
else {
|
|
613
693
|
var sum = list
|
|
614
694
|
.slice(i - 19, i + 1)
|
|
615
695
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
616
696
|
var ma20 = Math.round((sum / 20) * 100) / 100;
|
|
617
|
-
res[i] = __assign$
|
|
697
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { ma20: ma20 });
|
|
618
698
|
}
|
|
619
699
|
}
|
|
620
700
|
return res;
|
|
@@ -628,76 +708,43 @@
|
|
|
628
708
|
var res = [];
|
|
629
709
|
for (var i = 0; i < list.length; i++) {
|
|
630
710
|
if (i < 59)
|
|
631
|
-
res[i] = __assign$
|
|
711
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { ma60: null });
|
|
632
712
|
else {
|
|
633
713
|
var sum = list
|
|
634
714
|
.slice(i - 59, i + 1)
|
|
635
715
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
636
716
|
var ma60 = Math.round((sum / 60) * 100) / 100;
|
|
637
|
-
res[i] = __assign$
|
|
717
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { ma60: ma60 });
|
|
638
718
|
}
|
|
639
719
|
}
|
|
640
720
|
return res;
|
|
641
721
|
}
|
|
642
722
|
});
|
|
643
|
-
Object.defineProperty(Ma.prototype, "
|
|
723
|
+
Object.defineProperty(Ma.prototype, "getMa", {
|
|
644
724
|
enumerable: false,
|
|
645
725
|
configurable: true,
|
|
646
726
|
writable: true,
|
|
647
727
|
value: function (list, self) {
|
|
648
728
|
var res = [];
|
|
649
729
|
for (var i = 0; i < list.length; i++) {
|
|
650
|
-
if (i <
|
|
651
|
-
res[i] = __assign$
|
|
730
|
+
if (i < self - 1)
|
|
731
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { ma: null });
|
|
652
732
|
else {
|
|
653
733
|
var sum = list
|
|
654
734
|
.slice(i - (self - 1), i + 1)
|
|
655
735
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
656
|
-
var
|
|
657
|
-
res[i] = __assign$
|
|
736
|
+
var ma = Math.round((sum / self) * 100) / 100;
|
|
737
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { ma: ma });
|
|
658
738
|
}
|
|
659
739
|
}
|
|
660
740
|
return res;
|
|
661
741
|
}
|
|
662
742
|
});
|
|
663
|
-
Object.defineProperty(Ma.prototype, "getBoll", {
|
|
664
|
-
enumerable: false,
|
|
665
|
-
configurable: true,
|
|
666
|
-
writable: true,
|
|
667
|
-
value: function (list) {
|
|
668
|
-
var res = [];
|
|
669
|
-
var _loop_1 = function (i) {
|
|
670
|
-
if (i < 24)
|
|
671
|
-
res[i] = __assign$3(__assign$3({}, list[i]), { ma25: undefined, bollUb: undefined, bollLb: undefined });
|
|
672
|
-
else {
|
|
673
|
-
// ma25
|
|
674
|
-
var sumMa25 = list
|
|
675
|
-
.slice(i - 24, i + 1)
|
|
676
|
-
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
677
|
-
var ma25_1 = Math.round((sumMa25 / 25) * 100) / 100;
|
|
678
|
-
// 標準差
|
|
679
|
-
var sumBase = res
|
|
680
|
-
.slice(i - 24, i + 1)
|
|
681
|
-
.reduce(function (pre, current) {
|
|
682
|
-
return ma25_1 !== undefined
|
|
683
|
-
? pre + Math.pow(current.c - ma25_1, 2)
|
|
684
|
-
: pre;
|
|
685
|
-
}, 0);
|
|
686
|
-
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 });
|
|
688
|
-
}
|
|
689
|
-
};
|
|
690
|
-
for (var i = 0; i < list.length; i++) {
|
|
691
|
-
_loop_1(i);
|
|
692
|
-
}
|
|
693
|
-
return res;
|
|
694
|
-
}
|
|
695
|
-
});
|
|
696
743
|
return Ma;
|
|
697
744
|
}());
|
|
698
745
|
|
|
699
|
-
var __assign$
|
|
700
|
-
__assign$
|
|
746
|
+
var __assign$4 = (undefined && undefined.__assign) || function () {
|
|
747
|
+
__assign$4 = Object.assign || function(t) {
|
|
701
748
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
702
749
|
s = arguments[i];
|
|
703
750
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
@@ -705,11 +752,98 @@
|
|
|
705
752
|
}
|
|
706
753
|
return t;
|
|
707
754
|
};
|
|
708
|
-
return __assign$
|
|
755
|
+
return __assign$4.apply(this, arguments);
|
|
709
756
|
};
|
|
710
757
|
var MACD = /** @class */ (function () {
|
|
711
758
|
function MACD() {
|
|
712
759
|
}
|
|
760
|
+
Object.defineProperty(MACD.prototype, "init", {
|
|
761
|
+
enumerable: false,
|
|
762
|
+
configurable: true,
|
|
763
|
+
writable: true,
|
|
764
|
+
value: function (data) {
|
|
765
|
+
return {
|
|
766
|
+
dataset: [data],
|
|
767
|
+
ema12: null,
|
|
768
|
+
ema26: null,
|
|
769
|
+
dif: [],
|
|
770
|
+
macd: null,
|
|
771
|
+
osc: null,
|
|
772
|
+
};
|
|
773
|
+
}
|
|
774
|
+
});
|
|
775
|
+
Object.defineProperty(MACD.prototype, "next", {
|
|
776
|
+
enumerable: false,
|
|
777
|
+
configurable: true,
|
|
778
|
+
writable: true,
|
|
779
|
+
value: function (data, preList) {
|
|
780
|
+
var _a, _b;
|
|
781
|
+
preList.dataset.push(data);
|
|
782
|
+
if (preList.dataset.length > 34)
|
|
783
|
+
preList.dataset.shift();
|
|
784
|
+
// EMA12
|
|
785
|
+
var ema12 = null;
|
|
786
|
+
if (preList.dataset.length === 12) {
|
|
787
|
+
ema12 = this.getStartEMA(preList.dataset);
|
|
788
|
+
ema12 = (ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
|
|
789
|
+
ema12 = Math.round(ema12 * 100) / 100;
|
|
790
|
+
}
|
|
791
|
+
else if (preList.dataset.length > 12 && preList.ema12) {
|
|
792
|
+
ema12 = (preList.ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
|
|
793
|
+
ema12 = Math.round(ema12 * 100) / 100;
|
|
794
|
+
}
|
|
795
|
+
// EMA26
|
|
796
|
+
var ema26 = null;
|
|
797
|
+
if (preList.dataset.length === 26) {
|
|
798
|
+
ema26 = this.getStartEMA(preList.dataset);
|
|
799
|
+
ema26 = (ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
|
|
800
|
+
ema26 = Math.round(ema26 * 100) / 100;
|
|
801
|
+
}
|
|
802
|
+
else if (preList.dataset.length > 26 && preList.ema26) {
|
|
803
|
+
ema26 = (preList.ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
|
|
804
|
+
ema26 = Math.round(ema26 * 100) / 100;
|
|
805
|
+
}
|
|
806
|
+
// DIF
|
|
807
|
+
var dif = null;
|
|
808
|
+
if (ema12 && ema26) {
|
|
809
|
+
dif = ema12 - ema26;
|
|
810
|
+
dif = Math.round(dif * 100) / 100;
|
|
811
|
+
(_a = preList.dif) === null || _a === void 0 ? void 0 : _a.push(dif);
|
|
812
|
+
if (preList.dif.length > 9)
|
|
813
|
+
(_b = preList.dif) === null || _b === void 0 ? void 0 : _b.shift();
|
|
814
|
+
}
|
|
815
|
+
// MACD & OSC
|
|
816
|
+
var macd = null;
|
|
817
|
+
var osc = null;
|
|
818
|
+
if (preList.dif.length === 9) {
|
|
819
|
+
if (preList.macd === null) {
|
|
820
|
+
macd = preList.dif.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
|
|
821
|
+
for (var i = 0; i < 9; i++) {
|
|
822
|
+
var item = preList.dif[i];
|
|
823
|
+
macd = macd + ((item - macd) * 2) / 10;
|
|
824
|
+
macd = Math.round(macd * 100) / 100;
|
|
825
|
+
osc = item - macd;
|
|
826
|
+
osc = Math.round(osc * 100) / 100;
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
else {
|
|
830
|
+
macd = preList.macd + ((dif - preList.macd) * 2) / 10;
|
|
831
|
+
macd = Math.round(macd * 100) / 100;
|
|
832
|
+
var item = preList.dif[preList.dif.length - 1];
|
|
833
|
+
osc = item - macd;
|
|
834
|
+
osc = Math.round(osc * 100) / 100;
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
return {
|
|
838
|
+
dataset: preList.dataset,
|
|
839
|
+
ema12: ema12,
|
|
840
|
+
ema26: ema26,
|
|
841
|
+
dif: preList.dif,
|
|
842
|
+
macd: macd,
|
|
843
|
+
osc: osc,
|
|
844
|
+
};
|
|
845
|
+
}
|
|
846
|
+
});
|
|
713
847
|
Object.defineProperty(MACD.prototype, "getMACD", {
|
|
714
848
|
enumerable: false,
|
|
715
849
|
configurable: true,
|
|
@@ -722,7 +856,7 @@
|
|
|
722
856
|
var DIF = this.getDIF(list, EMA12, EMA26);
|
|
723
857
|
var MACD9 = this.getMACD9(list, DIF);
|
|
724
858
|
for (var i = 0; i < list.length; i++) {
|
|
725
|
-
res[i] = Object.assign(list[i], DIF[i], MACD9[i]);
|
|
859
|
+
res[i] = Object.assign(list[i], DIF[i], MACD9[i], EMA12[i], EMA26[i]);
|
|
726
860
|
}
|
|
727
861
|
return res;
|
|
728
862
|
}
|
|
@@ -759,10 +893,10 @@
|
|
|
759
893
|
var res = [];
|
|
760
894
|
for (var i = 0; i < list.length; i++) {
|
|
761
895
|
if (i < 12)
|
|
762
|
-
res[i] = __assign$
|
|
896
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { EMA12: null });
|
|
763
897
|
else {
|
|
764
898
|
beforeEMA12 = (beforeEMA12 * 11) / 13 + (this.getDI(list[i]) * 2) / 13;
|
|
765
|
-
res[i] = __assign$
|
|
899
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { EMA12: beforeEMA12 });
|
|
766
900
|
}
|
|
767
901
|
}
|
|
768
902
|
return res;
|
|
@@ -778,10 +912,10 @@
|
|
|
778
912
|
var res = [];
|
|
779
913
|
for (var i = 0; i < list.length; i++) {
|
|
780
914
|
if (i < 26)
|
|
781
|
-
res[i] = __assign$
|
|
915
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { EMA26: null });
|
|
782
916
|
else {
|
|
783
917
|
beforeEMA26 = (beforeEMA26 * 25) / 27 + (this.getDI(list[i]) * 2) / 27;
|
|
784
|
-
res[i] = __assign$
|
|
918
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { EMA26: beforeEMA26 });
|
|
785
919
|
}
|
|
786
920
|
}
|
|
787
921
|
return res;
|
|
@@ -796,12 +930,12 @@
|
|
|
796
930
|
var res = [];
|
|
797
931
|
for (var i = 0; i < list.length; i++) {
|
|
798
932
|
if (i < 26)
|
|
799
|
-
res[i] = __assign$
|
|
933
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { DIF: null });
|
|
800
934
|
else {
|
|
801
935
|
var EMA12 = ((_a = ResEMA12 === null || ResEMA12 === void 0 ? void 0 : ResEMA12[i]) === null || _a === void 0 ? void 0 : _a["EMA12"]) && ResEMA12[i]["EMA12"];
|
|
802
936
|
var EMA26 = ((_b = ResEMA26 === null || ResEMA26 === void 0 ? void 0 : ResEMA26[i]) === null || _b === void 0 ? void 0 : _b["EMA26"]) && ResEMA26[i]["EMA26"];
|
|
803
937
|
var DIF = EMA12 - EMA26;
|
|
804
|
-
res[i] = __assign$
|
|
938
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { DIF: DIF });
|
|
805
939
|
}
|
|
806
940
|
}
|
|
807
941
|
return res;
|
|
@@ -816,19 +950,19 @@
|
|
|
816
950
|
var beforeMACD9 = 0;
|
|
817
951
|
for (var i = 0; i < list.length; i++) {
|
|
818
952
|
if (i < 26)
|
|
819
|
-
res[i] = __assign$
|
|
953
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { MACD9: null, OSC: null });
|
|
820
954
|
else if (i === 26) {
|
|
821
955
|
var MACD9 = DIF.slice(26, 34)
|
|
822
956
|
.map(function (item) { return ((item === null || item === void 0 ? void 0 : item.DIF) ? item["DIF"] : 0); })
|
|
823
957
|
.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
|
|
824
958
|
var OSC = DIF[i]["DIF"] - MACD9;
|
|
825
|
-
res[26] = __assign$
|
|
959
|
+
res[26] = __assign$4(__assign$4({}, list[i]), { MACD9: MACD9, OSC: OSC });
|
|
826
960
|
beforeMACD9 = MACD9;
|
|
827
961
|
}
|
|
828
962
|
else {
|
|
829
963
|
var MACD9 = beforeMACD9 + ((DIF[i]["DIF"] - beforeMACD9) * 2) / 10;
|
|
830
964
|
var OSC = DIF[i]["DIF"] - MACD9;
|
|
831
|
-
res[i] = __assign$
|
|
965
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { MACD9: MACD9, OSC: OSC });
|
|
832
966
|
beforeMACD9 = MACD9;
|
|
833
967
|
}
|
|
834
968
|
}
|
|
@@ -838,8 +972,8 @@
|
|
|
838
972
|
return MACD;
|
|
839
973
|
}());
|
|
840
974
|
|
|
841
|
-
var __assign$
|
|
842
|
-
__assign$
|
|
975
|
+
var __assign$3 = (undefined && undefined.__assign) || function () {
|
|
976
|
+
__assign$3 = Object.assign || function(t) {
|
|
843
977
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
844
978
|
s = arguments[i];
|
|
845
979
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
@@ -847,7 +981,7 @@
|
|
|
847
981
|
}
|
|
848
982
|
return t;
|
|
849
983
|
};
|
|
850
|
-
return __assign$
|
|
984
|
+
return __assign$3.apply(this, arguments);
|
|
851
985
|
};
|
|
852
986
|
var Rsi = /** @class */ (function () {
|
|
853
987
|
function Rsi() {
|
|
@@ -874,13 +1008,13 @@
|
|
|
874
1008
|
var res = [];
|
|
875
1009
|
// 前5筆
|
|
876
1010
|
for (var i = 0; i < 5; i++) {
|
|
877
|
-
res[i] = __assign$
|
|
1011
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { rsi6: null });
|
|
878
1012
|
}
|
|
879
1013
|
// 第6筆Rsi
|
|
880
1014
|
var beforeUpAvg = this.getStartUpAvg(list, 6);
|
|
881
1015
|
var beforeDownAvg = this.getStartDownAvg(list, 6);
|
|
882
1016
|
var firstRsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
883
|
-
res[5] = __assign$
|
|
1017
|
+
res[5] = __assign$3(__assign$3({}, list[5]), { rsi6: firstRsi6 });
|
|
884
1018
|
// else
|
|
885
1019
|
for (var i = 6; i < list.length; i++) {
|
|
886
1020
|
var minusU = 0;
|
|
@@ -895,7 +1029,7 @@
|
|
|
895
1029
|
beforeUpAvg = (beforeUpAvg * 5) / 6 + minusU / 6;
|
|
896
1030
|
beforeDownAvg = (beforeDownAvg * 5) / 6 + Math.abs(minusD) / 6;
|
|
897
1031
|
var rsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
898
|
-
res[i] = __assign$
|
|
1032
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { rsi6: Math.round(rsi6 * 100) / 100 });
|
|
899
1033
|
}
|
|
900
1034
|
return res;
|
|
901
1035
|
}
|
|
@@ -908,13 +1042,13 @@
|
|
|
908
1042
|
var res = [];
|
|
909
1043
|
// 前11筆
|
|
910
1044
|
for (var i = 0; i < 11; i++) {
|
|
911
|
-
res[i] = __assign$
|
|
1045
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { rsi12: null });
|
|
912
1046
|
}
|
|
913
1047
|
// 第12筆Rsi
|
|
914
1048
|
var beforeUpAvg = this.getStartUpAvg(list, 12);
|
|
915
1049
|
var beforeDownAvg = this.getStartDownAvg(list, 12);
|
|
916
1050
|
var firstRsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
917
|
-
res[11] = __assign$
|
|
1051
|
+
res[11] = __assign$3(__assign$3({}, list[11]), { rsi12: firstRsi12 });
|
|
918
1052
|
// else
|
|
919
1053
|
for (var i = 12; i < list.length; i++) {
|
|
920
1054
|
var minusU = 0;
|
|
@@ -929,7 +1063,7 @@
|
|
|
929
1063
|
beforeUpAvg = (beforeUpAvg * 11) / 12 + minusU / 12;
|
|
930
1064
|
beforeDownAvg = (beforeDownAvg * 11) / 12 + Math.abs(minusD) / 12;
|
|
931
1065
|
var rsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
932
|
-
res[i] = __assign$
|
|
1066
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { rsi12: Math.round(rsi12 * 100) / 100 });
|
|
933
1067
|
}
|
|
934
1068
|
return res;
|
|
935
1069
|
}
|
|
@@ -981,6 +1115,132 @@
|
|
|
981
1115
|
return Rsi;
|
|
982
1116
|
}());
|
|
983
1117
|
|
|
1118
|
+
var __assign$2 = (undefined && undefined.__assign) || function () {
|
|
1119
|
+
__assign$2 = Object.assign || function(t) {
|
|
1120
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
1121
|
+
s = arguments[i];
|
|
1122
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
1123
|
+
t[p] = s[p];
|
|
1124
|
+
}
|
|
1125
|
+
return t;
|
|
1126
|
+
};
|
|
1127
|
+
return __assign$2.apply(this, arguments);
|
|
1128
|
+
};
|
|
1129
|
+
var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {
|
|
1130
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
1131
|
+
if (ar || !(i in from)) {
|
|
1132
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
1133
|
+
ar[i] = from[i];
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
1137
|
+
};
|
|
1138
|
+
var Obv = /** @class */ (function () {
|
|
1139
|
+
function Obv() {
|
|
1140
|
+
}
|
|
1141
|
+
Object.defineProperty(Obv.prototype, "init", {
|
|
1142
|
+
enumerable: false,
|
|
1143
|
+
configurable: true,
|
|
1144
|
+
writable: true,
|
|
1145
|
+
value: function (data) {
|
|
1146
|
+
return {
|
|
1147
|
+
dataset: [data],
|
|
1148
|
+
obv: data.v,
|
|
1149
|
+
preClose: data.c,
|
|
1150
|
+
};
|
|
1151
|
+
}
|
|
1152
|
+
});
|
|
1153
|
+
Object.defineProperty(Obv.prototype, "next", {
|
|
1154
|
+
enumerable: false,
|
|
1155
|
+
configurable: true,
|
|
1156
|
+
writable: true,
|
|
1157
|
+
value: function (data, preList) {
|
|
1158
|
+
var currentVolume = data.v;
|
|
1159
|
+
var currentClose = data.c;
|
|
1160
|
+
// obv
|
|
1161
|
+
var obv = preList.obv;
|
|
1162
|
+
if (currentClose > preList.preClose) {
|
|
1163
|
+
obv += currentVolume;
|
|
1164
|
+
}
|
|
1165
|
+
else if (currentClose < preList.preClose) {
|
|
1166
|
+
obv -= currentVolume;
|
|
1167
|
+
}
|
|
1168
|
+
return {
|
|
1169
|
+
dataset: __spreadArray(__spreadArray([], preList.dataset, true), [data], false),
|
|
1170
|
+
obv: obv,
|
|
1171
|
+
preClose: currentClose,
|
|
1172
|
+
};
|
|
1173
|
+
}
|
|
1174
|
+
});
|
|
1175
|
+
Object.defineProperty(Obv.prototype, "getObv", {
|
|
1176
|
+
enumerable: false,
|
|
1177
|
+
configurable: true,
|
|
1178
|
+
writable: true,
|
|
1179
|
+
value: function (list) {
|
|
1180
|
+
var res = [];
|
|
1181
|
+
var obv = 0;
|
|
1182
|
+
for (var i = 0; i < list.length; i++) {
|
|
1183
|
+
var currentVolume = list[i].v;
|
|
1184
|
+
var currentClose = list[i].c;
|
|
1185
|
+
if (i > 0) {
|
|
1186
|
+
// obv
|
|
1187
|
+
if (currentClose > list[i - 1].c) {
|
|
1188
|
+
obv += currentVolume;
|
|
1189
|
+
}
|
|
1190
|
+
else if (currentClose < list[i - 1].c) {
|
|
1191
|
+
obv -= currentVolume;
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1194
|
+
else {
|
|
1195
|
+
obv = currentVolume;
|
|
1196
|
+
}
|
|
1197
|
+
res[i] = __assign$2(__assign$2({}, list[i]), { obv: obv });
|
|
1198
|
+
}
|
|
1199
|
+
return res;
|
|
1200
|
+
}
|
|
1201
|
+
});
|
|
1202
|
+
return Obv;
|
|
1203
|
+
}());
|
|
1204
|
+
|
|
1205
|
+
var Ema = /** @class */ (function () {
|
|
1206
|
+
function Ema() {
|
|
1207
|
+
}
|
|
1208
|
+
Object.defineProperty(Ema.prototype, "getStartEma", {
|
|
1209
|
+
enumerable: false,
|
|
1210
|
+
configurable: true,
|
|
1211
|
+
writable: true,
|
|
1212
|
+
value: function (list, period) {
|
|
1213
|
+
if (list.length < period)
|
|
1214
|
+
throw new Error("list.length < period");
|
|
1215
|
+
var sum = 0;
|
|
1216
|
+
for (var i = 0; i < period; i++) {
|
|
1217
|
+
sum += list[i];
|
|
1218
|
+
}
|
|
1219
|
+
var initialEMA = sum / period;
|
|
1220
|
+
return initialEMA;
|
|
1221
|
+
}
|
|
1222
|
+
});
|
|
1223
|
+
Object.defineProperty(Ema.prototype, "getEma", {
|
|
1224
|
+
enumerable: false,
|
|
1225
|
+
configurable: true,
|
|
1226
|
+
writable: true,
|
|
1227
|
+
value: function (list, period) {
|
|
1228
|
+
var res = [];
|
|
1229
|
+
var ema = this.getStartEma(list.slice(0, period), period);
|
|
1230
|
+
for (var i = 0; i < list.length; i++) {
|
|
1231
|
+
if (i < period) {
|
|
1232
|
+
res.push(null);
|
|
1233
|
+
continue;
|
|
1234
|
+
}
|
|
1235
|
+
ema = (list[i] * 2 + (period - 1) * ema) / (period + 1);
|
|
1236
|
+
res.push(ema);
|
|
1237
|
+
}
|
|
1238
|
+
return res;
|
|
1239
|
+
}
|
|
1240
|
+
});
|
|
1241
|
+
return Ema;
|
|
1242
|
+
}());
|
|
1243
|
+
|
|
984
1244
|
var Mode;
|
|
985
1245
|
(function (Mode) {
|
|
986
1246
|
Mode[Mode["NumberToString"] = 1] = "NumberToString";
|
|
@@ -1036,8 +1296,8 @@
|
|
|
1036
1296
|
}
|
|
1037
1297
|
}
|
|
1038
1298
|
|
|
1039
|
-
var __assign = (undefined && undefined.__assign) || function () {
|
|
1040
|
-
__assign = Object.assign || function(t) {
|
|
1299
|
+
var __assign$1 = (undefined && undefined.__assign) || function () {
|
|
1300
|
+
__assign$1 = Object.assign || function(t) {
|
|
1041
1301
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
1042
1302
|
s = arguments[i];
|
|
1043
1303
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
@@ -1045,7 +1305,7 @@
|
|
|
1045
1305
|
}
|
|
1046
1306
|
return t;
|
|
1047
1307
|
};
|
|
1048
|
-
return __assign.apply(this, arguments);
|
|
1308
|
+
return __assign$1.apply(this, arguments);
|
|
1049
1309
|
};
|
|
1050
1310
|
var Williams = /** @class */ (function () {
|
|
1051
1311
|
function Williams() {
|
|
@@ -1072,7 +1332,7 @@
|
|
|
1072
1332
|
var res = [];
|
|
1073
1333
|
for (var i = 0; i < list.length; i++) {
|
|
1074
1334
|
if (i < 9)
|
|
1075
|
-
res[i] = __assign(__assign({}, list[i]), { williams9:
|
|
1335
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { williams9: null });
|
|
1076
1336
|
else {
|
|
1077
1337
|
var maxList = list.slice(i - 8, i).map(function (item) { return item["h"]; });
|
|
1078
1338
|
var minList = list.slice(i - 8, i).map(function (item) { return item["l"]; });
|
|
@@ -1080,7 +1340,7 @@
|
|
|
1080
1340
|
var min = Math.min.apply(Math, minList);
|
|
1081
1341
|
var close_1 = list[i]["c"];
|
|
1082
1342
|
var williams9 = ((max - close_1) / (max - min)) * -100;
|
|
1083
|
-
res[i] = __assign(__assign({}, list[i]), { williams9: Math.round(williams9 * 100) / 100 });
|
|
1343
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { williams9: Math.round(williams9 * 100) / 100 });
|
|
1084
1344
|
}
|
|
1085
1345
|
}
|
|
1086
1346
|
return res;
|
|
@@ -1094,7 +1354,7 @@
|
|
|
1094
1354
|
var res = [];
|
|
1095
1355
|
for (var i = 0; i < list.length; i++) {
|
|
1096
1356
|
if (i < 18)
|
|
1097
|
-
res[i] = __assign(__assign({}, list[i]), {
|
|
1357
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { williams18: null });
|
|
1098
1358
|
else {
|
|
1099
1359
|
var maxList = list.slice(i - 17, i).map(function (item) { return item["h"]; });
|
|
1100
1360
|
var minList = list.slice(i - 17, i).map(function (item) { return item["l"]; });
|
|
@@ -1102,7 +1362,7 @@
|
|
|
1102
1362
|
var min = Math.min.apply(Math, minList);
|
|
1103
1363
|
var close_2 = list[i]["c"];
|
|
1104
1364
|
var williams18 = ((max - close_2) / (max - min)) * -100;
|
|
1105
|
-
res[i] = __assign(__assign({}, list[i]), { williams18: Math.round(williams18 * 100) / 100 });
|
|
1365
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { williams18: Math.round(williams18 * 100) / 100 });
|
|
1106
1366
|
}
|
|
1107
1367
|
}
|
|
1108
1368
|
return res;
|
|
@@ -1111,6 +1371,105 @@
|
|
|
1111
1371
|
return Williams;
|
|
1112
1372
|
}());
|
|
1113
1373
|
|
|
1374
|
+
var __assign = (undefined && undefined.__assign) || function () {
|
|
1375
|
+
__assign = Object.assign || function(t) {
|
|
1376
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
1377
|
+
s = arguments[i];
|
|
1378
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
1379
|
+
t[p] = s[p];
|
|
1380
|
+
}
|
|
1381
|
+
return t;
|
|
1382
|
+
};
|
|
1383
|
+
return __assign.apply(this, arguments);
|
|
1384
|
+
};
|
|
1385
|
+
var Boll = /** @class */ (function () {
|
|
1386
|
+
function Boll() {
|
|
1387
|
+
}
|
|
1388
|
+
Object.defineProperty(Boll.prototype, "init", {
|
|
1389
|
+
enumerable: false,
|
|
1390
|
+
configurable: true,
|
|
1391
|
+
writable: true,
|
|
1392
|
+
value: function (data) {
|
|
1393
|
+
return {
|
|
1394
|
+
dataset: [data],
|
|
1395
|
+
bollMa: null,
|
|
1396
|
+
bollUb: null,
|
|
1397
|
+
bollLb: null,
|
|
1398
|
+
};
|
|
1399
|
+
}
|
|
1400
|
+
});
|
|
1401
|
+
Object.defineProperty(Boll.prototype, "next", {
|
|
1402
|
+
enumerable: false,
|
|
1403
|
+
configurable: true,
|
|
1404
|
+
writable: true,
|
|
1405
|
+
value: function (data, preList, type) {
|
|
1406
|
+
preList.dataset.push(data);
|
|
1407
|
+
if (preList.dataset.length < type) {
|
|
1408
|
+
return {
|
|
1409
|
+
dataset: preList.dataset,
|
|
1410
|
+
type: type,
|
|
1411
|
+
bollMa: null,
|
|
1412
|
+
bollUb: null,
|
|
1413
|
+
bollLb: null,
|
|
1414
|
+
};
|
|
1415
|
+
}
|
|
1416
|
+
else {
|
|
1417
|
+
if (preList.dataset.length > type) {
|
|
1418
|
+
preList.dataset.shift();
|
|
1419
|
+
}
|
|
1420
|
+
var sum = preList.dataset.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
1421
|
+
var bollMa_1 = Math.round((sum / type) * 100) / 100;
|
|
1422
|
+
var difference = preList.dataset.reduce(function (pre, current) {
|
|
1423
|
+
return bollMa_1 !== null ? pre + Math.pow(current.c - bollMa_1, 2) : pre;
|
|
1424
|
+
}, 0);
|
|
1425
|
+
var std = Math.round(Math.sqrt(difference / type) * 100) / 100;
|
|
1426
|
+
return {
|
|
1427
|
+
dataset: preList.dataset,
|
|
1428
|
+
type: type,
|
|
1429
|
+
bollMa: bollMa_1,
|
|
1430
|
+
bollUb: bollMa_1 + 2 * std,
|
|
1431
|
+
bollLb: bollMa_1 - 2 * std,
|
|
1432
|
+
};
|
|
1433
|
+
}
|
|
1434
|
+
}
|
|
1435
|
+
});
|
|
1436
|
+
Object.defineProperty(Boll.prototype, "getBoll", {
|
|
1437
|
+
enumerable: false,
|
|
1438
|
+
configurable: true,
|
|
1439
|
+
writable: true,
|
|
1440
|
+
value: function (list, type) {
|
|
1441
|
+
var res = [];
|
|
1442
|
+
var _loop_1 = function (i) {
|
|
1443
|
+
if (i < type)
|
|
1444
|
+
res[i] = __assign(__assign({}, list[i]), { bollMa: null, bollUb: null, bollLb: null });
|
|
1445
|
+
else {
|
|
1446
|
+
// bollMa
|
|
1447
|
+
var sumMa = list
|
|
1448
|
+
.slice(i - (type - 1), i + 1)
|
|
1449
|
+
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
1450
|
+
console.log("sumMa", sumMa);
|
|
1451
|
+
var bollMa_2 = Math.round((sumMa / type) * 100) / 100;
|
|
1452
|
+
// 標準差
|
|
1453
|
+
var difference = res
|
|
1454
|
+
.slice(i - (type - 1), i + 1)
|
|
1455
|
+
.reduce(function (pre, current) {
|
|
1456
|
+
return bollMa_2 !== null
|
|
1457
|
+
? pre + Math.pow(current.c - bollMa_2, 2)
|
|
1458
|
+
: pre;
|
|
1459
|
+
}, 0);
|
|
1460
|
+
var std = Math.round(Math.sqrt(difference / type) * 100) / 100;
|
|
1461
|
+
res[i] = __assign(__assign({}, list[i]), { bollMa: bollMa_2, bollUb: bollMa_2 + 2 * std, bollLb: bollMa_2 - 2 * std });
|
|
1462
|
+
}
|
|
1463
|
+
};
|
|
1464
|
+
for (var i = 0; i < list.length; i++) {
|
|
1465
|
+
_loop_1(i);
|
|
1466
|
+
}
|
|
1467
|
+
return res;
|
|
1468
|
+
}
|
|
1469
|
+
});
|
|
1470
|
+
return Boll;
|
|
1471
|
+
}());
|
|
1472
|
+
|
|
1114
1473
|
function add(a, b) {
|
|
1115
1474
|
return a + b;
|
|
1116
1475
|
}
|
|
@@ -1119,10 +1478,13 @@
|
|
|
1119
1478
|
return a - b;
|
|
1120
1479
|
}
|
|
1121
1480
|
|
|
1481
|
+
exports.Boll = Boll;
|
|
1482
|
+
exports.Ema = Ema;
|
|
1122
1483
|
exports.Gold = Gold;
|
|
1123
1484
|
exports.Kd = Kd;
|
|
1124
1485
|
exports.Ma = Ma;
|
|
1125
1486
|
exports.Macd = MACD;
|
|
1487
|
+
exports.Obv = Obv;
|
|
1126
1488
|
exports.Rsi = Rsi;
|
|
1127
1489
|
exports.Williams = Williams;
|
|
1128
1490
|
exports.add = add;
|