@ch20026103/anysis 0.0.2-alpha → 0.0.2-beta

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
@@ -163,14 +163,292 @@
163
163
  return nextYearForecast;
164
164
  }
165
165
 
166
- function add(a, b) {
167
- return a + b;
166
+ var __assign$5 = (undefined && undefined.__assign) || function () {
167
+ __assign$5 = Object.assign || function(t) {
168
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
169
+ s = arguments[i];
170
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
171
+ t[p] = s[p];
172
+ }
173
+ return t;
174
+ };
175
+ return __assign$5.apply(this, arguments);
176
+ };
177
+ function addDetail(obj, list, detail) {
178
+ if (detail)
179
+ return __assign$5(__assign$5({}, obj), { detail: list });
180
+ else
181
+ return __assign$5({}, obj);
168
182
  }
169
-
170
- function minus(a, b) {
171
- return a - b;
183
+ function getWeekLine(list, detail) {
184
+ var res = [];
185
+ var collectWeekData = [];
186
+ list.forEach(function (item, index) {
187
+ var year = item["t"]
188
+ .toString()
189
+ .replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3");
190
+ var day = new Date(year).getDay();
191
+ switch (day) {
192
+ case 6:
193
+ break;
194
+ case 5: {
195
+ collectWeekData.push(item);
196
+ var obj = {
197
+ o: collectWeekData[0]["o"],
198
+ c: collectWeekData[collectWeekData.length - 1]["c"],
199
+ t: collectWeekData[collectWeekData.length - 1]["t"],
200
+ h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
201
+ l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
202
+ };
203
+ res.push(addDetail(obj, collectWeekData, detail));
204
+ collectWeekData = [];
205
+ break;
206
+ }
207
+ case 1:
208
+ if (collectWeekData.length !== 0) {
209
+ var obj = {
210
+ o: collectWeekData[0]["o"],
211
+ c: collectWeekData[collectWeekData.length - 1]["c"],
212
+ t: collectWeekData[collectWeekData.length - 1]["t"],
213
+ h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
214
+ l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
215
+ };
216
+ res.push(addDetail(obj, collectWeekData, detail));
217
+ }
218
+ collectWeekData = [];
219
+ collectWeekData.push(item);
220
+ break;
221
+ default:
222
+ collectWeekData.push(item);
223
+ if (list.length - 1 === index) {
224
+ var obj = {
225
+ o: collectWeekData[0]["o"],
226
+ c: collectWeekData[collectWeekData.length - 1]["c"],
227
+ t: collectWeekData[collectWeekData.length - 1]["t"],
228
+ h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
229
+ l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
230
+ };
231
+ res.push(addDetail(obj, collectWeekData, detail));
232
+ }
233
+ break;
234
+ }
235
+ });
236
+ return res;
172
237
  }
173
238
 
239
+ var Gold = /** @class */ (function () {
240
+ function Gold() {
241
+ }
242
+ Object.defineProperty(Gold.prototype, "findHighPoint", {
243
+ enumerable: false,
244
+ configurable: true,
245
+ writable: true,
246
+ value: function (list) {
247
+ var weekLine = getWeekLine(list, true);
248
+ var hightPoints = {};
249
+ var _loop_1 = function (i) {
250
+ var hightPoint = undefined;
251
+ switch (i) {
252
+ case 0:
253
+ {
254
+ var h1 = weekLine[i].h;
255
+ var h2 = weekLine[i + 1].h;
256
+ var h3 = weekLine[i + 2].h;
257
+ if (h1 > h2 && h1 > h3)
258
+ hightPoint = weekLine[i];
259
+ }
260
+ break;
261
+ case 1:
262
+ {
263
+ var h1 = weekLine[i - 1].h;
264
+ var h2 = weekLine[i].h;
265
+ var h3 = weekLine[i + 1].h;
266
+ var h4 = weekLine[i + 2].h;
267
+ if (h2 > h1 && h2 > h3 && h2 > h4)
268
+ hightPoint = weekLine[i];
269
+ }
270
+ break;
271
+ case weekLine.length - 3:
272
+ {
273
+ var h1 = weekLine[i - 2].h;
274
+ var h2 = weekLine[i - 1].h;
275
+ var h3 = weekLine[i].h;
276
+ var h4 = weekLine[i + 1].h;
277
+ var h5 = weekLine[i + 2].h;
278
+ if (h3 > h1 && h3 > h2 && h3 > h4 && h3 > h5)
279
+ hightPoint = weekLine[i];
280
+ }
281
+ break;
282
+ case weekLine.length - 2:
283
+ {
284
+ var h1 = weekLine[i - 2].h;
285
+ var h2 = weekLine[i - 1].h;
286
+ var h3 = weekLine[i].h;
287
+ var h4 = weekLine[i + 1].h;
288
+ if (h3 > h1 && h3 > h2 && h3 > h4)
289
+ hightPoint = weekLine[i];
290
+ }
291
+ break;
292
+ case weekLine.length - 1:
293
+ {
294
+ var h1 = weekLine[i - 2].h;
295
+ var h2 = weekLine[i - 1].h;
296
+ var h3 = weekLine[i].h;
297
+ if (h3 > h2 && h3 > h1)
298
+ hightPoint = weekLine[i];
299
+ }
300
+ break;
301
+ default:
302
+ {
303
+ var h1 = weekLine[i - 2].h;
304
+ var h2 = weekLine[i - 1].h;
305
+ var h3 = weekLine[i].h;
306
+ var h4 = weekLine[i + 1].h;
307
+ var h5 = weekLine[i + 2].h;
308
+ var h6 = weekLine[i + 3].h;
309
+ if (h3 > h2 && h3 > h4 && h3 > h5 && h3 > h6)
310
+ hightPoint = weekLine[i];
311
+ if (h3 > h1 && h3 > h2 && h3 > h4 && h3 > h5)
312
+ hightPoint = weekLine[i];
313
+ }
314
+ break;
315
+ }
316
+ if (hightPoint && hightPoint["detail"]) {
317
+ var h_1 = hightPoint.h;
318
+ var theHight = hightPoint.detail.find(function (item) { return item.h === h_1; });
319
+ delete hightPoint.detail;
320
+ if (theHight)
321
+ hightPoints[theHight === null || theHight === void 0 ? void 0 : theHight.t] = theHight;
322
+ }
323
+ };
324
+ for (var i = 0; i < weekLine.length; i++) {
325
+ _loop_1(i);
326
+ }
327
+ return hightPoints;
328
+ }
329
+ });
330
+ Object.defineProperty(Gold.prototype, "findLowPoint", {
331
+ enumerable: false,
332
+ configurable: true,
333
+ writable: true,
334
+ value: function (list) {
335
+ var weekLine = getWeekLine(list, true);
336
+ var lowPoints = {};
337
+ var _loop_2 = function (i) {
338
+ var lowPoint = undefined;
339
+ switch (i) {
340
+ case 0:
341
+ {
342
+ var l1 = weekLine[i].l;
343
+ var l2 = weekLine[i + 1].l;
344
+ var l3 = weekLine[i + 2].l;
345
+ if (l1 < l2 && l1 < l3)
346
+ lowPoint = weekLine[i];
347
+ }
348
+ break;
349
+ case 1:
350
+ {
351
+ var l1 = weekLine[i - 1].l;
352
+ var l2 = weekLine[i].l;
353
+ var l3 = weekLine[i + 1].l;
354
+ var l4 = weekLine[i + 2].l;
355
+ if (l2 < l1 && l2 < l3 && l2 < l4)
356
+ lowPoint = weekLine[i];
357
+ }
358
+ break;
359
+ case weekLine.length - 3:
360
+ {
361
+ var l1 = weekLine[i - 2].l;
362
+ var l2 = weekLine[i - 1].l;
363
+ var l3 = weekLine[i].l;
364
+ var l4 = weekLine[i + 1].l;
365
+ var l5 = weekLine[i + 2].l;
366
+ if (l3 < l1 && l3 < l2 && l3 < l4 && l3 < l5)
367
+ lowPoint = weekLine[i];
368
+ }
369
+ break;
370
+ case weekLine.length - 2:
371
+ {
372
+ var l1 = weekLine[i - 2].l;
373
+ var l2 = weekLine[i - 1].l;
374
+ var l3 = weekLine[i].l;
375
+ var l4 = weekLine[i + 1].l;
376
+ if (l3 < l1 && l3 < l2 && l3 < l4)
377
+ lowPoint = weekLine[i];
378
+ }
379
+ break;
380
+ case weekLine.length - 1:
381
+ {
382
+ var l1 = weekLine[i - 2].l;
383
+ var l2 = weekLine[i - 1].l;
384
+ var l3 = weekLine[i].l;
385
+ if (l3 < l2 && l3 < l1)
386
+ lowPoint = weekLine[i];
387
+ }
388
+ break;
389
+ default:
390
+ {
391
+ var l1 = weekLine[i - 2].l;
392
+ var l2 = weekLine[i - 1].l;
393
+ var l3 = weekLine[i].l;
394
+ var l4 = weekLine[i + 1].l;
395
+ var l5 = weekLine[i + 2].l;
396
+ var l6 = weekLine[i + 3].l;
397
+ if (l3 < l2 && l3 < l4 && l3 < l5 && l3 < l6)
398
+ lowPoint = weekLine[i];
399
+ if (l3 < l1 && l3 < l2 && l3 < l4 && l3 < l5)
400
+ lowPoint = weekLine[i];
401
+ }
402
+ break;
403
+ }
404
+ if (lowPoint && lowPoint["detail"]) {
405
+ var l_1 = lowPoint.l;
406
+ var theLow = lowPoint.detail.find(function (item) { return item.l === l_1; });
407
+ delete lowPoint.detail;
408
+ if (theLow)
409
+ lowPoints[theLow === null || theLow === void 0 ? void 0 : theLow.t] = theLow;
410
+ }
411
+ };
412
+ for (var i = 0; i < weekLine.length; i++) {
413
+ _loop_2(i);
414
+ }
415
+ return lowPoints;
416
+ }
417
+ });
418
+ Object.defineProperty(Gold.prototype, "getGold", {
419
+ enumerable: false,
420
+ configurable: true,
421
+ writable: true,
422
+ value: function (list) {
423
+ var hightPoints = this.findHighPoint(list);
424
+ var lowPoints = this.findLowPoint(list);
425
+ var lastHightPointDate = Object.keys(hightPoints).slice(-1)[0] !==
426
+ list[list.length - 1].t.toString()
427
+ ? Object.keys(hightPoints).slice(-1)[0]
428
+ : Object.keys(hightPoints).slice(-2)[0];
429
+ var lastLowPointDate = Object.keys(lowPoints).slice(-1)[0] !== list[list.length - 1].t.toString()
430
+ ? Object.keys(lowPoints).slice(-1)[0]
431
+ : Object.keys(lowPoints).slice(-2)[0];
432
+ var highestPoint = hightPoints[lastHightPointDate].h;
433
+ var lowestPoint = lowPoints[lastLowPointDate].l;
434
+ var res = {
435
+ highestPointDate: parseInt(lastHightPointDate),
436
+ lowestPointDate: parseInt(lastLowPointDate),
437
+ lowestPoint: lowestPoint,
438
+ highestPoint: highestPoint,
439
+ superStrong: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.191) * 100) / 100,
440
+ strong: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.382) * 100) / 100,
441
+ middle: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.5) * 100) /
442
+ 100,
443
+ weak: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.618) * 100) / 100,
444
+ superWeak: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.809) * 100) / 100,
445
+ };
446
+ return res;
447
+ }
448
+ });
449
+ return Gold;
450
+ }());
451
+
174
452
  var __assign$4 = (undefined && undefined.__assign) || function () {
175
453
  __assign$4 = Object.assign || function(t) {
176
454
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -182,6 +460,80 @@
182
460
  };
183
461
  return __assign$4.apply(this, arguments);
184
462
  };
