@ch20026103/anysis 0.0.6-alpha → 0.0.8-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/umd/index.js CHANGED
@@ -81,8 +81,9 @@
81
81
  return response;
82
82
  }
83
83
 
84
- function Slope(x, y) {
84
+ function Slope(y) {
85
85
  // 計算 x 和 y 的平均值
86
+ var x = Array.from({ length: y.length }, function (_, k) { return k + 1; });
86
87
  var x_mean = x.reduce(function (acc, cur) { return acc + cur; }) / x.length;
87
88
  var y_mean = y.reduce(function (acc, cur) { return acc + cur; }) / y.length;
88
89
  // 計算斜率
@@ -185,11 +186,149 @@
185
186
  };
186
187
  return __assign$7.apply(this, arguments);
187
188
  };
189
+ var Boll = /** @class */ (function () {
190
+ function Boll() {
191
+ }
192
+ Object.defineProperty(Boll.prototype, "init", {
193
+ enumerable: false,
194
+ configurable: true,
195
+ writable: true,
196
+ value: function (data) {
197
+ return {
198
+ dataset: [data],
199
+ bollMa: null,
200
+ bollUb: null,
201
+ bollLb: null,
202
+ };
203
+ }
204
+ });
205
+ Object.defineProperty(Boll.prototype, "next", {
206
+ enumerable: false,
207
+ configurable: true,
208
+ writable: true,
209
+ value: function (data, preList, type) {
210
+ preList.dataset.push(data);
211
+ if (preList.dataset.length < type) {
212
+ return {
213
+ dataset: preList.dataset,
214
+ type: type,
215
+ bollMa: null,
216
+ bollUb: null,
217
+ bollLb: null,
218
+ };
219
+ }
220
+ else {
221
+ if (preList.dataset.length > type) {
222
+ preList.dataset.shift();
223
+ }
224
+ var sum = preList.dataset.reduce(function (pre, current) { return pre + current.c; }, 0);
225
+ var bollMa_1 = Math.round((sum / type) * 100) / 100;
226
+ var difference = preList.dataset.reduce(function (pre, current) {
227
+ return bollMa_1 !== null ? pre + Math.pow(current.c - bollMa_1, 2) : pre;
228
+ }, 0);
229
+ var std = Math.round(Math.sqrt(difference / type) * 100) / 100;
230
+ return {
231
+ dataset: preList.dataset,
232
+ type: type,
233
+ bollMa: bollMa_1,
234
+ bollUb: bollMa_1 + 2 * std,
235
+ bollLb: bollMa_1 - 2 * std,
236
+ };
237
+ }
238
+ }
239
+ });
240
+ Object.defineProperty(Boll.prototype, "getBoll", {
241
+ enumerable: false,
242
+ configurable: true,
243
+ writable: true,
244
+ value: function (list, type) {
245
+ var res = [];
246
+ var _loop_1 = function (i) {
247
+ if (i < type)
248
+ res[i] = __assign$7(__assign$7({}, list[i]), { bollMa: null, bollUb: null, bollLb: null });
249
+ else {
250
+ // bollMa
251
+ var sumMa = list
252
+ .slice(i - (type - 1), i + 1)
253
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
254
+ console.log("sumMa", sumMa);
255
+ var bollMa_2 = Math.round((sumMa / type) * 100) / 100;
256
+ // 標準差
257
+ var difference = res
258
+ .slice(i - (type - 1), i + 1)
259
+ .reduce(function (pre, current) {
260
+ return bollMa_2 !== null
261
+ ? pre + Math.pow(current.c - bollMa_2, 2)
262
+ : pre;
263
+ }, 0);
264
+ var std = Math.round(Math.sqrt(difference / type) * 100) / 100;
265
+ res[i] = __assign$7(__assign$7({}, list[i]), { bollMa: bollMa_2, bollUb: bollMa_2 + 2 * std, bollLb: bollMa_2 - 2 * std });
266
+ }
267
+ };
268
+ for (var i = 0; i < list.length; i++) {
269
+ _loop_1(i);
270
+ }
271
+ return res;
272
+ }
273
+ });
274
+ return Boll;
275
+ }());
276
+
277
+ var Ema = /** @class */ (function () {
278
+ function Ema() {
279
+ }
280
+ Object.defineProperty(Ema.prototype, "getStartEma", {
281
+ enumerable: false,
282
+ configurable: true,
283
+ writable: true,
284
+ value: function (list, period) {
285
+ if (list.length < period)
286
+ throw new Error("list.length < period");
287
+ var sum = 0;
288
+ for (var i = 0; i < period; i++) {
289
+ sum += list[i];
290
+ }
291
+ var initialEMA = sum / period;
292
+ return initialEMA;
293
+ }
294
+ });
295
+ Object.defineProperty(Ema.prototype, "getEma", {
296
+ enumerable: false,
297
+ configurable: true,
298
+ writable: true,
299
+ value: function (list, period) {
300
+ var res = [];
301
+ var ema = this.getStartEma(list.slice(0, period), period);
302
+ for (var i = 0; i < list.length; i++) {
303
+ if (i < period) {
304
+ res.push(null);
305
+ continue;
306
+ }
307
+ ema = (list[i] * 2 + (period - 1) * ema) / (period + 1);
308
+ res.push(ema);
309
+ }
310
+ return res;
311
+ }
312
+ });
313
+ return Ema;
314
+ }());
315
+
316
+ var __assign$6 = (undefined && undefined.__assign) || function () {
317
+ __assign$6 = Object.assign || function(t) {
318
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
319
+ s = arguments[i];
320
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
321
+ t[p] = s[p];
322
+ }
323
+ return t;
324
+ };
325
+ return __assign$6.apply(this, arguments);
326
+ };
188
327
  function addDetail(obj, list, detail) {
189
328
  if (detail)
190
- return __assign$7(__assign$7({}, obj), { detail: list });
329
+ return __assign$6(__assign$6({}, obj), { detail: list });
191
330
  else
192
- return __assign$7({}, obj);
331
+ return __assign$6({}, obj);
193
332
  }
