@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.
Files changed (46) hide show
  1. package/dist/cjs/index.d.ts +4 -2
  2. package/dist/cjs/index.js +9 -5
  3. package/dist/cjs/stockSkills/boll.d.ts +58 -0
  4. package/dist/cjs/stockSkills/boll.js +101 -0
  5. package/dist/cjs/stockSkills/boll.test.d.ts +1 -0
  6. package/dist/cjs/stockSkills/boll.test.js +36 -0
  7. package/dist/cjs/stockSkills/ema.d.ts +2 -2
  8. package/dist/cjs/stockSkills/ema.js +1 -1
  9. package/dist/cjs/stockSkills/kd.d.ts +22 -22
  10. package/dist/cjs/stockSkills/kd.js +10 -10
  11. package/dist/cjs/stockSkills/ma.d.ts +13 -23
  12. package/dist/cjs/stockSkills/ma.js +9 -43
  13. package/dist/cjs/stockSkills/ma.test.js +3 -20
  14. package/dist/cjs/stockSkills/macd.d.ts +34 -34
  15. package/dist/cjs/stockSkills/macd.js +15 -15
  16. package/dist/cjs/stockSkills/macd.test.js +2 -0
  17. package/dist/cjs/stockSkills/rsi.d.ts +4 -4
  18. package/dist/cjs/stockSkills/rsi.js +2 -2
  19. package/dist/cjs/stockSkills/williams.d.ts +4 -4
  20. package/dist/cjs/stockSkills/williams.js +2 -2
  21. package/dist/cjs/utils/isJson.d.ts +1 -0
  22. package/dist/cjs/utils/isJson.js +12 -0
  23. package/dist/esm/index.d.ts +4 -2
  24. package/dist/esm/index.js +4 -2
  25. package/dist/esm/stockSkills/boll.d.ts +58 -0
  26. package/dist/esm/stockSkills/boll.js +99 -0
  27. package/dist/esm/stockSkills/boll.test.d.ts +1 -0
  28. package/dist/esm/stockSkills/boll.test.js +34 -0
  29. package/dist/esm/stockSkills/ema.d.ts +2 -2
  30. package/dist/esm/stockSkills/ema.js +1 -1
  31. package/dist/esm/stockSkills/kd.d.ts +22 -22
  32. package/dist/esm/stockSkills/kd.js +10 -10
  33. package/dist/esm/stockSkills/ma.d.ts +13 -23
  34. package/dist/esm/stockSkills/ma.js +9 -43
  35. package/dist/esm/stockSkills/ma.test.js +3 -20
  36. package/dist/esm/stockSkills/macd.d.ts +34 -34
  37. package/dist/esm/stockSkills/macd.js +15 -15
  38. package/dist/esm/stockSkills/macd.test.js +2 -0
  39. package/dist/esm/stockSkills/rsi.d.ts +4 -4
  40. package/dist/esm/stockSkills/rsi.js +2 -2
  41. package/dist/esm/stockSkills/williams.d.ts +4 -4
  42. package/dist/esm/stockSkills/williams.js +2 -2
  43. package/dist/esm/utils/isJson.d.ts +1 -0
  44. package/dist/esm/utils/isJson.js +9 -0
  45. package/dist/umd/index.js +279 -202
  46. 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: undefined,
485
- k: undefined,
486
- d: undefined,
487
- "k-d": undefined,
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: undefined,
501
- k: undefined,
502
- d: undefined,
503
- "k-d": undefined,
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: undefined });
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: undefined, k: undefined, d: undefined, "k-d": undefined });
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], responseBoll[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: undefined });
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: undefined });
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: undefined });
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: undefined });
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, "getMaSelf", {
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]), { maSelf: undefined });
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 maSelf = Math.round((sum / self) * 100) / 100;
738
- res[i] = __assign$4(__assign$4({}, list[i]), { maSelf: maSelf });
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: undefined,
802
- ema26: undefined,
905
+ ema12: null,
906
+ ema26: null,
803
907
  dif: [],
804
- macd: undefined,
805
- osc: undefined,
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 = undefined;
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 = undefined;
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 = undefined;
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 = undefined;
851
- var osc = undefined;
954
+ var macd = null;
955
+ var osc = null;
852
956
  if (preList.dif.length === 9) {
853
- if (preList.macd === undefined) {
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: undefined });
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: undefined });
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: undefined });
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: undefined, OSC: undefined });
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$2(__assign$2({}, list[i]), { rsi6: undefined });
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$2(__assign$2({}, list[5]), { rsi6: firstRsi6 });
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$2(__assign$2({}, list[i]), { rsi6: Math.round(rsi6 * 100) / 100 });
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$2(__assign$2({}, list[i]), { rsi12: undefined });
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$2(__assign$2({}, list[11]), { rsi12: firstRsi12 });
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$2(__assign$2({}, list[i]), { rsi12: Math.round(rsi12 * 100) / 100 });
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: undefined });
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]), { williams9: undefined });
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;