@ch20026103/anysis 0.0.2-alpha → 0.0.2-release
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 +51 -0
- package/dist/cjs/stockSkills/kd.js +71 -0
- package/dist/cjs/stockSkills/kd.test.d.ts +1 -0
- package/dist/cjs/stockSkills/kd.test.js +33 -0
- package/dist/cjs/stockSkills/test_data.test.d.ts +8 -0
- package/dist/cjs/stockSkills/test_data.test.js +626 -0
- package/dist/esm/index.d.ts +6 -5
- package/dist/esm/index.js +6 -5
- package/dist/esm/stockSkills/kd.d.ts +51 -0
- package/dist/esm/stockSkills/kd.js +69 -0
- package/dist/esm/stockSkills/kd.test.d.ts +1 -0
- package/dist/esm/stockSkills/kd.test.js +31 -0
- package/dist/esm/stockSkills/test_data.test.d.ts +8 -0
- package/dist/esm/stockSkills/test_data.test.js +625 -0
- package/dist/umd/index.js +606 -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,75 @@
|
|
|
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 - 8, 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
|
+
rsv = Math.round(rsv * 100) / 100;
|
|
481
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { rsv: rsv });
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
return res;
|
|
485
|
+
}
|
|
486
|
+
});
|
|
487
|
+
Object.defineProperty(Kd.prototype, "getKD", {
|
|
488
|
+
enumerable: false,
|
|
489
|
+
configurable: true,
|
|
490
|
+
writable: true,
|
|
491
|
+
value: function (list) {
|
|
492
|
+
var res = [];
|
|
493
|
+
var yesterdayK = 50;
|
|
494
|
+
var yesterdayD = 50;
|
|
495
|
+
for (var i = 0; i < list.length; i++) {
|
|
496
|
+
if (i < 8)
|
|
497
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { rsv: undefined, k: undefined, d: undefined, "k-d": undefined });
|
|
498
|
+
else {
|
|
499
|
+
var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
|
|
500
|
+
var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
|
|
501
|
+
var close_2 = list[i].c;
|
|
502
|
+
var rsv = ((close_2 - low) / (hight - low)) * 100;
|
|
503
|
+
rsv = Math.round(rsv * 100) / 100;
|
|
504
|
+
var k = (2 / 3) * yesterdayK + (1 / 3) * rsv;
|
|
505
|
+
var d = (2 / 3) * yesterdayD + (1 / 3) * k;
|
|
506
|
+
var k_d = k - d;
|
|
507
|
+
k = Math.round(k * 100) / 100;
|
|
508
|
+
d = Math.round(d * 100) / 100;
|
|
509
|
+
k_d = Math.round(k_d * 100) / 100;
|
|
510
|
+
res[i] = __assign$4(__assign$4({}, list[i]), { rsv: rsv, k: k, d: d, "k-d": k_d });
|
|
511
|
+
yesterdayK = k;
|
|
512
|
+
yesterdayD = d;
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
return res;
|
|
516
|
+
}
|
|
517
|
+
});
|
|
518
|
+
return Kd;
|
|
519
|
+
}());
|
|
520
|
+
|
|
521
|
+
var __assign$3 = (undefined && undefined.__assign) || function () {
|
|
522
|
+
__assign$3 = Object.assign || function(t) {
|
|
523
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
524
|
+
s = arguments[i];
|
|
525
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
526
|
+
t[p] = s[p];
|
|
527
|
+
}
|
|
528
|
+
return t;
|
|
529
|
+
};
|
|
530
|
+
return __assign$3.apply(this, arguments);
|
|
531
|
+
};
|
|
185
532
|
var Ma = /** @class */ (function () {
|
|
186
533
|
function Ma() {
|
|
187
534
|
}
|
|
@@ -210,13 +557,13 @@
|
|
|
210
557
|
var res = [];
|
|
211
558
|
for (var i = 0; i < list.length; i++) {
|
|
212
559
|
if (i < 4)
|
|
213
|
-
res[i] = __assign$
|
|
560
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { ma5: undefined });
|
|
214
561
|
else {
|
|
215
562
|
var sum = list
|
|
216
563
|
.slice(i - 4, i + 1)
|
|
217
564
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
218
565
|
var ma5 = Math.round((sum / 5) * 100) / 100;
|
|
219
|
-
res[i] = __assign$
|
|
566
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { ma5: ma5 });
|
|
220
567
|
}
|
|
221
568
|
}
|
|
222
569
|
return res;
|
|
@@ -230,13 +577,13 @@
|
|
|
230
577
|
var res = [];
|
|
231
578
|
for (var i = 0; i < list.length; i++) {
|
|
232
579
|
if (i < 9)
|
|
233
|
-
res[i] = __assign$
|
|
580
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { ma10: undefined });
|
|
234
581
|
else {
|
|
235
582
|
var sum = list
|
|
236
583
|
.slice(i - 9, i + 1)
|
|
237
584
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
238
585
|
var ma10 = Math.round((sum / 10) * 100) / 100;
|
|
239
|
-
res[i] = __assign$
|
|
586
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { ma10: ma10 });
|
|
240
587
|
}
|
|
241
588
|
}
|
|
242
589
|
return res;
|
|
@@ -250,13 +597,13 @@
|
|
|
250
597
|
var res = [];
|
|
251
598
|
for (var i = 0; i < list.length; i++) {
|
|
252
599
|
if (i < 19)
|
|
253
|
-
res[i] = __assign$
|
|
600
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { ma20: undefined });
|
|
254
601
|
else {
|
|
255
602
|
var sum = list
|
|
256
603
|
.slice(i - 19, i + 1)
|
|
257
604
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
258
605
|
var ma20 = Math.round((sum / 20) * 100) / 100;
|
|
259
|
-
res[i] = __assign$
|
|
606
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { ma20: ma20 });
|
|
260
607
|
}
|
|
261
608
|
}
|
|
262
609
|
return res;
|
|
@@ -270,13 +617,13 @@
|
|
|
270
617
|
var res = [];
|
|
271
618
|
for (var i = 0; i < list.length; i++) {
|
|
272
619
|
if (i < 59)
|
|
273
|
-
res[i] = __assign$
|
|
620
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { ma60: undefined });
|
|
274
621
|
else {
|
|
275
622
|
var sum = list
|
|
276
623
|
.slice(i - 59, i + 1)
|
|
277
624
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
278
625
|
var ma60 = Math.round((sum / 60) * 100) / 100;
|
|
279
|
-
res[i] = __assign$
|
|
626
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { ma60: ma60 });
|
|
280
627
|
}
|
|
281
628
|
}
|
|
282
629
|
return res;
|
|
@@ -290,13 +637,13 @@
|
|
|
290
637
|
var res = [];
|
|
291
638
|
for (var i = 0; i < list.length; i++) {
|
|
292
639
|
if (i < (self - 1))
|
|
293
|
-
res[i] = __assign$
|
|
640
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { maSelf: undefined });
|
|
294
641
|
else {
|
|
295
642
|
var sum = list
|
|
296
643
|
.slice(i - (self - 1), i + 1)
|
|
297
644
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
298
645
|
var maSelf = Math.round((sum / self) * 100) / 100;
|
|
299
|
-
res[i] = __assign$
|
|
646
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { maSelf: maSelf });
|
|
300
647
|
}
|
|
301
648
|
}
|
|
302
649
|
return res;
|
|
@@ -310,7 +657,7 @@
|
|
|
310
657
|
var res = [];
|
|
311
658
|
var _loop_1 = function (i) {
|
|
312
659
|
if (i < 24)
|
|
313
|
-
res[i] = __assign$
|
|
660
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { ma25: undefined, bollUb: undefined, bollLb: undefined });
|
|
314
661
|
else {
|
|
315
662
|
// ma25
|
|
316
663
|
var sumMa25 = list
|
|
@@ -326,7 +673,7 @@
|
|
|
326
673
|
: pre;
|
|
327
674
|
}, 0);
|
|
328
675
|
var base = Math.round(Math.sqrt(sumBase / 25) * 100) / 100;
|
|
329
|
-
res[i] = __assign$
|
|
676
|
+
res[i] = __assign$3(__assign$3({}, list[i]), { ma25: ma25_1, bollUb: ma25_1 + 2 * base, bollLb: ma25_1 - 2 * base });
|
|
330
677
|
}
|
|
331
678
|
};
|
|
332
679
|
for (var i = 0; i < list.length; i++) {
|
|
@@ -338,8 +685,8 @@
|
|
|
338
685
|
return Ma;
|
|
339
686
|
}());
|
|
340
687
|
|
|
341
|
-
var __assign$
|
|
342
|
-
__assign$
|
|
688
|
+
var __assign$2 = (undefined && undefined.__assign) || function () {
|
|
689
|
+
__assign$2 = Object.assign || function(t) {
|
|
343
690
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
344
691
|
s = arguments[i];
|
|
345
692
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
@@ -347,7 +694,7 @@
|
|
|
347
694
|
}
|
|
348
695
|
return t;
|
|
349
696
|
};
|
|
350
|
-
return __assign$
|
|
697
|
+
return __assign$2.apply(this, arguments);
|
|
351
698
|
};
|
|
352
699
|
var MACD = /** @class */ (function () {
|
|
353
700
|
function MACD() {
|
|
@@ -391,315 +738,97 @@
|
|
|
391
738
|
return sum / arr.length;
|
|
392
739
|
}
|
|
393
740
|
});
|
|
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", {
|
|
741
|
+
Object.defineProperty(MACD.prototype, "getEMA12", {
|
|
612
742
|
enumerable: false,
|
|
613
743
|
configurable: true,
|
|
614
744
|
writable: true,
|
|
615
|
-
value: function (
|
|
616
|
-
var
|
|
617
|
-
|
|
618
|
-
|
|
745
|
+
value: function (list) {
|
|
746
|
+
var start = list.slice(0, 11);
|
|
747
|
+
var beforeEMA12 = this.getStartEMA(start);
|
|
748
|
+
var res = [];
|
|
749
|
+
for (var i = 0; i < list.length; i++) {
|
|
750
|
+
if (i < 12)
|
|
751
|
+
res[i] = __assign$2(__assign$2({}, list[i]), { EMA12: undefined });
|
|
752
|
+
else {
|
|
753
|
+
beforeEMA12 = (beforeEMA12 * 11) / 13 + (this.getDI(list[i]) * 2) / 13;
|
|
754
|
+
res[i] = __assign$2(__assign$2({}, list[i]), { EMA12: beforeEMA12 });
|
|
755
|
+
}
|
|
619
756
|
}
|
|
620
757
|
return res;
|
|
621
758
|
}
|
|
622
759
|
});
|
|
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", {
|
|
760
|
+
Object.defineProperty(MACD.prototype, "getEMA26", {
|
|
641
761
|
enumerable: false,
|
|
642
762
|
configurable: true,
|
|
643
763
|
writable: true,
|
|
644
764
|
value: function (list) {
|
|
765
|
+
var start = list.slice(0, 25);
|
|
766
|
+
var beforeEMA26 = this.getStartEMA(start);
|
|
645
767
|
var res = [];
|
|
646
|
-
var williams9 = this.getWilliams9(list);
|
|
647
|
-
var williams18 = this.getWilliams18(list);
|
|
648
768
|
for (var i = 0; i < list.length; i++) {
|
|
649
|
-
|
|
769
|
+
if (i < 26)
|
|
770
|
+
res[i] = __assign$2(__assign$2({}, list[i]), { EMA26: undefined });
|
|
771
|
+
else {
|
|
772
|
+
beforeEMA26 = (beforeEMA26 * 25) / 27 + (this.getDI(list[i]) * 2) / 27;
|
|
773
|
+
res[i] = __assign$2(__assign$2({}, list[i]), { EMA26: beforeEMA26 });
|
|
774
|
+
}
|
|
650
775
|
}
|
|
651
776
|
return res;
|
|
652
777
|
}
|
|
653
778
|
});
|
|
654
|
-
Object.defineProperty(
|
|
779
|
+
Object.defineProperty(MACD.prototype, "getDIF", {
|
|
655
780
|
enumerable: false,
|
|
656
781
|
configurable: true,
|
|
657
782
|
writable: true,
|
|
658
|
-
value: function (list) {
|
|
783
|
+
value: function (list, ResEMA12, ResEMA26) {
|
|
784
|
+
var _a, _b;
|
|
659
785
|
var res = [];
|
|
660
786
|
for (var i = 0; i < list.length; i++) {
|
|
661
|
-
if (i <
|
|
662
|
-
res[i] = __assign$
|
|
787
|
+
if (i < 26)
|
|
788
|
+
res[i] = __assign$2(__assign$2({}, list[i]), { DIF: undefined });
|
|
663
789
|
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 });
|
|
790
|
+
var EMA12 = ((_a = ResEMA12 === null || ResEMA12 === void 0 ? void 0 : ResEMA12[i]) === null || _a === void 0 ? void 0 : _a["EMA12"]) && ResEMA12[i]["EMA12"];
|
|
791
|
+
var EMA26 = ((_b = ResEMA26 === null || ResEMA26 === void 0 ? void 0 : ResEMA26[i]) === null || _b === void 0 ? void 0 : _b["EMA26"]) && ResEMA26[i]["EMA26"];
|
|
792
|
+
var DIF = EMA12 - EMA26;
|
|
793
|
+
res[i] = __assign$2(__assign$2({}, list[i]), { DIF: DIF });
|
|
671
794
|
}
|
|
672
795
|
}
|
|
673
796
|
return res;
|
|
674
797
|
}
|
|
675
798
|
});
|
|
676
|
-
Object.defineProperty(
|
|
799
|
+
Object.defineProperty(MACD.prototype, "getMACD9", {
|
|
677
800
|
enumerable: false,
|
|
678
801
|
configurable: true,
|
|
679
802
|
writable: true,
|
|
680
|
-
value: function (list) {
|
|
803
|
+
value: function (list, DIF) {
|
|
681
804
|
var res = [];
|
|
805
|
+
var beforeMACD9 = 0;
|
|
682
806
|
for (var i = 0; i < list.length; i++) {
|
|
683
|
-
if (i <
|
|
684
|
-
res[i] = __assign$
|
|
807
|
+
if (i < 26)
|
|
808
|
+
res[i] = __assign$2(__assign$2({}, list[i]), { MACD9: undefined, OSC: undefined });
|
|
809
|
+
else if (i === 26) {
|
|
810
|
+
var MACD9 = DIF.slice(26, 34)
|
|
811
|
+
.map(function (item) { return ((item === null || item === void 0 ? void 0 : item.DIF) ? item["DIF"] : 0); })
|
|
812
|
+
.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
|
|
813
|
+
var OSC = DIF[i]["DIF"] - MACD9;
|
|
814
|
+
res[26] = __assign$2(__assign$2({}, list[i]), { MACD9: MACD9, OSC: OSC });
|
|
815
|
+
beforeMACD9 = MACD9;
|
|
816
|
+
}
|
|
685
817
|
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 });
|
|
818
|
+
var MACD9 = beforeMACD9 + ((DIF[i]["DIF"] - beforeMACD9) * 2) / 10;
|
|
819
|
+
var OSC = DIF[i]["DIF"] - MACD9;
|
|
820
|
+
res[i] = __assign$2(__assign$2({}, list[i]), { MACD9: MACD9, OSC: OSC });
|
|
821
|
+
beforeMACD9 = MACD9;
|
|
693
822
|
}
|
|
694
823
|
}
|
|
695
824
|
return res;
|
|
696
825
|
}
|
|
697
826
|
});
|
|
698
|
-
return
|
|
827
|
+
return MACD;
|
|
699
828
|
}());
|
|
700
829
|
|
|
701
|
-
var __assign = (undefined && undefined.__assign) || function () {
|
|
702
|
-
__assign = Object.assign || function(t) {
|
|
830
|
+
var __assign$1 = (undefined && undefined.__assign) || function () {
|
|
831
|
+
__assign$1 = Object.assign || function(t) {
|
|
703
832
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
704
833
|
s = arguments[i];
|
|
705
834
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
@@ -707,281 +836,138 @@
|
|
|
707
836
|
}
|
|
708
837
|
return t;
|
|
709
838
|
};
|
|
710
|
-
return __assign.apply(this, arguments);
|
|
839
|
+
return __assign$1.apply(this, arguments);
|
|
711
840
|
};
|
|
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;
|
|
841
|
+
var Rsi = /** @class */ (function () {
|
|
842
|
+
function Rsi() {
|
|
843
|
+
}
|
|
844
|
+
Object.defineProperty(Rsi.prototype, "getAllRsi", {
|
|
845
|
+
enumerable: false,
|
|
846
|
+
configurable: true,
|
|
847
|
+
writable: true,
|
|
848
|
+
value: function (list) {
|
|
849
|
+
var res = [];
|
|
850
|
+
var rsi6 = this.getRsi6(list);
|
|
851
|
+
var rsi12 = this.getRsi12(list);
|
|
852
|
+
for (var i = 0; i < list.length; i++) {
|
|
853
|
+
res[i] = Object.assign(list[i], rsi6[i], rsi12[i]);
|
|
741
854
|
}
|
|
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;
|
|
855
|
+
return res;
|
|
769
856
|
}
|
|
770
857
|
});
|
|
771
|
-
|
|
772
|
-
}
|
|
773
|
-
|
|
774
|
-
var Gold = /** @class */ (function () {
|
|
775
|
-
function Gold() {
|
|
776
|
-
}
|
|
777
|
-
Object.defineProperty(Gold.prototype, "findHighPoint", {
|
|
858
|
+
Object.defineProperty(Rsi.prototype, "getRsi6", {
|
|
778
859
|
enumerable: false,
|
|
779
860
|
configurable: true,
|
|
780
861
|
writable: true,
|
|
781
862
|
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;
|
|
863
|
+
var res = [];
|
|
864
|
+
// 前5筆
|
|
865
|
+
for (var i = 0; i < 5; i++) {
|
|
866
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { rsi6: undefined });
|
|
867
|
+
}
|
|
868
|
+
// 第6筆Rsi
|
|
869
|
+
var beforeUpAvg = this.getStartUpAvg(list, 6);
|
|
870
|
+
var beforeDownAvg = this.getStartDownAvg(list, 6);
|
|
871
|
+
var firstRsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
872
|
+
res[5] = __assign$1(__assign$1({}, list[5]), { rsi6: firstRsi6 });
|
|
873
|
+
// else
|
|
874
|
+
for (var i = 6; i < list.length; i++) {
|
|
875
|
+
var minusU = 0;
|
|
876
|
+
var minusD = 0;
|
|
877
|
+
var minusC = list[i]["c"] - list[i - 1]["c"];
|
|
878
|
+
if (minusC > 0) {
|
|
879
|
+
minusU = minusC;
|
|
857
880
|
}
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
881
|
+
else {
|
|
882
|
+
minusD = minusC;
|
|
883
|
+
}
|
|
884
|
+
beforeUpAvg = (beforeUpAvg * 5) / 6 + minusU / 6;
|
|
885
|
+
beforeDownAvg = (beforeDownAvg * 5) / 6 + Math.abs(minusD) / 6;
|
|
886
|
+
var rsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
887
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { rsi6: Math.round(rsi6 * 100) / 100 });
|
|
861
888
|
}
|
|
862
|
-
return
|
|
889
|
+
return res;
|
|
863
890
|
}
|
|
864
891
|
});
|
|
865
|
-
Object.defineProperty(
|
|
892
|
+
Object.defineProperty(Rsi.prototype, "getRsi12", {
|
|
866
893
|
enumerable: false,
|
|
867
894
|
configurable: true,
|
|
868
895
|
writable: true,
|
|
869
896
|
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;
|
|
897
|
+
var res = [];
|
|
898
|
+
// 前11筆
|
|
899
|
+
for (var i = 0; i < 11; i++) {
|
|
900
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { rsi12: undefined });
|
|
901
|
+
}
|
|
902
|
+
// 第12筆Rsi
|
|
903
|
+
var beforeUpAvg = this.getStartUpAvg(list, 12);
|
|
904
|
+
var beforeDownAvg = this.getStartDownAvg(list, 12);
|
|
905
|
+
var firstRsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
906
|
+
res[11] = __assign$1(__assign$1({}, list[11]), { rsi12: firstRsi12 });
|
|
907
|
+
// else
|
|
908
|
+
for (var i = 12; i < list.length; i++) {
|
|
909
|
+
var minusU = 0;
|
|
910
|
+
var minusD = 0;
|
|
911
|
+
var minusC = list[i]["c"] - list[i - 1]["c"];
|
|
912
|
+
if (minusC > 0) {
|
|
913
|
+
minusU = minusC;
|
|
938
914
|
}
|
|
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;
|
|
915
|
+
else {
|
|
916
|
+
minusD = minusC;
|
|
945
917
|
}
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
918
|
+
beforeUpAvg = (beforeUpAvg * 11) / 12 + minusU / 12;
|
|
919
|
+
beforeDownAvg = (beforeDownAvg * 11) / 12 + Math.abs(minusD) / 12;
|
|
920
|
+
var rsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
|
|
921
|
+
res[i] = __assign$1(__assign$1({}, list[i]), { rsi12: Math.round(rsi12 * 100) / 100 });
|
|
949
922
|
}
|
|
950
|
-
return
|
|
923
|
+
return res;
|
|
951
924
|
}
|
|
952
925
|
});
|
|
953
|
-
Object.defineProperty(
|
|
926
|
+
Object.defineProperty(Rsi.prototype, "getStartUpAvg", {
|
|
954
927
|
enumerable: false,
|
|
955
928
|
configurable: true,
|
|
956
929
|
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
|
-
|
|
930
|
+
value: function (list, count) {
|
|
931
|
+
var start = list.slice(0, 5);
|
|
932
|
+
var sum = 0;
|
|
933
|
+
for (var i = 1; i < start.length; i++) {
|
|
934
|
+
var minus = start[i]["c"] - start[i - 1]["c"];
|
|
935
|
+
if (minus > 0) {
|
|
936
|
+
sum += minus;
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
return sum / count;
|
|
940
|
+
}
|
|
941
|
+
});
|
|
942
|
+
Object.defineProperty(Rsi.prototype, "getStartDownAvg", {
|
|
943
|
+
enumerable: false,
|
|
944
|
+
configurable: true,
|
|
945
|
+
writable: true,
|
|
946
|
+
value: function (list, count) {
|
|
947
|
+
var start = list.slice(0, 5);
|
|
948
|
+
var sum = 0;
|
|
949
|
+
for (var i = 1; i < start.length; i++) {
|
|
950
|
+
var minus = start[i]["c"] - start[i - 1]["c"];
|
|
951
|
+
if (minus < 0) {
|
|
952
|
+
sum += minus;
|
|
953
|
+
}
|
|
954
|
+
}
|
|
955
|
+
return Math.abs(sum / count);
|
|
956
|
+
}
|
|
957
|
+
});
|
|
958
|
+
Object.defineProperty(Rsi.prototype, "getRsi", {
|
|
959
|
+
enumerable: false,
|
|
960
|
+
configurable: true,
|
|
961
|
+
writable: true,
|
|
962
|
+
value: function (UpAvg, DownAvg) {
|
|
963
|
+
var res = 0;
|
|
964
|
+
if (UpAvg + DownAvg !== 0) {
|
|
965
|
+
res = (UpAvg / (UpAvg + DownAvg)) * 100;
|
|
966
|
+
}
|
|
981
967
|
return res;
|
|
982
968
|
}
|
|
983
969
|
});
|
|
984
|
-
return
|
|
970
|
+
return Rsi;
|
|
985
971
|
}());
|
|
986
972
|
|
|
987
973
|
var Mode;
|
|
@@ -1039,7 +1025,91 @@
|
|
|
1039
1025
|
}
|
|
1040
1026
|
}
|
|
1041
1027
|
|
|
1028
|
+
var __assign = (undefined && undefined.__assign) || function () {
|
|
1029
|
+
__assign = Object.assign || function(t) {
|
|
1030
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
1031
|
+
s = arguments[i];
|
|
1032
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
1033
|
+
t[p] = s[p];
|
|
1034
|
+
}
|
|
1035
|
+
return t;
|
|
1036
|
+
};
|
|
1037
|
+
return __assign.apply(this, arguments);
|
|
1038
|
+
};
|
|
1039
|
+
var Williams = /** @class */ (function () {
|
|
1040
|
+
function Williams() {
|
|
1041
|
+
}
|
|
1042
|
+
Object.defineProperty(Williams.prototype, "getAllWillams", {
|
|
1043
|
+
enumerable: false,
|
|
1044
|
+
configurable: true,
|
|
1045
|
+
writable: true,
|
|
1046
|
+
value: function (list) {
|
|
1047
|
+
var res = [];
|
|
1048
|
+
var williams9 = this.getWilliams9(list);
|
|
1049
|
+
var williams18 = this.getWilliams18(list);
|
|
1050
|
+
for (var i = 0; i < list.length; i++) {
|
|
1051
|
+
res[i] = Object.assign(list[i], williams9[i], williams18[i]);
|
|
1052
|
+
}
|
|
1053
|
+
return res;
|
|
1054
|
+
}
|
|
1055
|
+
});
|
|
1056
|
+
Object.defineProperty(Williams.prototype, "getWilliams9", {
|
|
1057
|
+
enumerable: false,
|
|
1058
|
+
configurable: true,
|
|
1059
|
+
writable: true,
|
|
1060
|
+
value: function (list) {
|
|
1061
|
+
var res = [];
|
|
1062
|
+
for (var i = 0; i < list.length; i++) {
|
|
1063
|
+
if (i < 9)
|
|
1064
|
+
res[i] = __assign(__assign({}, list[i]), { williams9: undefined });
|
|
1065
|
+
else {
|
|
1066
|
+
var maxList = list.slice(i - 8, i).map(function (item) { return item["h"]; });
|
|
1067
|
+
var minList = list.slice(i - 8, i).map(function (item) { return item["l"]; });
|
|
1068
|
+
var max = Math.max.apply(Math, maxList);
|
|
1069
|
+
var min = Math.min.apply(Math, minList);
|
|
1070
|
+
var close_1 = list[i]["c"];
|
|
1071
|
+
var williams9 = ((max - close_1) / (max - min)) * -100;
|
|
1072
|
+
res[i] = __assign(__assign({}, list[i]), { williams9: Math.round(williams9 * 100) / 100 });
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
return res;
|
|
1076
|
+
}
|
|
1077
|
+
});
|
|
1078
|
+
Object.defineProperty(Williams.prototype, "getWilliams18", {
|
|
1079
|
+
enumerable: false,
|
|
1080
|
+
configurable: true,
|
|
1081
|
+
writable: true,
|
|
1082
|
+
value: function (list) {
|
|
1083
|
+
var res = [];
|
|
1084
|
+
for (var i = 0; i < list.length; i++) {
|
|
1085
|
+
if (i < 18)
|
|
1086
|
+
res[i] = __assign(__assign({}, list[i]), { williams9: undefined });
|
|
1087
|
+
else {
|
|
1088
|
+
var maxList = list.slice(i - 17, i).map(function (item) { return item["h"]; });
|
|
1089
|
+
var minList = list.slice(i - 17, i).map(function (item) { return item["l"]; });
|
|
1090
|
+
var max = Math.max.apply(Math, maxList);
|
|
1091
|
+
var min = Math.min.apply(Math, minList);
|
|
1092
|
+
var close_2 = list[i]["c"];
|
|
1093
|
+
var williams18 = ((max - close_2) / (max - min)) * -100;
|
|
1094
|
+
res[i] = __assign(__assign({}, list[i]), { williams18: Math.round(williams18 * 100) / 100 });
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1097
|
+
return res;
|
|
1098
|
+
}
|
|
1099
|
+
});
|
|
1100
|
+
return Williams;
|
|
1101
|
+
}());
|
|
1102
|
+
|
|
1103
|
+
function add(a, b) {
|
|
1104
|
+
return a + b;
|
|
1105
|
+
}
|
|
1106
|
+
|
|
1107
|
+
function minus(a, b) {
|
|
1108
|
+
return a - b;
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1042
1111
|
exports.Gold = Gold;
|
|
1112
|
+
exports.Kd = Kd;
|
|
1043
1113
|
exports.Ma = Ma;
|
|
1044
1114
|
exports.Macd = MACD;
|
|
1045
1115
|
exports.Rsi = Rsi;
|