463
+ var Kd = /** @class */ (function () {
464
+ function Kd() {
465
+ }
466
+ Object.defineProperty(Kd.prototype, "getRSV", {
467
+ enumerable: false,
468
+ configurable: true,
469
+ writable: true,
470
+ value: function (list) {
471
+ var res = [];
472
+ for (var i = 0; i < list.length; i++) {
473
+ if (i < 8)
474
+ res[i] = __assign$4(__assign$4({}, list[i]), { rsv: undefined });
475
+ else {
476
+ var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
477
+ var hight = Math.max.apply(Math, list.slice(i - 9, i + 1).map(function (item) { return item.h; }));
478
+ var close_1 = list[i].c;
479
+ var rsv = ((close_1 - low) / (hight - low)) * 100;
480
+ res[i] = __assign$4(__assign$4({}, list[i]), { rsv: rsv });
481
+ }
482
+ }
483
+ return res;
484
+ }
485
+ });
486
+ Object.defineProperty(Kd.prototype, "getKD", {
487
+ enumerable: false,
488
+ configurable: true,
489
+ writable: true,
490
+ value: function (list) {
491
+ var res = [];
492
+ var yesterdayK = 0;
493
+ var yesterdayD = 0;
494
+ for (var i = 0; i < list.length; i++) {
495
+ if (i < 8)
496
+ res[i] = __assign$4(__assign$4({}, list[i]), { rsv: undefined, k: undefined, d: undefined });
497
+ else {
498
+ var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
499
+ var hight = Math.max.apply(Math, list.slice(i - 9, i + 1).map(function (item) { return item.h; }));
500
+ var close_2 = list[i].c;
501
+ var rsv = ((close_2 - low) / (hight - low)) * 100;
502
+ if (i === 8) {
503
+ var k = (2 / 3) * 50 + (1 / 3) * rsv;
504
+ var d = (2 / 3) * 50 + (1 / 3) * k;
505
+ var j = 3 * k - 2 * d;
506
+ res[i] = __assign$4(__assign$4({}, list[i]), { rsv: rsv, k: k, d: d, j: j });
507
+ yesterdayK = k;
508
+ yesterdayD = d;
509
+ }
510
+ else {
511
+ var k = (2 / 3) * yesterdayK + (1 / 3) * rsv;
512
+ var d = (2 / 3) * yesterdayD + (1 / 3) * k;
513
+ var j = 3 * k - 2 * d;
514
+ res[i] = __assign$4(__assign$4({}, list[i]), { rsv: rsv, k: k, d: d, j: j });
515
+ yesterdayK = k;
516
+ yesterdayD = d;
517
+ }
518
+ }
519
+ }
520
+ return res;
521
+ }
522
+ });
523
+ return Kd;
524
+ }());
525
+
526
+ var __assign$3 = (undefined && undefined.__assign) || function () {
527
+ __assign$3 = Object.assign || function(t) {
528
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
529
+ s = arguments[i];
530
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
531
+ t[p] = s[p];
532
+ }
533
+ return t;
534
+ };
535
+ return __assign$3.apply(this, arguments);
536
+ };
185
537
  var Ma = /** @class */ (function () {
186
538
  function Ma() {
187
539
  }
@@ -210,13 +562,13 @@
210
562
  var res = [];
211
563
  for (var i = 0; i < list.length; i++) {
212
564
  if (i < 4)
213
- res[i] = __assign$4(__assign$4({}, list[i]), { ma5: undefined });
565
+ res[i] = __assign$3(__assign$3({}, list[i]), { ma5: undefined });
214
566
  else {
215
567
  var sum = list
216
568
  .slice(i - 4, i + 1)
217
569
  .reduce(function (pre, current) { return pre + current.c; }, 0);
218
570
  var ma5 = Math.round((sum / 5) * 100) / 100;
219
- res[i] = __assign$4(__assign$4({}, list[i]), { ma5: ma5 });
571
+ res[i] = __assign$3(__assign$3({}, list[i]), { ma5: ma5 });
220
572
  }
221
573
  }
222
574
  return res;
@@ -230,13 +582,13 @@
230
582
  var res = [];
231
583
  for (var i = 0; i < list.length; i++) {
232
584
  if (i < 9)
233
- res[i] = __assign$4(__assign$4({}, list[i]), { ma10: undefined });
585
+ res[i] = __assign$3(__assign$3({}, list[i]), { ma10: undefined });
234
586
  else {
235
587
  var sum = list
236
588
  .slice(i - 9, i + 1)
237
589
  .reduce(function (pre, current) { return pre + current.c; }, 0);
238
590
  var ma10 = Math.round((sum / 10) * 100) / 100;
239
- res[i] = __assign$4(__assign$4({}, list[i]), { ma10: ma10 });
591
+ res[i] = __assign$3(__assign$3({}, list[i]), { ma10: ma10 });
240
592
  }
241
593
  }
242
594
  return res;
@@ -250,13 +602,13 @@
250
602
  var res = [];
251
603
  for (var i = 0; i < list.length; i++) {
252
604
  if (i < 19)
253
- res[i] = __assign$4(__assign$4({}, list[i]), { ma20: undefined });
605
+ res[i] = __assign$3(__assign$3({}, list[i]), { ma20: undefined });
254
606
  else {
255
607
  var sum = list
256
608
  .slice(i - 19, i + 1)
257
609
  .reduce(function (pre, current) { return pre + current.c; }, 0);
258
610
  var ma20 = Math.round((sum / 20) * 100) / 100;
259
- res[i] = __assign$4(__assign$4({}, list[i]), { ma20: ma20 });
611
+ res[i] = __assign$3(__assign$3({}, list[i]), { ma20: ma20 });
260
612
  }
261
613
  }
262
614
  return res;
@@ -270,13 +622,13 @@
270
622
  var res = [];
271
623
  for (var i = 0; i < list.length; i++) {
272
624
  if (i < 59)
273
- res[i] = __assign$4(__assign$4({}, list[i]), { ma60: undefined });
625
+ res[i] = __assign$3(__assign$3({}, list[i]), { ma60: undefined });
274
626
  else {
275
627
  var sum = list
276
628
  .slice(i - 59, i + 1)
277
629
  .reduce(function (pre, current) { return pre + current.c; }, 0);
278
630
  var ma60 = Math.round((sum / 60) * 100) / 100;
279
- res[i] = __assign$4(__assign$4({}, list[i]), { ma60: ma60 });
631
+ res[i] = __assign$3(__assign$3({}, list[i]), { ma60: ma60 });
280
632
  }
281
633
  }
282
634
  return res;
@@ -290,13 +642,13 @@
290
642
  var res = [];
291
643
  for (var i = 0; i < list.length; i++) {
292
644
  if (i < (self - 1))
293
- res[i] = __assign$4(__assign$4({}, list[i]), { maSelf: undefined });
645
+ res[i] = __assign$3(__assign$3({}, list[i]), { maSelf: undefined });
294
646
  else {
295
647
  var sum = list
296
648
  .slice(i - (self - 1), i + 1)
297
649
  .reduce(function (pre, current) { return pre + current.c; }, 0);
298
650
  var maSelf = Math.round((sum / self) * 100) / 100;
299
- res[i] = __assign$4(__assign$4({}, list[i]), { maSelf: maSelf });
651
+ res[i] = __assign$3(__assign$3({}, list[i]), { maSelf: maSelf });
300
652
  }
301
653
  }
302
654
  return res;
@@ -310,7 +662,7 @@
310
662
  var res = [];
311
663
  var _loop_1 = function (i) {
312
664
  if (i < 24)
313
- res[i] = __assign$4(__assign$4({}, list[i]), { ma25: undefined, bollUb: undefined, bollLb: undefined });
665
+ res[i] = __assign$3(__assign$3({}, list[i]), { ma25: undefined, bollUb: undefined, bollLb: undefined });
314
666
  else {
315
667
  // ma25
316
668
  var sumMa25 = list
@@ -326,7 +678,7 @@
326
678
  : pre;
327
679
  }, 0);
328
680
  var base = Math.round(Math.sqrt(sumBase / 25) * 100) / 100;
329
- res[i] = __assign$4(__assign$4({}, list[i]), { ma25: ma25_1, bollUb: ma25_1 + 2 * base, bollLb: ma25_1 - 2 * base });
681
+ res[i] = __assign$3(__assign$3({}, list[i]), { ma25: ma25_1, bollUb: ma25_1 + 2 * base, bollLb: ma25_1 - 2 * base });
330
682
  }
331
683
  };