194
333
  function getWeekLine(list, detail) {
195
334
  var res = [];
@@ -460,8 +599,8 @@
460
599
  return Gold;
461
600
  }());
462
601
 
463
- var __assign$6 = (undefined && undefined.__assign) || function () {
464
- __assign$6 = Object.assign || function(t) {
602
+ var __assign$5 = (undefined && undefined.__assign) || function () {
603
+ __assign$5 = Object.assign || function(t) {
465
604
  for (var s, i = 1, n = arguments.length; i < n; i++) {
466
605
  s = arguments[i];
467
606
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -469,7 +608,7 @@
469
608
  }
470
609
  return t;
471
610
  };
472
- return __assign$6.apply(this, arguments);
611
+ return __assign$5.apply(this, arguments);
473
612
  };
474
613
  var Kd = /** @class */ (function () {
475
614
  function Kd() {
@@ -536,14 +675,14 @@
536
675
  var res = [];
537
676
  for (var i = 0; i < list.length; i++) {
538
677
  if (i < 8)
539
- res[i] = __assign$6(__assign$6({}, list[i]), { rsv: null });
678
+ res[i] = __assign$5(__assign$5({}, list[i]), { rsv: null });
540
679
  else {
541
680
  var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
542
681
  var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
543
682
  var close_2 = list[i].c;
544
683
  var rsv = ((close_2 - low) / (hight - low)) * 100;
545
684
  rsv = Math.round(rsv * 100) / 100;
546
- res[i] = __assign$6(__assign$6({}, list[i]), { rsv: rsv });
685
+ res[i] = __assign$5(__assign$5({}, list[i]), { rsv: rsv });
547
686
  }
548
687
  }
549
688
  return res;
@@ -559,7 +698,7 @@
559
698
  var yesterdayD = 50;
560
699
  for (var i = 0; i < list.length; i++) {
561
700
  if (i < 8)
562
- res[i] = __assign$6(__assign$6({}, list[i]), { rsv: null, k: null, d: null, "k-d": null });
701
+ res[i] = __assign$5(__assign$5({}, list[i]), { rsv: null, k: null, d: null, "k-d": null });
563
702
  else {
564
703
  var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
565
704
  var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
@@ -572,7 +711,7 @@
572
711
  k = Math.round(k * 100) / 100;
573
712
  d = Math.round(d * 100) / 100;
574
713
  k_d = Math.round(k_d * 100) / 100;
575
- res[i] = __assign$6(__assign$6({}, list[i]), { rsv: rsv, k: k, d: d, "k-d": k_d });
714
+ res[i] = __assign$5(__assign$5({}, list[i]), { rsv: rsv, k: k, d: d, "k-d": k_d });
576
715
  yesterdayK = k;
577
716
  yesterdayD = d;
578
717
  }
@@ -583,8 +722,8 @@
583
722
  return Kd;
584
723
  }());
585
724
 
586
- var __assign$5 = (undefined && undefined.__assign) || function () {
587
- __assign$5 = Object.assign || function(t) {
725
+ var __assign$4 = (undefined && undefined.__assign) || function () {
726
+ __assign$4 = Object.assign || function(t) {
588
727
  for (var s, i = 1, n = arguments.length; i < n; i++) {
589
728
  s = arguments[i];
590
729
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -592,7 +731,7 @@
592
731
  }
593
732
  return t;
594
733
  };
595
- return __assign$5.apply(this, arguments);
734
+ return __assign$4.apply(this, arguments);
596
735
  };
597
736
  var Ma = /** @class */ (function () {
598
737
  function Ma() {
@@ -648,13 +787,13 @@
648
787
  var res = [];
649
788
  for (var i = 0; i < list.length; i++) {
650
789
  if (i < 4)
651
- res[i] = __assign$5(__assign$5({}, list[i]), { ma5: null });
790
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma5: null });
652
791
  else {
653
792
  var sum = list
654
793
  .slice(i - 4, i + 1)
655
794
  .reduce(function (pre, current) { return pre + current.c; }, 0);
656
795
  var ma5 = Math.round((sum / 5) * 100) / 100;
657
- res[i] = __assign$5(__assign$5({}, list[i]), { ma5: ma5 });
796
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma5: ma5 });
658
797
  }
659
798
  }
660
799
  return res;
@@ -668,13 +807,13 @@
668
807
  var res = [];
669
808
  for (var i = 0; i < list.length; i++) {
670
809
  if (i < 9)
671
- res[i] = __assign$5(__assign$5({}, list[i]), { ma10: null });
810
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma10: null });
672
811
  else {
673
812
  var sum = list
674
813
  .slice(i - 9, i + 1)
675
814
  .reduce(function (pre, current) { return pre + current.c; }, 0);
676
815
  var ma10 = Math.round((sum / 10) * 100) / 100;
677
- res[i] = __assign$5(__assign$5({}, list[i]), { ma10: ma10 });
816
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma10: ma10 });
678
817
  }
679
818
  }
680
819
  return res;
@@ -688,13 +827,13 @@
688
827
  var res = [];
689
828
  for (var i = 0; i < list.length; i++) {
690
829
  if (i < 19)
691
- res[i] = __assign$5(__assign$5({}, list[i]), { ma20: null });
830
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma20: null });
692
831
  else {
693
832
  var sum = list
694
833
  .slice(i - 19, i + 1)
695
834
  .reduce(function (pre, current) { return pre + current.c; }, 0);
696
835
  var ma20 = Math.round((sum / 20) * 100) / 100;
697
- res[i] = __assign$5(__assign$5({}, list[i]), { ma20: ma20 });
836
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma20: ma20 });
698
837
  }
