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