332
684
  for (var i = 0; i < list.length; i++) {
@@ -338,8 +690,8 @@
338
690
  return Ma;
339
691
  }());
340
692
 
341
- var __assign$3 = (undefined && undefined.__assign) || function () {
342
- __assign$3 = Object.assign || function(t) {
693
+ var __assign$2 = (undefined && undefined.__assign) || function () {
694
+ __assign$2 = Object.assign || function(t) {
343
695
  for (var s, i = 1, n = arguments.length; i < n; i++) {
344
696
  s = arguments[i];
345
697
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -347,7 +699,7 @@
347
699
  }
348
700
  return t;
349
701
  };
350
- return __assign$3.apply(this, arguments);
702
+ return __assign$2.apply(this, arguments);
351
703
  };
352
704
  var MACD = /** @class */ (function () {
353
705
  function MACD() {
@@ -391,315 +743,97 @@
391
743
  return sum / arr.length;
392
744
  }
393
745
  });
394
- Object.defineProperty(MACD.prototype, "getEMA12", {
395
- enumerable: false,
396
- configurable: true,
397
- writable: true,
398
- value: function (list) {
399
- var start = list.slice(0, 11);
400
- var beforeEMA12 = this.getStartEMA(start);
401
- var res = [];
402
- for (var i = 0; i < list.length; i++) {
403
- if (i < 12)
404
- res[i] = __assign$3(__assign$3({}, list[i]), { EMA12: undefined });
405
- else {
406
- beforeEMA12 = (beforeEMA12 * 11) / 13 + (this.getDI(list[i]) * 2) / 13;
407
- res[i] = __assign$3(__assign$3({}, list[i]), { EMA12: beforeEMA12 });
408
- }
409
- }
410
- return res;
411
- }
412
- });
413
- Object.defineProperty(MACD.prototype, "getEMA26", {
414
- enumerable: false,
415
- configurable: true,
416
- writable: true,
417
- value: function (list) {
418
- var start = list.slice(0, 25);
419
- var beforeEMA26 = this.getStartEMA(start);
420
- var res = [];
421
- for (var i = 0; i < list.length; i++) {
422
- if (i < 26)
423
- res[i] = __assign$3(__assign$3({}, list[i]), { EMA26: undefined });
424
- else {
425
- beforeEMA26 = (beforeEMA26 * 25) / 27 + (this.getDI(list[i]) * 2) / 27;
426
- res[i] = __assign$3(__assign$3({}, list[i]), { EMA26: beforeEMA26 });
427
- }
428
- }
429
- return res;
430
- }
431
- });
432
- Object.defineProperty(MACD.prototype, "getDIF", {
433
- enumerable: false,
434
- configurable: true,
435
- writable: true,
436
- value: function (list, ResEMA12, ResEMA26) {
437
- var _a, _b;
438
- var res = [];
439
- for (var i = 0; i < list.length; i++) {
440
- if (i < 26)
441
- res[i] = __assign$3(__assign$3({}, list[i]), { DIF: undefined });
442
- else {
443
- var EMA12 = ((_a = ResEMA12 === null || ResEMA12 === void 0 ? void 0 : ResEMA12[i]) === null || _a === void 0 ? void 0 : _a["EMA12"]) && ResEMA12[i]["EMA12"];
444
- var EMA26 = ((_b = ResEMA26 === null || ResEMA26 === void 0 ? void 0 : ResEMA26[i]) === null || _b === void 0 ? void 0 : _b["EMA26"]) && ResEMA26[i]["EMA26"];
445
- var DIF = EMA12 - EMA26;
446
- res[i] = __assign$3(__assign$3({}, list[i]), { DIF: DIF });
447
- }
448
- }
449
- return res;
450
- }
451
- });
452
- Object.defineProperty(MACD.prototype, "getMACD9", {
453
- enumerable: false,
454
- configurable: true,
455
- writable: true,
456
- value: function (list, DIF) {
457
- var res = [];
458
- var beforeMACD9 = 0;
459
- for (var i = 0; i < list.length; i++) {
460
- if (i < 26)
461
- res[i] = __assign$3(__assign$3({}, list[i]), { MACD9: undefined, OSC: undefined });
462
- else if (i === 26) {
463
- var MACD9 = DIF.slice(26, 34)
464
- .map(function (item) { return ((item === null || item === void 0 ? void 0 : item.DIF) ? item["DIF"] : 0); })
465
- .reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
466
- var OSC = DIF[i]["DIF"] - MACD9;
467
- res[26] = __assign$3(__assign$3({}, list[i]), { MACD9: MACD9, OSC: OSC });
468
- beforeMACD9 = MACD9;
469
- }
470
- else {
471
- var MACD9 = beforeMACD9 + ((DIF[i]["DIF"] - beforeMACD9) * 2) / 10;
472
- var OSC = DIF[i]["DIF"] - MACD9;
473
- res[i] = __assign$3(__assign$3({}, list[i]), { MACD9: MACD9, OSC: OSC });
474
- beforeMACD9 = MACD9;
475
- }
476
- }
477
- return res;
478
- }
479
- });
480
- return MACD;
481
- }());
482
-
483
- var __assign$2 = (undefined && undefined.__assign) || function () {
484
- __assign$2 = Object.assign || function(t) {
485
- for (var s, i = 1, n = arguments.length; i < n; i++) {
486
- s = arguments[i];
487
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
488
- t[p] = s[p];
489
- }
490
- return t;
491
- };
492
- return __assign$2.apply(this, arguments);
493
- };
494
- var Rsi = /** @class */ (function () {
495
- function Rsi() {
496
- }
497
- Object.defineProperty(Rsi.prototype, "getAllRsi", {
498
- enumerable: false,
499
- configurable: true,
500
- writable: true,
501
- value: function (list) {
502
- var res = [];
503
- var rsi6 = this.getRsi6(list);
504
- var rsi12 = this.getRsi12(list);
505
- for (var i = 0; i < list.length; i++) {
506
- res[i] = Object.assign(list[i], rsi6[i], rsi12[i]);
507
- }
508
- return res;
509
- }
510
- });
511
- Object.defineProperty(Rsi.prototype, "getRsi6", {
512
- enumerable: false,
513
- configurable: true,
514
- writable: true,
515
- value: function (list) {
516
- var res = [];
517
- // 前5筆
518
- for (var i = 0; i < 5; i++) {
519
- res[i] = __assign$2(__assign$2({}, list[i]), { rsi6: undefined });
520
- }
521
- // 第6筆Rsi
522
- var beforeUpAvg = this.getStartUpAvg(list, 6);
523
- var beforeDownAvg = this.getStartDownAvg(list, 6);
524
- var firstRsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
525
- res[5] = __assign$2(__assign$2({}, list[5]), { rsi6: firstRsi6 });
526
- // else
527
- for (var i = 6; i < list.length; i++) {
528
- var minusU = 0;
529
- var minusD = 0;
530
- var minusC = list[i]["c"] - list[i - 1]["c"];
531
- if (minusC > 0) {
532
- minusU = minusC;
533
- }
534
- else {
535
- minusD = minusC;
536
- }
537
- beforeUpAvg = (beforeUpAvg * 5) / 6 + minusU / 6;
538
- beforeDownAvg = (beforeDownAvg * 5) / 6 + Math.abs(minusD) / 6;
539
- var rsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
540
- res[i] = __assign$2(__assign$2({}, list[i]), { rsi6: Math.round(rsi6 * 100) / 100 });
541
- }
542
- return res;
543
- }
544
- });
545
- Object.defineProperty(Rsi.prototype, "getRsi12", {
546
- enumerable: false,
547
- configurable: true,
548
- writable: true,
549
- value: function (list) {
550
- var res = [];
551
- // 前11筆
552
- for (var i = 0; i < 11; i++) {
553
- res[i] = __assign$2(__assign$2({}, list[i]), { rsi12: undefined });
554
- }
555
- // 第12筆Rsi
556
- var beforeUpAvg = this.getStartUpAvg(list, 12);
557
- var beforeDownAvg = this.getStartDownAvg(list, 12);
558
- var firstRsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
559
- res[11] = __assign$2(__assign$2({}, list[11]), { rsi12: firstRsi12 });
560
- // else
561
- for (var i = 12; i < list.length; i++) {
562
- var minusU = 0;
563
- var minusD = 0;
564
- var minusC = list[i]["c"] - list[i - 1]["c"];
565
- if (minusC > 0) {
566
- minusU = minusC;
567
- }
568
- else {
569
- minusD = minusC;
570
- }
571
- beforeUpAvg = (beforeUpAvg * 11) / 12 + minusU / 12;
572
- beforeDownAvg = (beforeDownAvg * 11) / 12 + Math.abs(minusD) / 12;
573
- var rsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
574
- res[i] = __assign$2(__assign$2({}, list[i]), { rsi12: Math.round(rsi12 * 100) / 100 });
575
- }
576
- return res;
577
- }
578
- });
579
- Object.defineProperty(Rsi.prototype, "getStartUpAvg", {
580
- enumerable: false,
581
- configurable: true,
582
- writable: true,
583
- value: function (list, count) {
584
- var start = list.slice(0, 5);
585
- var sum = 0;
586
- for (var i = 1; i < start.length; i++) {
587
- var minus = start[i]["c"] - start[i - 1]["c"];
588
- if (minus > 0) {
589
- sum += minus;
590
- }
591
- }
592
- return sum / count;
593
- }
594
- });
595
- Object.defineProperty(Rsi.prototype, "getStartDownAvg", {
596
- enumerable: false,
597
- configurable: true,
598
- writable: true,
599
- value: function (list, count) {
600
- var start = list.slice(0, 5);
601
- var sum = 0;
602
- for (var i = 1; i < start.length; i++) {
603
- var minus = start[i]["c"] - start[i - 1]["c"];
604
- if (minus < 0) {
605
- sum += minus;
606
- }
607
- }
608
- return Math.abs(sum / count);
609
- }
610
- });
611
- Object.defineProperty(Rsi.prototype, "getRsi", {
746
+ Object.defineProperty(MACD.prototype, "getEMA12", {
612
747
  enumerable: false,
613
748
  configurable: true,
614
749
  writable: true,
615
- value: function (UpAvg, DownAvg) {
616
- var res = 0;
617
- if (UpAvg + DownAvg !== 0) {
618
- res = (UpAvg / (UpAvg + DownAvg)) * 100;
750
+ value: function (list) {
751
+ var start = list.slice(0, 11);
752
+ var beforeEMA12 = this.getStartEMA(start);
753
+ var res = [];
754
+ for (var i = 0; i < list.length; i++) {
755
+ if (i < 12)
756
+ res[i] = __assign$2(__assign$2({}, list[i]), { EMA12: undefined });
757
+ else {
758
+ beforeEMA12 = (beforeEMA12 * 11) / 13 + (this.getDI(list[i]) * 2) / 13;
759
+ res[i] = __assign$2(__assign$2({}, list[i]), { EMA12: beforeEMA12 });
760
+ }
619
761
  }
620
762
  return res;
621
763
  }
622
764
  });
623
- return Rsi;
624
- }());
625
-
626
- var __assign$1 = (undefined && undefined.__assign) || function () {
627
- __assign$1 = Object.assign || function(t) {
628
- for (var s, i = 1, n = arguments.length; i < n; i++) {
629
- s = arguments[i];
630
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
631
- t[p] = s[p];
632
- }
633
- return t;
634
- };
635
- return __assign$1.apply(this, arguments);
636
- };
637
- var Williams = /** @class */ (function () {
638
- function Williams() {
639
- }
640
- Object.defineProperty(Williams.prototype, "getAllWillams", {
765
+ Object.defineProperty(MACD.prototype, "getEMA26", {
641
766
  enumerable: false,
642
767
  configurable: true,
643
768
  writable: true,
644
769
  value: function (list) {
770
+ var start = list.slice(0, 25);
771
+ var beforeEMA26 = this.getStartEMA(start);
645
772
  var res = [];
646
- var williams9 = this.getWilliams9(list);
647
- var williams18 = this.getWilliams18(list);
648
773
  for (var i = 0; i < list.length; i++) {
649
- res[i] = Object.assign(list[i], williams9[i], williams18[i]);
774
+ if (i < 26)
775
+ res[i] = __assign$2(__assign$2({}, list[i]), { EMA26: undefined });
776
+ else {
777
+ beforeEMA26 = (beforeEMA26 * 25) / 27 + (this.getDI(list[i]) * 2) / 27;
778
+ res[i] = __assign$2(__assign$2({}, list[i]), { EMA26: beforeEMA26 });
779
+ }
650
780
  }
651
781
  return res;
652
782
  }
653
783
  });
654
- Object.defineProperty(Williams.prototype, "getWilliams9", {
784
+ Object.defineProperty(MACD.prototype, "getDIF", {
655
785
  enumerable: false,
656
786
  configurable: true,
657
787
  writable: true,
658
- value: function (list) {
788
+ value: function (list, ResEMA12, ResEMA26) {
789
+ var _a, _b;
659
790
  var res = [];
660
791
  for (var i = 0; i < list.length; i++) {
661
- if (i < 9)
662
- res[i] = __assign$1(__assign$1({}, list[i]), { williams9: undefined });
792
+ if (i < 26)
793
+ res[i] = __assign$2(__assign$2({}, list[i]), { DIF: undefined });
663
794
  else {
664
- var maxList = list.slice(i - 8, i).map(function (item) { return item["h"]; });
665
- var minList = list.slice(i - 8, i).map(function (item) { return item["l"]; });
666
- var max = Math.max.apply(Math, maxList);
667
- var min = Math.min.apply(Math, minList);
668
- var close_1 = list[i]["c"];
669
- var williams9 = ((max - close_1) / (max - min)) * -100;
670
- res[i] = __assign$1(__assign$1({}, list[i]), { williams9: Math.round(williams9 * 100) / 100 });
795
+ var EMA12 = ((_a = ResEMA12 === null || ResEMA12 === void 0 ? void 0 : ResEMA12[i]) === null || _a === void 0 ? void 0 : _a["EMA12"]) && ResEMA12[i]["EMA12"];
796
+ var EMA26 = ((_b = ResEMA26 === null || ResEMA26 === void 0 ? void 0 : ResEMA26[i]) === null || _b === void 0 ? void 0 : _b["EMA26"]) && ResEMA26[i]["EMA26"];
797
+ var DIF = EMA12 - EMA26;
798
+ res[i] = __assign$2(__assign$2({}, list[i]), { DIF: DIF });
671
799
  }
672
800
  }
673
801
  return res;
674
802
  }
675
803
  });
676
- Object.defineProperty(Williams.prototype, "getWilliams18", {
804
+ Object.defineProperty(MACD.prototype, "getMACD9", {
677
805
  enumerable: false,
678
806
  configurable: true,
679
807
  writable: true,
680
- value: function (list) {
808
+ value: function (list, DIF) {
681
809
  var res = [];
810
+ var beforeMACD9 = 0;
682
811
  for (var i = 0; i < list.length; i++) {
683
- if (i < 18)
684
- res[i] = __assign$1(__assign$1({}, list[i]), { williams9: undefined });
812
+ if (i < 26)
813
+ res[i] = __assign$2(__assign$2({}, list[i]), { MACD9: undefined, OSC: undefined });
814
+ else if (i === 26) {
815
+ var MACD9 = DIF.slice(26, 34)
816
+ .map(function (item) { return ((item === null || item === void 0 ? void 0 : item.DIF) ? item["DIF"] : 0); })
817
+ .reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
818
+ var OSC = DIF[i]["DIF"] - MACD9;
819
+ res[26] = __assign$2(__assign$2({}, list[i]), { MACD9: MACD9, OSC: OSC });
820
+ beforeMACD9 = MACD9;
821
+ }
685
822
  else {
686
- var maxList = list.slice(i - 17, i).map(function (item) { return item["h"]; });
687
- var minList = list.slice(i - 17, i).map(function (item) { return item["l"]; });
688
- var max = Math.max.apply(Math, maxList);
689
- var min = Math.min.apply(Math, minList);
690
- var close_2 = list[i]["c"];
691
- var williams18 = ((max - close_2) / (max - min)) * -100;
692
- res[i] = __assign$1(__assign$1({}, list[i]), { williams18: Math.round(williams18 * 100) / 100 });
823
+ var MACD9 = beforeMACD9 + ((DIF[i]["DIF"] - beforeMACD9) * 2) / 10;
824
+ var OSC = DIF[i]["DIF"] - MACD9;
825
+ res[i] = __assign$2(__assign$2({}, list[i]), { MACD9: MACD9, OSC: OSC });
826
+ beforeMACD9 = MACD9;
693
827
  }
694
828
  }
695
829
  return res;
696
830
  }
697
831
  });
698
- return Williams;
832
+ return MACD;
699
833
  }());
700
834
 
701
- var __assign = (undefined && undefined.__assign) || function () {
702
- __assign = Object.assign || function(t) {
835
+ var __assign$1 = (undefined && undefined.__assign) || function () {
836
+ __assign$1 = Object.assign || function(t) {
703
837
  for (var s, i = 1, n = arguments.length; i < n; i++) {
704
838
  s = arguments[i];
705
839
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
@@ -707,281 +841,138 @@
707
841
  }
708
842
  return t;
709
843
  };
710
- return __assign.apply(this, arguments);
844
+ return __assign$1.apply(this, arguments);
711
845
  };
712
- function addDetail(obj, list, detail) {
713
- if (detail)
714
- return __assign(__assign({}, obj), { detail: list });
715
- else
716
- return __assign({}, obj);
717
- }
718
- function getWeekLine(list, detail) {
719
- var res = [];
720
- var collectWeekData = [];
721
- list.forEach(function (item, index) {
722
- var year = item["t"]
723
- .toString()
724
- .replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3");
725
- var day = new Date(year).getDay();
726
- switch (day) {
727
- case 6:
728
- break;
729
- case 5: {
730
- collectWeekData.push(item);
731
- var obj = {
732
- o: collectWeekData[0]["o"],
733
- c: collectWeekData[collectWeekData.length - 1]["c"],
734
- t: collectWeekData[collectWeekData.length - 1]["t"],
735
- h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
736
- l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
737
- };
738
- res.push(addDetail(obj, collectWeekData, detail));
739
- collectWeekData = [];
740
- break;
846
+ var Rsi = /** @class */ (function () {
847
+ function Rsi() {
848
+ }
849
+ Object.defineProperty(Rsi.prototype, "getAllRsi", {
850
+ enumerable: false,
851
+ configurable: true,
852
+ writable: true,
853
+ value: function (list) {
854
+ var res = [];
855
+ var rsi6 = this.getRsi6(list);
856
+ var rsi12 = this.getRsi12(list);
857
+ for (var i = 0; i < list.length; i++) {
858
+ res[i] = Object.assign(list[i], rsi6[i], rsi12[i]);
741
859
  }
742
- case 1:
743
- if (collectWeekData.length !== 0) {
744
- var obj = {
745
- o: collectWeekData[0]["o"],
746
- c: collectWeekData[collectWeekData.length - 1]["c"],
747
- t: collectWeekData[collectWeekData.length - 1]["t"],
748
- h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
749
- l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
750
- };
751
- res.push(addDetail(obj, collectWeekData, detail));
752
- }
753
- collectWeekData = [];
754
- collectWeekData.push(item);
755
- break;
756
- default:
757
- collectWeekData.push(item);
758
- if (list.length - 1 === index) {
759
- var obj = {
760
- o: collectWeekData[0]["o"],
761
- c: collectWeekData[collectWeekData.length - 1]["c"],
762
- t: collectWeekData[collectWeekData.length - 1]["t"],
763
- h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
764
- l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
765
- };
766
- res.push(addDetail(obj, collectWeekData, detail));
767
- }
768
- break;
860
+ return res;
769
861
  }
770
862
  });
771
- return res;
772
- }
773
-
774
- var Gold = /** @class */ (function () {
775
- function Gold() {
776
- }
777
- Object.defineProperty(Gold.prototype, "findHighPoint", {
863
+ Object.defineProperty(Rsi.prototype, "getRsi6", {
778
864
  enumerable: false,
779
865
  configurable: true,
780
866
  writable: true,
781
867
  value: function (list) {
782
- var weekLine = getWeekLine(list, true);
783
- var hightPoints = {};
784
- var _loop_1 = function (i) {
785
- var hightPoint = undefined;
786
- switch (i) {
787
- case 0:
788
- {
789
- var h1 = weekLine[i].h;
790
- var h2 = weekLine[i + 1].h;
791
- var h3 = weekLine[i + 2].h;
792
- if (h1 > h2 && h1 > h3)
793
- hightPoint = weekLine[i];
794
- }
795
- break;
796
- case 1:
797
- {
798
- var h1 = weekLine[i - 1].h;
799
- var h2 = weekLine[i].h;
800
- var h3 = weekLine[i + 1].h;
801
- var h4 = weekLine[i + 2].h;
802
- if (h2 > h1 && h2 > h3 && h2 > h4)
803
- hightPoint = weekLine[i];
804
- }
805
- break;
806
- case weekLine.length - 3:
807
- {
808
- var h1 = weekLine[i - 2].h;
809
- var h2 = weekLine[i - 1].h;
810
- var h3 = weekLine[i].h;
811
- var h4 = weekLine[i + 1].h;
812
- var h5 = weekLine[i + 2].h;
813
- if (h3 > h1 && h3 > h2 && h3 > h4 && h3 > h5)
814
- hightPoint = weekLine[i];
815
- }
816
- break;
817
- case weekLine.length - 2:
818
- {
819
- var h1 = weekLine[i - 2].h;
820
- var h2 = weekLine[i - 1].h;
821
- var h3 = weekLine[i].h;
822
- var h4 = weekLine[i + 1].h;
823
- if (h3 > h1 && h3 > h2 && h3 > h4)
824
- hightPoint = weekLine[i];
825
- }
826
- break;
827
- case weekLine.length - 1:
828
- {
829
- var h1 = weekLine[i - 2].h;
830
- var h2 = weekLine[i - 1].h;
831
- var h3 = weekLine[i].h;
832
- if (h3 > h2 && h3 > h1)
833
- hightPoint = weekLine[i];
834
- }
835
- break;
836
- default:
837
- {
838
- var h1 = weekLine[i - 2].h;
839
- var h2 = weekLine[i - 1].h;
840
- var h3 = weekLine[i].h;
841
- var h4 = weekLine[i + 1].h;
842
- var h5 = weekLine[i + 2].h;
843
- var h6 = weekLine[i + 3].h;
844
- if (h3 > h2 && h3 > h4 && h3 > h5 && h3 > h6)
845
- hightPoint = weekLine[i];
846
- if (h3 > h1 && h3 > h2 && h3 > h4 && h3 > h5)
847
- hightPoint = weekLine[i];
848
- }
849
- break;
850
- }
851
- if (hightPoint && hightPoint["detail"]) {
852
- var h_1 = hightPoint.h;
853
- var theHight = hightPoint.detail.find(function (item) { return item.h === h_1; });
854
- delete hightPoint.detail;
855
- if (theHight)
856
- hightPoints[theHight === null || theHight === void 0 ? void 0 : theHight.t] = theHight;
868
+ var res = [];
869
+ // 前5筆
870
+ for (var i = 0; i < 5; i++) {
871
+ res[i] = __assign$1(__assign$1({}, list[i]), { rsi6: undefined });
872
+ }
873
+ // 第6筆Rsi
874
+ var beforeUpAvg = this.getStartUpAvg(list, 6);
875
+ var beforeDownAvg = this.getStartDownAvg(list, 6);
876
+ var firstRsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
877
+ res[5] = __assign$1(__assign$1({}, list[5]), { rsi6: firstRsi6 });
878
+ // else
879
+ for (var i = 6; i < list.length; i++) {
880
+ var minusU = 0;
881
+ var minusD = 0;
882
+ var minusC = list[i]["c"] - list[i - 1]["c"];
883
+ if (minusC > 0) {
884
+ minusU = minusC;
857
885
  }
858
- };
859
- for (var i = 0; i < weekLine.length; i++) {
860
- _loop_1(i);
886
+ else {
887
+ minusD = minusC;
888
+ }
889
+ beforeUpAvg = (beforeUpAvg * 5) / 6 + minusU / 6;
890
+ beforeDownAvg = (beforeDownAvg * 5) / 6 + Math.abs(minusD) / 6;
891
+ var rsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
892
+ res[i] = __assign$1(__assign$1({}, list[i]), { rsi6: Math.round(rsi6 * 100) / 100 });
861
893
  }
862
- return hightPoints;
894
+ return res;
863
895
  }
864
896
  });
865
- Object.defineProperty(Gold.prototype, "findLowPoint", {
897
+ Object.defineProperty(Rsi.prototype, "getRsi12", {
866
898
  enumerable: false,
867
899
  configurable: true,
868
900
  writable: true,
869
901
  value: function (list) {
870
- var weekLine = getWeekLine(list, true);
871
- var lowPoints = {};
872
- var _loop_2 = function (i) {
873
- var lowPoint = undefined;
874
- switch (i) {
875
- case 0:
876
- {
877
- var l1 = weekLine[i].l;
878
- var l2 = weekLine[i + 1].l;
879
- var l3 = weekLine[i + 2].l;
880
- if (l1 < l2 && l1 < l3)
881
- lowPoint = weekLine[i];
882
- }
883
- break;
884
- case 1:
885
- {
886
- var l1 = weekLine[i - 1].l;
887
- var l2 = weekLine[i].l;
888
- var l3 = weekLine[i + 1].l;
889
- var l4 = weekLine[i + 2].l;
890
- if (l2 < l1 && l2 < l3 && l2 < l4)
891
- lowPoint = weekLine[i];
892
- }
893
- break;
894
- case weekLine.length - 3:
895
- {
896
- var l1 = weekLine[i - 2].l;
897
- var l2 = weekLine[i - 1].l;
898
- var l3 = weekLine[i].l;
899
- var l4 = weekLine[i + 1].l;
900
- var l5 = weekLine[i + 2].l;
901
- if (l3 < l1 && l3 < l2 && l3 < l4 && l3 < l5)
902
- lowPoint = weekLine[i];
903
- }
904
- break;
905
- case weekLine.length - 2:
906
- {
907
- var l1 = weekLine[i - 2].l;
908
- var l2 = weekLine[i - 1].l;
909
- var l3 = weekLine[i].l;
910
- var l4 = weekLine[i + 1].l;
911
- if (l3 < l1 && l3 < l2 && l3 < l4)
912
- lowPoint = weekLine[i];
913
- }
914
- break;
915
- case weekLine.length - 1:
916
- {
917
- var l1 = weekLine[i - 2].l;
918
- var l2 = weekLine[i - 1].l;
919
- var l3 = weekLine[i].l;
920
- if (l3 < l2 && l3 < l1)
921
- lowPoint = weekLine[i];
922
- }
923
- break;
924
- default:
925
- {
926
- var l1 = weekLine[i - 2].l;
927
- var l2 = weekLine[i - 1].l;
928
- var l3 = weekLine[i].l;
929
- var l4 = weekLine[i + 1].l;
930
- var l5 = weekLine[i + 2].l;
931
- var l6 = weekLine[i + 3].l;
932
- if (l3 < l2 && l3 < l4 && l3 < l5 && l3 < l6)
933
- lowPoint = weekLine[i];
934
- if (l3 < l1 && l3 < l2 && l3 < l4 && l3 < l5)
935
- lowPoint = weekLine[i];
936
- }
937
- break;
902
+ var res = [];
903
+ // 前11筆
904
+ for (var i = 0; i < 11; i++) {
905
+ res[i] = __assign$1(__assign$1({}, list[i]), { rsi12: undefined });
906
+ }
907
+ // 第12筆Rsi
908
+ var beforeUpAvg = this.getStartUpAvg(list, 12);
909
+ var beforeDownAvg = this.getStartDownAvg(list, 12);
910
+ var firstRsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
911
+ res[11] = __assign$1(__assign$1({}, list[11]), { rsi12: firstRsi12 });
912
+ // else
913
+ for (var i = 12; i < list.length; i++) {
914
+ var minusU = 0;
915
+ var minusD = 0;
916
+ var minusC = list[i]["c"] - list[i - 1]["c"];
917
+ if (minusC > 0) {
918
+ minusU = minusC;
938
919
  }
939
- if (lowPoint && lowPoint["detail"]) {
940
- var l_1 = lowPoint.l;
941
- var theLow = lowPoint.detail.find(function (item) { return item.l === l_1; });
942
- delete lowPoint.detail;
943
- if (theLow)
944
- lowPoints[theLow === null || theLow === void 0 ? void 0 : theLow.t] = theLow;
920
+ else {
921
+ minusD = minusC;
945
922
  }
946
- };
947
- for (var i = 0; i < weekLine.length; i++) {
948
- _loop_2(i);
923
+ beforeUpAvg = (beforeUpAvg * 11) / 12 + minusU / 12;
924
+ beforeDownAvg = (beforeDownAvg * 11) / 12 + Math.abs(minusD) / 12;
925
+ var rsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
926
+ res[i] = __assign$1(__assign$1({}, list[i]), { rsi12: Math.round(rsi12 * 100) / 100 });
949
927
  }
950
- return lowPoints;
928
+ return res;
951
929
  }
952
930
  });
953
- Object.defineProperty(Gold.prototype, "getGold", {
931
+ Object.defineProperty(Rsi.prototype, "getStartUpAvg", {
954
932
  enumerable: false,
955
933
  configurable: true,
956
934
  writable: true,
957
- value: function (list) {
958
- var hightPoints = this.findHighPoint(list);
959
- var lowPoints = this.findLowPoint(list);
960
- var lastHightPointDate = Object.keys(hightPoints).slice(-1)[0] !==
961
- list[list.length - 1].t.toString()
962
- ? Object.keys(hightPoints).slice(-1)[0]
963
- : Object.keys(hightPoints).slice(-2)[0];
964
- var lastLowPointDate = Object.keys(lowPoints).slice(-1)[0] !== list[list.length - 1].t.toString()
965
- ? Object.keys(lowPoints).slice(-1)[0]
966
- : Object.keys(lowPoints).slice(-2)[0];
967
- var highestPoint = hightPoints[lastHightPointDate].h;
968
- var lowestPoint = lowPoints[lastLowPointDate].l;
969
- var res = {
970
- highestPointDate: parseInt(lastHightPointDate),
971
- lowestPointDate: parseInt(lastLowPointDate),
972
- lowestPoint: lowestPoint,
973
- highestPoint: highestPoint,
974
- superStrong: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.191) * 100) / 100,
975
- strong: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.382) * 100) / 100,
976
- middle: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.5) * 100) /
977
- 100,
978
- weak: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.618) * 100) / 100,
979
- superWeak: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.809) * 100) / 100,
980
- };
935
+ value: function (list, count) {
936
+ var start = list.slice(0, 5);
937
+ var sum = 0;
938
+ for (var i = 1; i < start.length; i++) {
939
+ var minus = start[i]["c"] - start[i - 1]["c"];
940
+ if (minus > 0) {
941
+ sum += minus;
942
+ }
943
+ }
944
+ return sum / count;
945
+ }
946
+ });
947
+ Object.defineProperty(Rsi.prototype, "getStartDownAvg", {
948
+ enumerable: false,
949
+ configurable: true,
950
+ writable: true,
951
+ value: function (list, count) {
952
+ var start = list.slice(0, 5);
953
+ var sum = 0;
954
+ for (var i = 1; i < start.length; i++) {
955
+ var minus = start[i]["c"] - start[i - 1]["c"];
956
+ if (minus < 0) {
957
+ sum += minus;
958
+ }
959
+ }
960
+ return Math.abs(sum / count);
961
+ }
962
+ });
963
+ Object.defineProperty(Rsi.prototype, "getRsi", {
964
+ enumerable: false,
965
+ configurable: true,
966
+ writable: true,
967
+ value: function (UpAvg, DownAvg) {
968
+ var res = 0;
969
+ if (UpAvg + DownAvg !== 0) {
970
+ res = (UpAvg / (UpAvg + DownAvg)) * 100;
971
+ }
981
972
  return res;
982
973
  }
983
974
  });
984
- return Gold;
975
+ return Rsi;
985
976
  }());
986
977
 
987
978
  var Mode;
@@ -1039,7 +1030,91 @@
1039
1030
  }
1040
1031
  }
1041
1032
 
1033
+ var __assign = (undefined && undefined.__assign) || function () {
1034
+ __assign = Object.assign || function(t) {
1035
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
1036
+ s = arguments[i];
1037
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
1038
+ t[p] = s[p];
1039
+ }
1040
+ return t;
1041
+ };
1042
+ return __assign.apply(this, arguments);
1043
+ };
1044
+ var Williams = /** @class */ (function () {
1045
+ function Williams() {
1046
+ }
1047
+ Object.defineProperty(Williams.prototype, "getAllWillams", {
1048
+ enumerable: false,
1049
+ configurable: true,
1050
+ writable: true,
1051
+ value: function (list) {
1052
+ var res = [];
1053
+ var williams9 = this.getWilliams9(list);
1054
+ var williams18 = this.getWilliams18(list);
1055
+ for (var i = 0; i < list.length; i++) {
1056
+ res[i] = Object.assign(list[i], williams9[i], williams18[i]);
1057
+ }
1058
+ return res;
1059
+ }
1060
+ });
1061
+ Object.defineProperty(Williams.prototype, "getWilliams9", {
1062
+ enumerable: false,
1063
+ configurable: true,
1064
+ writable: true,
1065
+ value: function (list) {
1066
+ var res = [];
1067
+ for (var i = 0; i < list.length; i++) {
1068
+ if (i < 9)
1069
+ res[i] = __assign(__assign({}, list[i]), { williams9: undefined });
1070
+ else {
1071
+ var maxList = list.slice(i - 8, i).map(function (item) { return item["h"]; });
1072
+ var minList = list.slice(i - 8, i).map(function (item) { return item["l"]; });
1073
+ var max = Math.max.apply(Math, maxList);
1074
+ var min = Math.min.apply(Math, minList);
1075
+ var close_1 = list[i]["c"];
1076
+ var williams9 = ((max - close_1) / (max - min)) * -100;
1077
+ res[i] = __assign(__assign({}, list[i]), { williams9: Math.round(williams9 * 100) / 100 });
1078
+ }
1079
+ }
1080
+ return res;
1081
+ }
1082
+ });
1083
+ Object.defineProperty(Williams.prototype, "getWilliams18", {
1084
+ enumerable: false,
1085
+ configurable: true,
1086
+ writable: true,
1087
+ value: function (list) {
1088
+ var res = [];
1089
+ for (var i = 0; i < list.length; i++) {
1090
+ if (i < 18)
1091
+ res[i] = __assign(__assign({}, list[i]), { williams9: undefined });
1092
+ else {
1093
+ var maxList = list.slice(i - 17, i).map(function (item) { return item["h"]; });
1094
+ var minList = list.slice(i - 17, i).map(function (item) { return item["l"]; });
1095
+ var max = Math.max.apply(Math, maxList);
1096
+ var min = Math.min.apply(Math, minList);
1097
+ var close_2 = list[i]["c"];
1098
+ var williams18 = ((max - close_2) / (max - min)) * -100;
1099
+ res[i] = __assign(__assign({}, list[i]), { williams18: Math.round(williams18 * 100) / 100 });
1100
+ }
1101
+ }
1102
+ return res;
1103
+ }
1104
+ });
1105
+ return Williams;
1106
+ }());
1107
+
1108
+ function add(a, b) {
1109
+ return a + b;
1110
+ }
1111
+
1112
+ function minus(a, b) {
1113
+ return a - b;
1114
+ }
1115
+
1042
1116
  exports.Gold = Gold;
1117
+ exports.Kd = Kd;
1043
1118
  exports.Ma = Ma;
1044
1119
  exports.Macd = MACD;
1045
1120
  exports.Rsi = Rsi;