699
838
  }
700
839
  return res;
@@ -708,13 +847,13 @@
708
847
  var res = [];
709
848
  for (var i = 0; i < list.length; i++) {
710
849
  if (i < 59)
711
- res[i] = __assign$5(__assign$5({}, list[i]), { ma60: null });
850
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma60: null });
712
851
  else {
713
852
  var sum = list
714
853
  .slice(i - 59, i + 1)
715
854
  .reduce(function (pre, current) { return pre + current.c; }, 0);
716
855
  var ma60 = Math.round((sum / 60) * 100) / 100;
717
- res[i] = __assign$5(__assign$5({}, list[i]), { ma60: ma60 });
856
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma60: ma60 });
718
857
  }
719
858
  }
720
859
  return res;
@@ -728,13 +867,13 @@
728
867
  var res = [];
729
868
  for (var i = 0; i < list.length; i++) {
730
869
  if (i < self - 1)
731
- res[i] = __assign$5(__assign$5({}, list[i]), { ma: null });
870
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma: null });
732
871
  else {
733
872
  var sum = list
734
873
  .slice(i - (self - 1), i + 1)
735
874
  .reduce(function (pre, current) { return pre + current.c; }, 0);
736
875
  var ma = Math.round((sum / self) * 100) / 100;
737
- res[i] = __assign$5(__assign$5({}, list[i]), { ma: ma });
876
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma: ma });
738
877
  }
