@ch20026103/anysis 0.0.5-alpha → 0.0.7-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/index.d.ts +4 -2
- package/dist/cjs/index.js +9 -5
- 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 +2 -2
- package/dist/cjs/stockSkills/ema.js +1 -1
- package/dist/cjs/stockSkills/kd.d.ts +22 -22
- package/dist/cjs/stockSkills/kd.js +10 -10
- package/dist/cjs/stockSkills/ma.d.ts +13 -23
- package/dist/cjs/stockSkills/ma.js +9 -43
- package/dist/cjs/stockSkills/ma.test.js +3 -20
- package/dist/cjs/stockSkills/macd.d.ts +34 -34
- package/dist/cjs/stockSkills/macd.js +15 -15
- package/dist/cjs/stockSkills/macd.test.js +2 -0
- package/dist/cjs/stockSkills/rsi.d.ts +4 -4
- package/dist/cjs/stockSkills/rsi.js +2 -2
- package/dist/cjs/stockSkills/williams.d.ts +4 -4
- package/dist/cjs/stockSkills/williams.js +2 -2
- package/dist/cjs/utils/isJson.d.ts +1 -0
- package/dist/cjs/utils/isJson.js +12 -0
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js +4 -2
- 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 +2 -2
- package/dist/esm/stockSkills/ema.js +1 -1
- package/dist/esm/stockSkills/kd.d.ts +22 -22
- package/dist/esm/stockSkills/kd.js +10 -10
- package/dist/esm/stockSkills/ma.d.ts +13 -23
- package/dist/esm/stockSkills/ma.js +9 -43
- package/dist/esm/stockSkills/ma.test.js +3 -20
- package/dist/esm/stockSkills/macd.d.ts +34 -34
- package/dist/esm/stockSkills/macd.js +15 -15
- package/dist/esm/stockSkills/macd.test.js +2 -0
- package/dist/esm/stockSkills/rsi.d.ts +4 -4
- package/dist/esm/stockSkills/rsi.js +2 -2
- package/dist/esm/stockSkills/williams.d.ts +4 -4
- package/dist/esm/stockSkills/williams.js +2 -2
- package/dist/esm/utils/isJson.d.ts +1 -0
- package/dist/esm/utils/isJson.js +9 -0
- package/dist/umd/index.js +279 -202
- package/package.json +17 -15
package/dist/umd/index.js
CHANGED
|
@@ -174,6 +174,144 @@
|
|
|
174
174
|
return nextYearForecast;
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
+
var __assign$7 = (undefined && undefined.__assign) || function () {
|
|
178
|
+
__assign$7 = Object.assign || function(t) {
|
|
179
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
180
|
+
s = arguments[i];
|
|
181
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
182
|
+
t[p] = s[p];
|
|
183
|
+
}
|
|
184
|
+
return t;
|
|
185
|
+
};
|
|
186
|
+
return __assign$7.apply(this, arguments);
|
|
187
|
+
};
|
|
188
|
+
var Boll = /** @class */ (function () {
|
|
189
|
+
function Boll() {
|
|
190
|
+
}
|
|
191
|
+
Object.defineProperty(Boll.prototype, "init", {
|
|
192
|
+
enumerable: false,
|
|
193
|
+
configurable: true,
|
|
194
|
+
writable: true,
|
|
195
|
+
value: function (data) {
|
|
196
|
+
return {
|
|
197
|
+
dataset: [data],
|
|
198
|
+
bollMa: null,
|
|
199
|
+
bollUb: null,
|
|
200
|
+
bollLb: null,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
Object.defineProperty(Boll.prototype, "next", {
|
|
205
|
+
enumerable: false,
|
|
206
|
+
configurable: true,
|
|
207
|
+
writable: true,
|
|
208
|
+
value: function (data, preList, type) {
|
|
209
|
+
preList.dataset.push(data);
|
|
210
|
+
if (preList.dataset.length < type) {
|
|
211
|
+
return {
|
|
212
|
+
dataset: preList.dataset,
|
|
213
|
+
type: type,
|
|
214
|
+
bollMa: null,
|
|
215
|
+
bollUb: null,
|
|
216
|
+
bollLb: null,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
if (preList.dataset.length > type) {
|
|
221
|
+
preList.dataset.shift();
|
|
222
|
+
}
|
|
223
|
+
var sum = preList.dataset.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
224
|
+
var bollMa_1 = Math.round((sum / type) * 100) / 100;
|
|
225
|
+
var difference = preList.dataset.reduce(function (pre, current) {
|
|
226
|
+
return bollMa_1 !== null ? pre + Math.pow(current.c - bollMa_1, 2) : pre;
|
|
227
|
+
}, 0);
|
|
228
|
+
var std = Math.round(Math.sqrt(difference / type) * 100) / 100;
|
|
229
|
+
return {
|
|
230
|
+
dataset: preList.dataset,
|
|
231
|
+
type: type,
|
|
232
|
+
bollMa: bollMa_1,
|
|
233
|
+
bollUb: bollMa_1 + 2 * std,
|
|
234
|
+
bollLb: bollMa_1 - 2 * std,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
Object.defineProperty(Boll.prototype, "getBoll", {
|
|
240
|
+
enumerable: false,
|
|
241
|
+
configurable: true,
|
|
242
|
+
writable: true,
|
|
243
|
+
value: function (list, type) {
|
|
244
|
+
var res = [];
|
|
245
|
+
var _loop_1 = function (i) {
|
|
246
|
+
if (i < type)
|
|
247
|
+
res[i] = __assign$7(__assign$7({}, list[i]), { bollMa: null, bollUb: null, bollLb: null });
|
|
248
|
+
else {
|
|
249
|
+
// bollMa
|
|
250
|
+
var sumMa = list
|
|
251
|
+
.slice(i - (type - 1), i + 1)
|
|
252
|
+
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
253
|
+
console.log("sumMa", sumMa);
|
|
254
|
+
var bollMa_2 = Math.round((sumMa / type) * 100) / 100;
|
|
255
|
+
// 標準差
|
|
256
|
+
var difference = res
|
|
257
|
+
.slice(i - (type - 1), i + 1)
|
|
258
|
+
.reduce(function (pre, current) {
|
|
259
|
+
return bollMa_2 !== null
|
|
260
|
+
? pre + Math.pow(current.c - bollMa_2, 2)
|
|
261
|
+
: pre;
|
|
262
|
+
}, 0);
|
|
263
|
+
var std = Math.round(Math.sqrt(difference / type) * 100) / 100;
|
|
264
|
+
res[i] = __assign$7(__assign$7({}, list[i]), { bollMa: bollMa_2, bollUb: bollMa_2 + 2 * std, bollLb: bollMa_2 - 2 * std });
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
for (var i = 0; i < list.length; i++) {
|
|
268
|
+
_loop_1(i);
|
|
269
|
+
}
|
|
270
|
+
return res;
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
return Boll;
|
|
274
|
+
}());
|
|
275
|
+
|
|
276
|
+
var Ema = /** @class */ (function () {
|
|
277
|
+
function Ema() {
|
|
278
|
+
}
|
|
279
|
+
Object.defineProperty(Ema.prototype, "getStartEma", {
|
|
280
|
+
enumerable: false,
|
|
281
|
+
configurable: true,
|
|
282
|
+
writable: true,
|
|
283
|
+
value: function (list, period) {
|
|
284
|
+
if (list.length < period)
|
|
285
|
+
throw new Error("list.length < period");
|
|
286
|
+
var sum = 0;
|
|
287
|
+
for (var i = 0; i < period; i++) {
|
|
288
|
+
sum += list[i];
|
|
289
|
+
}
|
|
290
|
+
var initialEMA = sum / period;
|
|
291
|
+
return initialEMA;
|
|
292
|
+
}
|
|
293
|
+
});
|
|
294
|
+
Object.defineProperty(Ema.prototype, "getEma", {
|
|
295
|
+
enumerable: false,
|
|
296
|
+
configurable: true,
|
|
297
|
+
writable: true,
|
|
298
|
+
value: function (list, period) {
|
|
299
|
+
var res = [];
|
|
300
|
+
var ema = this.getStartEma(list.slice(0, period), period);
|
|
301
|
+
for (var i = 0; i < list.length; i++) {
|
|
302
|
+
if (i < period) {
|
|
303
|
+
res.push(null);
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
ema = (list[i] * 2 + (period - 1) * ema) / (period + 1);
|
|
307
|
+
res.push(ema);
|
|
308
|
+
}
|
|
309
|
+
return res;
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
return Ema;
|
|
313
|
+
}());
|
|
314
|
+
|
|
177
315
|
var __assign$6 = (undefined && undefined.__assign) || function () {
|
|
178
316
|
__assign$6 = Object.assign || function(t) {
|
|
179
317
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
@@ -481,10 +619,10 @@
|
|
|
481
619
|
value: function (data) {
|
|
482
620
|
return {
|
|
483
621
|
dataset: [data],
|
|
484
|
-
rsv:
|
|
485
|
-
k:
|
|
486
|
-
d:
|
|
487
|
-
"k-d":
|
|
622
|
+
rsv: null,
|
|
623
|
+
k: null,
|
|
624
|
+
d: null,
|
|
625
|
+
"k-d": null,
|
|
488
626
|
};
|
|
489
627
|
}
|
|
490
628
|
});
|
|
@@ -497,10 +635,10 @@
|
|
|
497
635
|
if (preList.dataset.length < type) {
|
|
498
636
|
return {
|
|
499
637
|
dataset: preList.dataset,
|
|
500
|
-
rsv:
|
|
501
|
-
k:
|
|
502
|
-
d:
|
|
503
|
-
"k-d":
|
|
638
|
+
rsv: null,
|
|
639
|
+
k: null,
|
|
640
|
+
d: null,
|
|
641
|
+
"k-d": null,
|
|
504
642
|
};
|
|
505
643
|
}
|
|
506
644
|
else {
|
|
@@ -536,7 +674,7 @@
|
|
|
536
674
|
var res = [];
|
|
537
675
|
for (var i = 0; i < list.length; i++) {
|
|
538
676
|
if (i < 8)
|
|
539
|
-
res[i] = __assign$5(__assign$5({}, list[i]), { rsv:
|
|
677
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { rsv: null });
|
|
540
678
|
else {
|
|
541
679
|
var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
|
|
542
680
|
var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
|
|
@@ -559,7 +697,7 @@
|
|
|
559
697
|
var yesterdayD = 50;
|
|
560
698
|
for (var i = 0; i < list.length; i++) {
|
|
561
699
|
if (i < 8)
|
|
562
|
-
res[i] = __assign$5(__assign$5({}, list[i]), { rsv:
|
|
700
|
+
res[i] = __assign$5(__assign$5({}, list[i]), { rsv: null, k: null, d: null, "k-d": null });
|
|
563
701
|
else {
|
|
564
702
|
var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
|
|
565
703
|
var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
|
|
@@ -634,9 +772,8 @@
|
|
|
634
772
|
var responseMa10 = this.getMa10(list);
|
|
635
773
|
var responseMa20 = this.getMa20(list);
|
|
636
774
|
var responseMa60 = this.getMa60(list);
|
|
637
|
-
var responseBoll = this.getBoll(list);
|
|
638
775
|
for (var i = 0; i < list.length; i++) {
|
|
639
|
-
res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseMa60[i]
|
|
776
|
+
res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseMa60[i]);
|
|
640
777
|
}
|
|
641
778
|
return res;
|
|
642
779
|
}
|
|
@@ -649,7 +786,7 @@
|
|
|
649
786
|
var res = [];
|
|
650
787
|
for (var i = 0; i < list.length; i++) {
|
|
651
788
|
if (i < 4)
|
|
652
|
-
res[i] = __assign$4(__assign$4({}, list[i]), { ma5:
|
|
789
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { ma5: null });
|
|
653
790
|
else {
|
|
654
791
|
var sum = list
|
|
655
792
|
.slice(i - 4, i + 1)
|
|
@@ -669,7 +806,7 @@
|
|
|
669
806
|
var res = [];
|
|
670
807
|
for (var i = 0; i < list.length; i++) {
|
|
671
808
|
if (i < 9)
|
|
672
|
-
res[i] = __assign$4(__assign$4({}, list[i]), { ma10:
|
|
809
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { ma10: null });
|
|
673
810
|
else {
|
|
674
811
|
var sum = list
|
|
675
812
|
.slice(i - 9, i + 1)
|
|
@@ -689,7 +826,7 @@
|
|
|
689
826
|
var res = [];
|
|
690
827
|
for (var i = 0; i < list.length; i++) {
|
|
691
828
|
if (i < 19)
|
|
692
|
-
res[i] = __assign$4(__assign$4({}, list[i]), { ma20:
|
|
829
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { ma20: null });
|
|
693
830
|
else {
|
|
694
831
|
var sum = list
|
|
695
832
|
.slice(i - 19, i + 1)
|
|
@@ -709,7 +846,7 @@
|
|
|
709
846
|
var res = [];
|
|
710
847
|
for (var i = 0; i < list.length; i++) {
|
|
711
848
|
if (i < 59)
|
|
712
|
-
res[i] = __assign$4(__assign$4({}, list[i]), { ma60:
|
|
849
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { ma60: null });
|
|
713
850
|
else {
|
|
714
851
|
var sum = list
|
|
715
852
|
.slice(i - 59, i + 1)
|
|
@@ -721,7 +858,7 @@
|
|
|
721
858
|
return res;
|
|
722
859
|
}
|
|
723
860
|
});
|
|
724
|
-
Object.defineProperty(Ma.prototype, "
|
|
861
|
+
Object.defineProperty(Ma.prototype, "getMa", {
|
|
725
862
|
enumerable: false,
|
|
726
863
|
configurable: true,
|
|
727
864
|
writable: true,
|
|
@@ -729,47 +866,14 @@
|
|
|
729
866
|
var res = [];
|
|
730
867
|
for (var i = 0; i < list.length; i++) {
|
|
731
868
|
if (i < self - 1)
|
|
732
|
-
res[i] = __assign$4(__assign$4({}, list[i]), {
|
|
869
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { ma: null });
|
|
733
870
|
else {
|
|
734
871
|
var sum = list
|
|
735
872
|
.slice(i - (self - 1), i + 1)
|
|
736
873
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
737
|
-
var
|
|
738
|
-
res[i] = __assign$4(__assign$4({}, list[i]), {
|
|
739
|
-
}
|
|
740
|
-
}
|
|
741
|
-
return res;
|
|
742
|
-
}
|
|
743
|
-
});
|
|
744
|
-
Object.defineProperty(Ma.prototype, "getBoll", {
|
|
745
|
-
enumerable: false,
|
|
746
|
-
configurable: true,
|
|
747
|
-
writable: true,
|
|
748
|
-
value: function (list) {
|
|
749
|
-
var res = [];
|
|
750
|
-
var _loop_1 = function (i) {
|
|
751
|
-
if (i < 24)
|
|
752
|
-
res[i] = __assign$4(__assign$4({}, list[i]), { ma25: undefined, bollUb: undefined, bollLb: undefined });
|
|
753
|
-
else {
|
|
754
|
-
// ma25
|
|
755
|
-
var sumMa25 = list
|
|
756
|
-
.slice(i - 24, i + 1)
|
|
757
|
-
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
758
|
-
var ma25_1 = Math.round((sumMa25 / 25) * 100) / 100;
|
|
759
|
-
// 標準差
|
|
760
|
-
var sumBase = res
|
|
761
|
-
.slice(i - 24, i + 1)
|
|
762
|
-
.reduce(function (pre, current) {
|
|
763
|
-
return ma25_1 !== undefined
|
|
764
|
-
? pre + Math.pow(current.c - ma25_1, 2)
|
|
765
|
-
: pre;
|
|
766
|
-
}, 0);
|
|
767
|
-
var base = Math.round(Math.sqrt(sumBase / 25) * 100) / 100;
|
|
768
|
-
res[i] = __assign$4(__assign$4({}, list[i]), { ma25: ma25_1, bollUb: ma25_1 + 2 * base, bollLb: ma25_1 - 2 * base });
|
|
874
|
+
var ma = Math.round((sum / self) * 100) / 100;
|
|
875
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { ma: ma });
|
|
769
876
|
}
|
|
770
|
-
};
|
|
771
|
-
for (var i = 0; i < list.length; i++) {
|
|
772
|
-
_loop_1(i);
|
|
773
877
|
}
|
|
774
878
|
return res;
|
|
775
879
|
}
|
|
@@ -798,11 +902,11 @@
|
|
|
798
902
|
value: function (data) {
|
|
799
903
|
return {
|
|
800
904
|
dataset: [data],
|
|
801
|
-
ema12:
|
|
802
|
-
ema26:
|
|
905
|
+
ema12: null,
|
|
906
|
+
ema26: null,
|
|
803
907
|
dif: [],
|
|
804
|
-
macd:
|
|
805
|
-
osc:
|
|
908
|
+
macd: null,
|
|
909
|
+
osc: null,
|
|
806
910
|
};
|
|
807
911
|
}
|
|
808
912
|
});
|
|
@@ -816,7 +920,7 @@
|
|
|
816
920
|
if (preList.dataset.length > 34)
|
|
817
921
|
preList.dataset.shift();
|
|
818
922
|
// EMA12
|
|
819
|
-
var ema12 =
|
|
923
|
+
var ema12 = null;
|
|
820
924
|
if (preList.dataset.length === 12) {
|
|
821
925
|
ema12 = this.getStartEMA(preList.dataset);
|
|
822
926
|
ema12 = (ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
|
|
@@ -827,7 +931,7 @@
|
|
|
827
931
|
ema12 = Math.round(ema12 * 100) / 100;
|
|
828
932
|
}
|
|
829
933
|
// EMA26
|
|
830
|
-
var ema26 =
|
|
934
|
+
var ema26 = null;
|
|
831
935
|
if (preList.dataset.length === 26) {
|
|
832
936
|
ema26 = this.getStartEMA(preList.dataset);
|
|
833
937
|
ema26 = (ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
|
|
@@ -838,7 +942,7 @@
|
|
|
838
942
|
ema26 = Math.round(ema26 * 100) / 100;
|
|
839
943
|
}
|
|
840
944
|
// DIF
|
|
841
|
-
var dif =
|
|
945
|
+
var dif = null;
|
|
842
946
|
if (ema12 && ema26) {
|
|
843
947
|
dif = ema12 - ema26;
|
|
844
948
|
dif = Math.round(dif * 100) / 100;
|
|
@@ -847,10 +951,10 @@
|
|
|
847
951
|
(_b = preList.dif) === null || _b === void 0 ? void 0 : _b.shift();
|
|
848
952
|
}
|
|
849
953
|
// MACD & OSC
|
|
850
|
-
var macd =
|
|
851
|
-
var osc =
|
|
954
|
+
var macd = null;
|
|
955
|
+
var osc = null;
|
|
852
956
|
if (preList.dif.length === 9) {
|
|
853
|
-
if (preList.macd ===
|
|
957
|
+
if (preList.macd === null) {
|
|
854
958
|
macd = preList.dif.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
|
|
855
959
|
for (var i = 0; i < 9; i++) {
|
|
856
960
|
var item = preList.dif[i];
|
|
@@ -890,7 +994,7 @@
|
|
|
890
994
|
var DIF = this.getDIF(list, EMA12, EMA26);
|
|
891
995
|
var MACD9 = this.getMACD9(list, DIF);
|
|
892
996
|
for (var i = 0; i < list.length; i++) {
|
|
893
|
-
res[i] = Object.assign(list[i], DIF[i], MACD9[i]);
|
|
997
|
+
res[i] = Object.assign(list[i], DIF[i], MACD9[i], EMA12[i], EMA26[i]);
|
|
894
998
|
}
|
|
895
999
|
return res;
|
|
896
1000
|
}
|
|
@@ -927,7 +1031,7 @@
|
|
|
927
1031
|
var res = [];
|
|
928
1032
|
for (var i = 0; i < list.length; i++) {
|
|
929
1033
|
if (i < 12)
|
|
930
|
-
res[i] = __assign$3(__assign$3({}, list[i]), { EMA12:
|
|
1034
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { EMA12: null });
|
|
931
1035
|
else {
|
|
932
1036
|
beforeEMA12 = (beforeEMA12 * 11) / 13 + (this.getDI(list[i]) * 2) / 13;
|
|
933
1037
|
res[i] = __assign$3(__assign$3({}, list[i]), { EMA12: beforeEMA12 });
|
|
@@ -946,7 +1050,7 @@
|
|
|
946
1050
|
var res = [];
|
|
947
1051
|
for (var i = 0; i < list.length; i++) {
|
|
948
1052
|
if (i < 26)
|
|
949
|
-
res[i] = __assign$3(__assign$3({}, list[i]), { EMA26:
|
|
1053
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { EMA26: null });
|
|
950
1054
|
else {
|
|
951
1055
|
beforeEMA26 = (beforeEMA26 * 25) / 27 + (this.getDI(list[i]) * 2) / 27;
|
|
952
1056
|
res[i] = __assign$3(__assign$3({}, list[i]), { EMA26: beforeEMA26 });
|
|
@@ -964,7 +1068,7 @@
|
|
|
964
1068
|
var res = [];
|
|
965
1069
|
for (var i = 0; i < list.length; i++) {
|
|
966
1070
|
if (i < 26)
|
|
967
|
-
res[i] = __assign$3(__assign$3({}, list[i]), { DIF:
|
|
1071
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { DIF: null });
|
|
968
1072
|
else {
|
|
969
1073
|
var EMA12 = ((_a = ResEMA12 === null || ResEMA12 === void 0 ? void 0 : ResEMA12[i]) === null || _a === void 0 ? void 0 : _a["EMA12"]) && ResEMA12[i]["EMA12"];
|
|
970
1074
|
var EMA26 = ((_b = ResEMA26 === null || ResEMA26 === void 0 ? void 0 : ResEMA26[i]) === null || _b === void 0 ? void 0 : _b["EMA26"]) && ResEMA26[i]["EMA26"];
|
|
@@ -984,7 +1088,7 @@
|
|
|
984
1088
|
var beforeMACD9 = 0;
|
|
985
1089
|
for (var i = 0; i < list.length; i++) {
|
|
986
1090
|
if (i < 26)
|
|
987
|
-
res[i] = __assign$3(__assign$3({}, list[i]), { MACD9:
|
|
1091
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { MACD9: null, OSC: null });
|
|
988
1092
|
else if (i === 26) {
|
|
989
1093
|
var MACD9 = DIF.slice(26, 34)
|
|
990
1094
|
.map(function (item) { return ((item === null || item === void 0 ? void 0 : item.DIF) ? item["DIF"] : 0); })
|
|
@@ -1017,6 +1121,93 @@
|
|
|
1017
1121
|
};
|
|
1018
1122
|
return __assign$2.apply(this, arguments);
|
|
1019
1123
|
};
|
|
1124
|
+
var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {
|
|
1125
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
1126
|
+
if (ar || !(i in from)) {
|
|
1127
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
1128
|
+
ar[i] = from[i];
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
1132
|
+
};
|
|
1133
|
+
var Obv = /** @class */ (function () {
|
|
1134
|
+
function Obv() {
|
|
1135
|
+
}
|
|
1136
|
+
Object.defineProperty(Obv.prototype, "init", {
|
|
1137
|
+
enumerable: false,
|
|
1138
|
+
configurable: true,
|
|
1139
|
+
writable: true,
|
|
1140
|
+
value: function (data) {
|
|
1141
|
+
return {
|
|
1142
|
+
dataset: [data],
|
|
1143
|
+
obv: data.v,
|
|
1144
|
+
preClose: data.c,
|
|
1145
|
+
};
|
|
1146
|
+
}
|
|
1147
|
+
});
|
|
1148
|
+
Object.defineProperty(Obv.prototype, "next", {
|
|
1149
|
+
enumerable: false,
|
|
1150
|
+
configurable: true,
|
|
1151
|
+
writable: true,
|
|
1152
|
+
value: function (data, preList) {
|
|
1153
|
+
var currentVolume = data.v;
|
|
1154
|
+
var currentClose = data.c;
|
|
1155
|
+
// obv
|
|
1156
|
+
var obv = preList.obv;
|
|
1157
|
+
if (currentClose > preList.preClose) {
|
|
1158
|
+
obv += currentVolume;
|
|
1159
|
+
}
|
|
1160
|
+
else if (currentClose < preList.preClose) {
|
|
1161
|
+
obv -= currentVolume;
|
|
1162
|
+
}
|
|
1163
|
+
return {
|
|
1164
|
+
dataset: __spreadArray(__spreadArray([], preList.dataset, true), [data], false),
|
|
1165
|
+
obv: obv,
|
|
1166
|
+
preClose: currentClose,
|
|
1167
|
+
};
|
|
1168
|
+
}
|
|
1169
|
+
});
|
|
1170
|
+
Object.defineProperty(Obv.prototype, "getObv", {
|
|
1171
|
+
enumerable: false,
|
|
1172
|
+
configurable: true,
|
|
1173
|
+
writable: true,
|
|
1174
|
+
value: function (list) {
|
|
1175
|
+
var res = [];
|
|
1176
|
+
var obv = 0;
|
|
1177
|
+
for (var i = 0; i < list.length; i++) {
|
|
1178
|
+
var currentVolume = list[i].v;
|
|
1179
|
+
var currentClose = list[i].c;
|
|
1180
|
+
if (i > 0) {
|
|
1181
|
+
// obv
|
|
1182
|
+
if (currentClose > list[i - 1].c) {
|
|
1183
|
+
obv += currentVolume;
|
|
1184
|
+
}
|
|
1185
|
+
else if (currentClose < list[i - 1].c) {
|
|
1186
|
+
obv -= currentVolume;
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1189
|
+
else {
|
|
1190
|
+
obv = currentVolume;
|
|
1191
|
+
}
|
|
1192
|
+
res[i] = __assign$2(__assign$2({}, list[i]), { obv: obv });
|
|
1193
|
+
}
|
|
1194
|
+
return res;
|
|
1195
|
+
}
|
|
1196
|
+
});
|
|
1197
|
+
return Obv;
|
|
1198
|
+
}());
|
|
1199
|
+
|
|
1200
|
+
var __assign$1 = (undefined && undefined.__assign) || function () {
|
|
1201
|
+
__assign$1 = Object.assign || function(t) {
|
|
1202
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
1203
|
+
s = arguments[i];
|
|
1204
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
1205
|
+
t[p] = s[p];
|
|
1206
|
+
}
|
|
1207
|
+
return t;
|
|
1208
|
+
};
|
|
1209
|
+
return __assign$1.apply(this, arguments);
|
|
1210
|
+
};
|
|
1020
1211
|
var Rsi = /** @class */ (function () {
|
|
1021
1212
|
function Rsi() {
|
|
1022
1213
|
}
|
|
@@ -1042,13 +1233,13 @@
|
|
|
1042
1233
|
var res = [];
|
|
1043
1234
|
// 前5筆
|
|
1044
1235
|
for (var i = 0; i < 5; i++) {
|
|
1045
|
-
res[i] = __assign$
|
|
1236
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { rsi6: null });
|
|
1046
1237
|
}
|
|
1047
1238
|
// 第6筆Rsi
|
|
1048
1239
|
var beforeUpAvg = this.getStartUpAvg(list, 6);
|
|
1049
1240
|
var beforeDownAvg = this.getStartDownAvg(list, 6);
|
|
1050
1241
|
var firstRsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
1051
|
-
res[5] = __assign$
|
|
1242
|
+
res[5] = __assign$1(__assign$1({}, list[5]), { rsi6: firstRsi6 });
|
|
1052
1243
|
// else
|
|
1053
1244
|
for (var i = 6; i < list.length; i++) {
|
|
1054
1245
|
var minusU = 0;
|
|
@@ -1063,7 +1254,7 @@
|
|
|
1063
1254
|
beforeUpAvg = (beforeUpAvg * 5) / 6 + minusU / 6;
|
|
1064
1255
|
beforeDownAvg = (beforeDownAvg * 5) / 6 + Math.abs(minusD) / 6;
|
|
1065
1256
|
var rsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
1066
|
-
res[i] = __assign$
|
|
1257
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { rsi6: Math.round(rsi6 * 100) / 100 });
|
|
1067
1258
|
}
|
|
1068
1259
|
return res;
|
|
1069
1260
|
}
|
|
@@ -1076,13 +1267,13 @@
|
|
|
1076
1267
|
var res = [];
|
|
1077
1268
|
// 前11筆
|
|
1078
1269
|
for (var i = 0; i < 11; i++) {
|
|
1079
|
-
res[i] = __assign$
|
|
1270
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { rsi12: null });
|
|
1080
1271
|
}
|
|
1081
1272
|
// 第12筆Rsi
|
|
1082
1273
|
var beforeUpAvg = this.getStartUpAvg(list, 12);
|
|
1083
1274
|
var beforeDownAvg = this.getStartDownAvg(list, 12);
|
|
1084
1275
|
var firstRsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
1085
|
-
res[11] = __assign$
|
|
1276
|
+
res[11] = __assign$1(__assign$1({}, list[11]), { rsi12: firstRsi12 });
|
|
1086
1277
|
// else
|
|
1087
1278
|
for (var i = 12; i < list.length; i++) {
|
|
1088
1279
|
var minusU = 0;
|
|
@@ -1097,7 +1288,7 @@
|
|
|
1097
1288
|
beforeUpAvg = (beforeUpAvg * 11) / 12 + minusU / 12;
|
|
1098
1289
|
beforeDownAvg = (beforeDownAvg * 11) / 12 + Math.abs(minusD) / 12;
|
|
1099
1290
|
var rsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
1100
|
-
res[i] = __assign$
|
|
1291
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { rsi12: Math.round(rsi12 * 100) / 100 });
|
|
1101
1292
|
}
|
|
1102
1293
|
return res;
|
|
1103
1294
|
}
|
|
@@ -1149,132 +1340,6 @@
|
|
|
1149
1340
|
return Rsi;
|
|
1150
1341
|
}());
|
|
1151
1342
|
|
|
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
|
-
|
|
1278
1343
|
var Mode;
|
|
1279
1344
|
(function (Mode) {
|
|
1280
1345
|
Mode[Mode["NumberToString"] = 1] = "NumberToString";
|
|
@@ -1366,7 +1431,7 @@
|
|
|
1366
1431
|
var res = [];
|
|
1367
1432
|
for (var i = 0; i < list.length; i++) {
|
|
1368
1433
|
if (i < 9)
|
|
1369
|
-
res[i] = __assign(__assign({}, list[i]), { williams9:
|
|
1434
|
+
res[i] = __assign(__assign({}, list[i]), { williams9: null });
|
|
1370
1435
|
else {
|
|
1371
1436
|
var maxList = list.slice(i - 8, i).map(function (item) { return item["h"]; });
|
|
1372
1437
|
var minList = list.slice(i - 8, i).map(function (item) { return item["l"]; });
|
|
@@ -1388,7 +1453,7 @@
|
|
|
1388
1453
|
var res = [];
|
|
1389
1454
|
for (var i = 0; i < list.length; i++) {
|
|
1390
1455
|
if (i < 18)
|
|
1391
|
-
res[i] = __assign(__assign({}, list[i]), {
|
|
1456
|
+
res[i] = __assign(__assign({}, list[i]), { williams18: null });
|
|
1392
1457
|
else {
|
|
1393
1458
|
var maxList = list.slice(i - 17, i).map(function (item) { return item["h"]; });
|
|
1394
1459
|
var minList = list.slice(i - 17, i).map(function (item) { return item["l"]; });
|
|
@@ -1413,6 +1478,17 @@
|
|
|
1413
1478
|
return a - b;
|
|
1414
1479
|
}
|
|
1415
1480
|
|
|
1481
|
+
function isJSON(str) {
|
|
1482
|
+
try {
|
|
1483
|
+
JSON.parse(str);
|
|
1484
|
+
return true;
|
|
1485
|
+
}
|
|
1486
|
+
catch (error) {
|
|
1487
|
+
return false;
|
|
1488
|
+
}
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1491
|
+
exports.Boll = Boll;
|
|
1416
1492
|
exports.Ema = Ema;
|
|
1417
1493
|
exports.Gold = Gold;
|
|
1418
1494
|
exports.Kd = Kd;
|
|
@@ -1426,6 +1502,7 @@
|
|
|
1426
1502
|
exports.dateFormat = dateFormat;
|
|
1427
1503
|
exports.exponentialSmoothing = exponentialSmoothing;
|
|
1428
1504
|
exports.getWeekLine = getWeekLine;
|
|
1505
|
+
exports.isJSON = isJSON;
|
|
1429
1506
|
exports.minus = minus;
|
|
1430
1507
|
exports.movingAverages = movingAverages;
|
|
1431
1508
|
exports.simpleRegressionModel = simpleRegressionModel;
|