@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/cjs/index.d.ts +6 -5
- package/dist/cjs/index.js +12 -10
- package/dist/cjs/stockSkills/kd.d.ts +50 -0
- package/dist/cjs/stockSkills/kd.js +76 -0
- package/dist/cjs/stockSkills/kd.test.d.ts +1 -0
- package/dist/cjs/stockSkills/kd.test.js +33 -0
- package/dist/esm/index.d.ts +6 -5
- package/dist/esm/index.js +6 -5
- package/dist/esm/stockSkills/kd.d.ts +50 -0
- package/dist/esm/stockSkills/kd.js +74 -0
- package/dist/esm/stockSkills/kd.test.d.ts +1 -0
- package/dist/esm/stockSkills/kd.test.js +31 -0
- package/dist/umd/index.js +611 -536
- package/package.json +1 -1
package/dist/umd/index.js
CHANGED
|
@@ -163,14 +163,292 @@
|
|
|
163
163
|
return nextYearForecast;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
|
|
167
|
-
|
|
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
|
-
|
|
171
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
342
|
-
__assign$
|
|
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$
|
|
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 (
|
|
616
|
-
var
|
|
617
|
-
|
|
618
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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 <
|
|
662
|
-
res[i] = __assign$
|
|
792
|
+
if (i < 26)
|
|
793
|
+
res[i] = __assign$2(__assign$2({}, list[i]), { DIF: undefined });
|
|
663
794
|
else {
|
|
664
|
-
var
|
|
665
|
-
var
|
|
666
|
-
var
|
|
667
|
-
|
|
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(
|
|
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 <
|
|
684
|
-
res[i] = __assign$
|
|
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
|
|
687
|
-
var
|
|
688
|
-
|
|
689
|
-
|
|
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
|
|
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
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
.
|
|
724
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
783
|
-
|
|
784
|
-
var
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
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
|
-
|
|
860
|
-
|
|
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
|
|
894
|
+
return res;
|
|
863
895
|
}
|
|
864
896
|
});
|
|
865
|
-
Object.defineProperty(
|
|
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
|
|
871
|
-
|
|
872
|
-
var
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
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
|
-
|
|
940
|
-
|
|
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
|
-
|
|
948
|
-
|
|
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
|
|
928
|
+
return res;
|
|
951
929
|
}
|
|
952
930
|
});
|
|
953
|
-
Object.defineProperty(
|
|
931
|
+
Object.defineProperty(Rsi.prototype, "getStartUpAvg", {
|
|
954
932
|
enumerable: false,
|
|
955
933
|
configurable: true,
|
|
956
934
|
writable: true,
|
|
957
|
-
value: function (list) {
|
|
958
|
-
var
|
|
959
|
-
var
|
|
960
|
-
var
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
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
|
|
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;
|