739
878
  }
740
879
  return res;
@@ -743,8 +882,8 @@
743
882
  return Ma;
744
883
  }());
745
884
 
746
- var __assign$4 = (undefined && undefined.__assign) || function () {
747
- __assign$4 = Object.assign || function(t) {
885
+ var __assign$3 = (undefined && undefined.__assign) || function () {
886
+ __assign$3 = Object.assign || function(t) {
748
887
  for (var s, i = 1, n = arguments.length; i < n; i++) {
749
888
  s = arguments[i];
750
889
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -752,7 +891,7 @@
752
891
  }
753
892
  return t;
754
893
  };
755
- return __assign$4.apply(this, arguments);
894
+ return __assign$3.apply(this, arguments);
756
895
  };
757
896
  var MACD = /** @class */ (function () {
758
897
  function MACD() {
@@ -893,10 +1032,10 @@
893
1032
  var res = [];
894
1033
  for (var i = 0; i < list.length; i++) {
895
1034
  if (i < 12)
896
- res[i] = __assign$4(__assign$4({}, list[i]), { EMA12: null });
1035
+ res[i] = __assign$3(__assign$3({}, list[i]), { EMA12: null });
897
1036
  else {
898
1037
  beforeEMA12 = (beforeEMA12 * 11) / 13 + (this.getDI(list[i]) * 2) / 13;
899
- res[i] = __assign$4(__assign$4({}, list[i]), { EMA12: beforeEMA12 });
1038
+ res[i] = __assign$3(__assign$3({}, list[i]), { EMA12: beforeEMA12 });
900
1039
  }
901
1040
  }
902
1041
  return res;
@@ -912,10 +1051,10 @@
912
1051
  var res = [];
913
1052
  for (var i = 0; i < list.length; i++) {
914
1053
  if (i < 26)
915
- res[i] = __assign$4(__assign$4({}, list[i]), { EMA26: null });
1054
+ res[i] = __assign$3(__assign$3({}, list[i]), { EMA26: null });
916
1055
  else {
917
1056
  beforeEMA26 = (beforeEMA26 * 25) / 27 + (this.getDI(list[i]) * 2) / 27;
918
- res[i] = __assign$4(__assign$4({}, list[i]), { EMA26: beforeEMA26 });
1057
+ res[i] = __assign$3(__assign$3({}, list[i]), { EMA26: beforeEMA26 });
919
1058
  }
920
1059
  }
921
1060
  return res;
@@ -930,12 +1069,12 @@
930
1069
  var res = [];
931
1070
  for (var i = 0; i < list.length; i++) {
932
1071
  if (i < 26)
933
- res[i] = __assign$4(__assign$4({}, list[i]), { DIF: null });
1072
+ res[i] = __assign$3(__assign$3({}, list[i]), { DIF: null });
934
1073
  else {
935
1074
  var EMA12 = ((_a = ResEMA12 === null || ResEMA12 === void 0 ? void 0 : ResEMA12[i]) === null || _a === void 0 ? void 0 : _a["EMA12"]) && ResEMA12[i]["EMA12"];
936
1075
  var EMA26 = ((_b = ResEMA26 === null || ResEMA26 === void 0 ? void 0 : ResEMA26[i]) === null || _b === void 0 ? void 0 : _b["EMA26"]) && ResEMA26[i]["EMA26"];
937
1076
  var DIF = EMA12 - EMA26;
938
- res[i] = __assign$4(__assign$4({}, list[i]), { DIF: DIF });
1077
+ res[i] = __assign$3(__assign$3({}, list[i]), { DIF: DIF });
939
1078
  }
940
1079
  }
941
1080
  return res;
@@ -950,19 +1089,19 @@
950
1089
  var beforeMACD9 = 0;
951
1090
  for (var i = 0; i < list.length; i++) {
952
1091
  if (i < 26)
953
- res[i] = __assign$4(__assign$4({}, list[i]), { MACD9: null, OSC: null });
1092
+ res[i] = __assign$3(__assign$3({}, list[i]), { MACD9: null, OSC: null });
954
1093
  else if (i === 26) {
955
1094
  var MACD9 = DIF.slice(26, 34)
956
1095
  .map(function (item) { return ((item === null || item === void 0 ? void 0 : item.DIF) ? item["DIF"] : 0); })
957
1096
  .reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
958
1097
  var OSC = DIF[i]["DIF"] - MACD9;
959
- res[26] = __assign$4(__assign$4({}, list[i]), { MACD9: MACD9, OSC: OSC });
1098
+ res[26] = __assign$3(__assign$3({}, list[i]), { MACD9: MACD9, OSC: OSC });
960
1099
  beforeMACD9 = MACD9;
961
1100
  }
962
1101
  else {
963
1102
  var MACD9 = beforeMACD9 + ((DIF[i]["DIF"] - beforeMACD9) * 2) / 10;
964
1103
  var OSC = DIF[i]["DIF"] - MACD9;
965
- res[i] = __assign$4(__assign$4({}, list[i]), { MACD9: MACD9, OSC: OSC });
1104
+ res[i] = __assign$3(__assign$3({}, list[i]), { MACD9: MACD9, OSC: OSC });
966
1105
  beforeMACD9 = MACD9;
967
1106
  }
968
1107
  }
@@ -972,8 +1111,8 @@
972
1111
  return MACD;
973
1112
  }());
974
1113
 
975
- var __assign$3 = (undefined && undefined.__assign) || function () {
976
- __assign$3 = Object.assign || function(t) {
1114
+ var __assign$2 = (undefined && undefined.__assign) || function () {
1115
+ __assign$2 = Object.assign || function(t) {
977
1116
  for (var s, i = 1, n = arguments.length; i < n; i++) {
978
1117
  s = arguments[i];
979
1118
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -981,7 +1120,94 @@
981
1120
  }
982
1121
  return t;
983
1122
  };
984
- return __assign$3.apply(this, arguments);
1123
+ return __assign$2.apply(this, arguments);
1124
+ };
1125
+ var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {
1126
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
1127
+ if (ar || !(i in from)) {
1128
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
1129
+ ar[i] = from[i];
1130
+ }
1131
+ }
1132
+ return to.concat(ar || Array.prototype.slice.call(from));
1133
+ };
1134
+ var Obv = /** @class */ (function () {
1135
+ function Obv() {
1136
+ }
1137
+ Object.defineProperty(Obv.prototype, "init", {
1138
+ enumerable: false,
1139
+ configurable: true,
1140
+ writable: true,
1141
+ value: function (data) {
1142
+ return {
1143
+ dataset: [data],
1144
+ obv: data.v,
1145
+ preClose: data.c,
1146
+ };
1147
+ }
1148
+ });
1149
+ Object.defineProperty(Obv.prototype, "next", {
1150
+ enumerable: false,
1151
+ configurable: true,
1152
+ writable: true,
1153
+ value: function (data, preList) {
1154
+ var currentVolume = data.v;
1155
+ var currentClose = data.c;
1156
+ // obv
1157
+ var obv = preList.obv;
1158
+ if (currentClose > preList.preClose) {
1159
+ obv += currentVolume;
1160
+ }
1161
+ else if (currentClose < preList.preClose) {
1162
+ obv -= currentVolume;
1163
+ }
1164
+ return {
1165
+ dataset: __spreadArray(__spreadArray([], preList.dataset, true), [data], false),
1166
+ obv: obv,
1167
+ preClose: currentClose,
1168
+ };
1169
+ }
1170
+ });
1171
+ Object.defineProperty(Obv.prototype, "getObv", {
1172
+ enumerable: false,
1173
+ configurable: true,
1174
+ writable: true,
1175
+ value: function (list) {
1176
+ var res = [];
1177
+ var obv = 0;
1178
+ for (var i = 0; i < list.length; i++) {
1179
+ var currentVolume = list[i].v;
1180
+ var currentClose = list[i].c;
1181
+ if (i > 0) {
1182
+ // obv
1183
+ if (currentClose > list[i - 1].c) {
1184
+ obv += currentVolume;
1185
+ }
1186
+ else if (currentClose < list[i - 1].c) {
1187
+ obv -= currentVolume;
1188
+ }
1189
+ }
1190
+ else {
1191
+ obv = currentVolume;
1192
+ }
1193
+ res[i] = __assign$2(__assign$2({}, list[i]), { obv: obv });
1194
+ }
1195
+ return res;
1196
+ }
1197
+ });
1198
+ return Obv;
1199
+ }());
1200
+
1201
+ var __assign$1 = (undefined && undefined.__assign) || function () {
1202
+ __assign$1 = Object.assign || function(t) {
1203
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
1204
+ s = arguments[i];
1205
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
1206
+ t[p] = s[p];
1207
+ }
1208
+ return t;
1209
+ };
1210
+ return __assign$1.apply(this, arguments);
985
1211
  };
986
1212
  var Rsi = /** @class */ (function () {
987
1213
  function Rsi() {
@@ -1008,13 +1234,13 @@
1008
1234
  var res = [];
1009
1235
  // 前5筆
1010
1236
  for (var i = 0; i < 5; i++) {
1011
- res[i] = __assign$3(__assign$3({}, list[i]), { rsi6: null });
1237
+ res[i] = __assign$1(__assign$1({}, list[i]), { rsi6: null });
1012
1238
  }
1013
1239
  // 第6筆Rsi
1014
1240
  var beforeUpAvg = this.getStartUpAvg(list, 6);
1015
1241
  var beforeDownAvg = this.getStartDownAvg(list, 6);
1016
1242
  var firstRsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
1017
- res[5] = __assign$3(__assign$3({}, list[5]), { rsi6: firstRsi6 });
1243
+ res[5] = __assign$1(__assign$1({}, list[5]), { rsi6: firstRsi6 });
1018
1244
  // else
1019
1245
  for (var i = 6; i < list.length; i++) {
1020
1246
  var minusU = 0;
@@ -1029,7 +1255,7 @@
1029
1255
  beforeUpAvg = (beforeUpAvg * 5) / 6 + minusU / 6;
1030
1256
  beforeDownAvg = (beforeDownAvg * 5) / 6 + Math.abs(minusD) / 6;
1031
1257
  var rsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
1032
- res[i] = __assign$3(__assign$3({}, list[i]), { rsi6: Math.round(rsi6 * 100) / 100 });
1258
+ res[i] = __assign$1(__assign$1({}, list[i]), { rsi6: Math.round(rsi6 * 100) / 100 });
1033
1259
  }
1034
1260
  return res;
1035
1261
  }
@@ -1042,13 +1268,13 @@
1042
1268
  var res = [];
1043
1269
  // 前11筆
1044
1270
  for (var i = 0; i < 11; i++) {
1045
- res[i] = __assign$3(__assign$3({}, list[i]), { rsi12: null });
1271
+ res[i] = __assign$1(__assign$1({}, list[i]), { rsi12: null });
1046
1272
  }
1047
1273
  // 第12筆Rsi
1048
1274
  var beforeUpAvg = this.getStartUpAvg(list, 12);
1049
1275
  var beforeDownAvg = this.getStartDownAvg(list, 12);
1050
1276
  var firstRsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
1051
- res[11] = __assign$3(__assign$3({}, list[11]), { rsi12: firstRsi12 });
1277
+ res[11] = __assign$1(__assign$1({}, list[11]), { rsi12: firstRsi12 });
1052
1278
  // else
1053
1279
  for (var i = 12; i < list.length; i++) {
1054
1280
  var minusU = 0;
@@ -1063,7 +1289,7 @@
1063
1289
  beforeUpAvg = (beforeUpAvg * 11) / 12 + minusU / 12;
1064
1290
  beforeDownAvg = (beforeDownAvg * 11) / 12 + Math.abs(minusD) / 12;
1065
1291
  var rsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
1066
- res[i] = __assign$3(__assign$3({}, list[i]), { rsi12: Math.round(rsi12 * 100) / 100 });
1292
+ res[i] = __assign$1(__assign$1({}, list[i]), { rsi12: Math.round(rsi12 * 100) / 100 });
1067
1293
  }
1068
1294
  return res;
1069
1295
  }
@@ -1115,132 +1341,6 @@
1115
1341
  return Rsi;
1116
1342
  }());
1117
1343
 
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
-
1244
1344
  var Mode;
1245
1345
  (function (Mode) {
1246
1346
  Mode[Mode["NumberToString"] = 1] = "NumberToString";
@@ -1296,8 +1396,8 @@
1296
1396
  }
1297
1397
  }
1298
1398
 
1299
- var __assign$1 = (undefined && undefined.__assign) || function () {
1300
- __assign$1 = Object.assign || function(t) {
1399
+ var __assign = (undefined && undefined.__assign) || function () {
1400
+ __assign = Object.assign || function(t) {
1301
1401
  for (var s, i = 1, n = arguments.length; i < n; i++) {
1302
1402
  s = arguments[i];
1303
1403
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -1305,7 +1405,7 @@
1305
1405
  }
1306
1406
  return t;
1307
1407
  };
1308
- return __assign$1.apply(this, arguments);
1408
+ return __assign.apply(this, arguments);
1309
1409
  };
1310
1410
  var Williams = /** @class */ (function () {
1311
1411
  function Williams() {
@@ -1332,7 +1432,7 @@
1332
1432
  var res = [];
1333
1433
  for (var i = 0; i < list.length; i++) {
1334
1434
  if (i < 9)
1335
- res[i] = __assign$1(__assign$1({}, list[i]), { williams9: null });
1435
+ res[i] = __assign(__assign({}, list[i]), { williams9: null });
1336
1436
  else {
1337
1437
  var maxList = list.slice(i - 8, i).map(function (item) { return item["h"]; });
1338
1438
  var minList = list.slice(i - 8, i).map(function (item) { return item["l"]; });
@@ -1340,7 +1440,7 @@
1340
1440
  var min = Math.min.apply(Math, minList);
1341
1441
  var close_1 = list[i]["c"];
1342
1442
  var williams9 = ((max - close_1) / (max - min)) * -100;
1343
- res[i] = __assign$1(__assign$1({}, list[i]), { williams9: Math.round(williams9 * 100) / 100 });
1443
+ res[i] = __assign(__assign({}, list[i]), { williams9: Math.round(williams9 * 100) / 100 });
1344
1444
  }
1345
1445
  }
1346
1446
  return res;
@@ -1354,7 +1454,7 @@
1354
1454
  var res = [];
1355
1455
  for (var i = 0; i < list.length; i++) {
1356
1456
  if (i < 18)
1357
- res[i] = __assign$1(__assign$1({}, list[i]), { williams18: null });
1457
+ res[i] = __assign(__assign({}, list[i]), { williams18: null });
1358
1458
  else {
1359
1459
  var maxList = list.slice(i - 17, i).map(function (item) { return item["h"]; });
1360
1460
  var minList = list.slice(i - 17, i).map(function (item) { return item["l"]; });
@@ -1362,7 +1462,7 @@
1362
1462
  var min = Math.min.apply(Math, minList);
1363
1463
  var close_2 = list[i]["c"];
1364
1464
  var williams18 = ((max - close_2) / (max - min)) * -100;
1365
- res[i] = __assign$1(__assign$1({}, list[i]), { williams18: Math.round(williams18 * 100) / 100 });
1465
+ res[i] = __assign(__assign({}, list[i]), { williams18: Math.round(williams18 * 100) / 100 });
1366
1466
  }
1367
1467
  }
1368
1468
  return res;
@@ -1371,105 +1471,6 @@
1371
1471
  return Williams;
1372
1472
  }());
1373
1473
 
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
-
1473
1474
  function add(a, b) {
1474
1475
  return a + b;
1475
1476
  }
@@ -1478,6 +1479,34 @@
1478
1479
  return a - b;
1479
1480
  }
1480
1481
 
1482
+ function isJSON(str) {
1483
+ try {
1484
+ JSON.parse(str);
1485
+ return true;
1486
+ }
1487
+ catch (error) {
1488
+ return false;
1489
+ }
1490
+ }
1491
+
1492
+ function parseLsusbOutput(output) {
1493
+ var lines = output.trim().split("\n");
1494
+ var devices = lines
1495
+ .map(function (line) {
1496
+ var match = line.match(/Bus (\d+) Device (\d+): ID ([a-f0-9]+:[a-f0-9]+) (.+)/);
1497
+ if (match) {
1498
+ var bus = match[1];
1499
+ var device = match[2];
1500
+ var id = match[3];
1501
+ var description = match[4];
1502
+ return { bus: bus, device: device, id: id, description: description };
1503
+ }
1504
+ return null;
1505
+ })
1506
+ .filter(function (device) { return device !== null; });
1507
+ return devices;
1508
+ }
1509
+
1481
1510
  exports.Boll = Boll;
1482
1511
  exports.Ema = Ema;
1483
1512
  exports.Gold = Gold;
@@ -1492,8 +1521,10 @@
1492
1521
  exports.dateFormat = dateFormat;
1493
1522
  exports.exponentialSmoothing = exponentialSmoothing;
1494
1523
  exports.getWeekLine = getWeekLine;
1524
+ exports.isJSON = isJSON;
1495
1525
  exports.minus = minus;
1496
1526
  exports.movingAverages = movingAverages;
1527
+ exports.parseLsusbOutput = parseLsusbOutput;
1497
1528
  exports.simpleRegressionModel = simpleRegressionModel;
1498
1529
  exports.slope = Slope;
1499
1530
  exports.weightMovingAverages = weightMovingAverages;