@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/cjs/analyze/Slope/index.d.ts +1 -1
- package/dist/cjs/analyze/Slope/index.js +2 -1
- package/dist/cjs/analyze/Slope/slope.test.js +5 -10
- package/dist/cjs/index.d.ts +5 -3
- package/dist/cjs/index.js +11 -7
- package/dist/cjs/utils/isJson.d.ts +1 -0
- package/dist/cjs/utils/isJson.js +12 -0
- package/dist/cjs/utils/isJson.test.d.ts +1 -0
- package/dist/cjs/utils/isJson.test.js +20 -0
- package/dist/cjs/utils/parseLsusbOutput.d.ts +6 -0
- package/dist/cjs/utils/parseLsusbOutput.js +20 -0
- package/dist/cjs/utils/parseLsusbOutput.test.d.ts +1 -0
- package/dist/cjs/utils/parseLsusbOutput.test.js +23 -0
- package/dist/esm/analyze/Slope/index.d.ts +1 -1
- package/dist/esm/analyze/Slope/index.js +2 -1
- package/dist/esm/analyze/Slope/slope.test.js +5 -10
- package/dist/esm/index.d.ts +5 -3
- package/dist/esm/index.js +5 -3
- package/dist/esm/utils/isJson.d.ts +1 -0
- package/dist/esm/utils/isJson.js +9 -0
- package/dist/esm/utils/isJson.test.d.ts +1 -0
- package/dist/esm/utils/isJson.test.js +18 -0
- package/dist/esm/utils/parseLsusbOutput.d.ts +6 -0
- package/dist/esm/utils/parseLsusbOutput.js +17 -0
- package/dist/esm/utils/parseLsusbOutput.test.d.ts +1 -0
- package/dist/esm/utils/parseLsusbOutput.test.js +21 -0
- package/dist/umd/index.js +307 -276
- package/package.json +1 -1
package/dist/umd/index.js
CHANGED
|
@@ -81,8 +81,9 @@
|
|
|
81
81
|
return response;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
function Slope(
|
|
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$
|
|
329
|
+
return __assign$6(__assign$6({}, obj), { detail: list });
|
|
191
330
|
else
|
|
192
|
-
return __assign$
|
|
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$
|
|
464
|
-
__assign$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
587
|
-
__assign$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
747
|
-
__assign$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
976
|
-
__assign$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
|
1300
|
-
__assign
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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;
|