@ch20026103/anysis 0.0.5-alpha → 0.0.7-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/index.d.ts +4 -2
- package/dist/cjs/index.js +9 -5
- package/dist/cjs/stockSkills/boll.d.ts +58 -0
- package/dist/cjs/stockSkills/boll.js +101 -0
- package/dist/cjs/stockSkills/boll.test.d.ts +1 -0
- package/dist/cjs/stockSkills/boll.test.js +36 -0
- package/dist/cjs/stockSkills/ema.d.ts +2 -2
- package/dist/cjs/stockSkills/ema.js +1 -1
- package/dist/cjs/stockSkills/kd.d.ts +22 -22
- package/dist/cjs/stockSkills/kd.js +10 -10
- package/dist/cjs/stockSkills/ma.d.ts +13 -23
- package/dist/cjs/stockSkills/ma.js +9 -43
- package/dist/cjs/stockSkills/ma.test.js +3 -20
- package/dist/cjs/stockSkills/macd.d.ts +34 -34
- package/dist/cjs/stockSkills/macd.js +15 -15
- package/dist/cjs/stockSkills/macd.test.js +2 -0
- package/dist/cjs/stockSkills/rsi.d.ts +4 -4
- package/dist/cjs/stockSkills/rsi.js +2 -2
- package/dist/cjs/stockSkills/williams.d.ts +4 -4
- package/dist/cjs/stockSkills/williams.js +2 -2
- package/dist/cjs/utils/isJson.d.ts +1 -0
- package/dist/cjs/utils/isJson.js +12 -0
- package/dist/esm/index.d.ts +4 -2
- package/dist/esm/index.js +4 -2
- package/dist/esm/stockSkills/boll.d.ts +58 -0
- package/dist/esm/stockSkills/boll.js +99 -0
- package/dist/esm/stockSkills/boll.test.d.ts +1 -0
- package/dist/esm/stockSkills/boll.test.js +34 -0
- package/dist/esm/stockSkills/ema.d.ts +2 -2
- package/dist/esm/stockSkills/ema.js +1 -1
- package/dist/esm/stockSkills/kd.d.ts +22 -22
- package/dist/esm/stockSkills/kd.js +10 -10
- package/dist/esm/stockSkills/ma.d.ts +13 -23
- package/dist/esm/stockSkills/ma.js +9 -43
- package/dist/esm/stockSkills/ma.test.js +3 -20
- package/dist/esm/stockSkills/macd.d.ts +34 -34
- package/dist/esm/stockSkills/macd.js +15 -15
- package/dist/esm/stockSkills/macd.test.js +2 -0
- package/dist/esm/stockSkills/rsi.d.ts +4 -4
- package/dist/esm/stockSkills/rsi.js +2 -2
- package/dist/esm/stockSkills/williams.d.ts +4 -4
- package/dist/esm/stockSkills/williams.js +2 -2
- package/dist/esm/utils/isJson.d.ts +1 -0
- package/dist/esm/utils/isJson.js +9 -0
- package/dist/umd/index.js +279 -202
- package/package.json +17 -15
|
@@ -19,10 +19,10 @@ var Kd = /** @class */ (function () {
|
|
|
19
19
|
value: function (data) {
|
|
20
20
|
return {
|
|
21
21
|
dataset: [data],
|
|
22
|
-
rsv:
|
|
23
|
-
k:
|
|
24
|
-
d:
|
|
25
|
-
"k-d":
|
|
22
|
+
rsv: null,
|
|
23
|
+
k: null,
|
|
24
|
+
d: null,
|
|
25
|
+
"k-d": null,
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
});
|
|
@@ -35,10 +35,10 @@ var Kd = /** @class */ (function () {
|
|
|
35
35
|
if (preList.dataset.length < type) {
|
|
36
36
|
return {
|
|
37
37
|
dataset: preList.dataset,
|
|
38
|
-
rsv:
|
|
39
|
-
k:
|
|
40
|
-
d:
|
|
41
|
-
"k-d":
|
|
38
|
+
rsv: null,
|
|
39
|
+
k: null,
|
|
40
|
+
d: null,
|
|
41
|
+
"k-d": null,
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
else {
|
|
@@ -74,7 +74,7 @@ var Kd = /** @class */ (function () {
|
|
|
74
74
|
var res = [];
|
|
75
75
|
for (var i = 0; i < list.length; i++) {
|
|
76
76
|
if (i < 8)
|
|
77
|
-
res[i] = __assign(__assign({}, list[i]), { rsv:
|
|
77
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: null });
|
|
78
78
|
else {
|
|
79
79
|
var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
|
|
80
80
|
var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
|
|
@@ -97,7 +97,7 @@ var Kd = /** @class */ (function () {
|
|
|
97
97
|
var yesterdayD = 50;
|
|
98
98
|
for (var i = 0; i < list.length; i++) {
|
|
99
99
|
if (i < 8)
|
|
100
|
-
res[i] = __assign(__assign({}, list[i]), { rsv:
|
|
100
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: null, k: null, d: null, "k-d": null });
|
|
101
101
|
else {
|
|
102
102
|
var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
|
|
103
103
|
var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
|
|
@@ -4,39 +4,31 @@ type DataType = {
|
|
|
4
4
|
type ListType = DataType[];
|
|
5
5
|
type ResMa5 = {
|
|
6
6
|
c: number;
|
|
7
|
-
ma5
|
|
7
|
+
ma5: number | null;
|
|
8
8
|
}[];
|
|
9
9
|
type ResMa10 = {
|
|
10
10
|
c: number;
|
|
11
|
-
ma10
|
|
11
|
+
ma10: number | null;
|
|
12
12
|
}[];
|
|
13
13
|
type ResMa20 = {
|
|
14
14
|
c: number;
|
|
15
|
-
ma20
|
|
15
|
+
ma20: number | null;
|
|
16
16
|
}[];
|
|
17
17
|
type ResMa60 = {
|
|
18
18
|
c: number;
|
|
19
|
-
ma60
|
|
19
|
+
ma60: number | null;
|
|
20
20
|
}[];
|
|
21
|
-
type
|
|
21
|
+
type ResMa = {
|
|
22
22
|
c: number;
|
|
23
|
-
|
|
24
|
-
}[];
|
|
25
|
-
type ResBoll = {
|
|
26
|
-
c: number;
|
|
27
|
-
ma25?: number;
|
|
28
|
-
bollUb?: number;
|
|
29
|
-
bollLb?: number;
|
|
23
|
+
ma: number | null;
|
|
30
24
|
}[];
|
|
31
25
|
type ResAllMa = {
|
|
32
26
|
c: number;
|
|
33
|
-
ma5
|
|
34
|
-
ma10
|
|
35
|
-
ma20
|
|
36
|
-
ma25
|
|
37
|
-
ma60
|
|
38
|
-
bollUb?: number;
|
|
39
|
-
bollLb?: number;
|
|
27
|
+
ma5: number | null;
|
|
28
|
+
ma10: number | null;
|
|
29
|
+
ma20: number | null;
|
|
30
|
+
ma25: number | null;
|
|
31
|
+
ma60: number | null;
|
|
40
32
|
}[];
|
|
41
33
|
interface MaType {
|
|
42
34
|
init: (data: DataType, type: number) => {
|
|
@@ -58,8 +50,7 @@ interface MaType {
|
|
|
58
50
|
getMa10: (list: ListType) => ResMa10;
|
|
59
51
|
getMa20: (list: ListType) => ResMa20;
|
|
60
52
|
getMa60: (list: ListType) => ResMa60;
|
|
61
|
-
|
|
62
|
-
getBoll: (list: ListType) => ResBoll;
|
|
53
|
+
getMa: (list: ListType, self: number) => ResMa;
|
|
63
54
|
}
|
|
64
55
|
export default class Ma implements MaType {
|
|
65
56
|
init(data: DataType, type: number): {
|
|
@@ -81,7 +72,6 @@ export default class Ma implements MaType {
|
|
|
81
72
|
getMa10(list: ListType): ResMa10;
|
|
82
73
|
getMa20(list: ListType): ResMa20;
|
|
83
74
|
getMa60(list: ListType): ResMa60;
|
|
84
|
-
|
|
85
|
-
getBoll(list: ListType): ResBoll;
|
|
75
|
+
getMa(list: ListType, self: number): ResMa;
|
|
86
76
|
}
|
|
87
77
|
export {};
|
|
@@ -49,9 +49,8 @@ var Ma = /** @class */ (function () {
|
|
|
49
49
|
var responseMa10 = this.getMa10(list);
|
|
50
50
|
var responseMa20 = this.getMa20(list);
|
|
51
51
|
var responseMa60 = this.getMa60(list);
|
|
52
|
-
var responseBoll = this.getBoll(list);
|
|
53
52
|
for (var i = 0; i < list.length; i++) {
|
|
54
|
-
res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseMa60[i]
|
|
53
|
+
res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseMa60[i]);
|
|
55
54
|
}
|
|
56
55
|
return res;
|
|
57
56
|
}
|
|
@@ -64,7 +63,7 @@ var Ma = /** @class */ (function () {
|
|
|
64
63
|
var res = [];
|
|
65
64
|
for (var i = 0; i < list.length; i++) {
|
|
66
65
|
if (i < 4)
|
|
67
|
-
res[i] = __assign(__assign({}, list[i]), { ma5:
|
|
66
|
+
res[i] = __assign(__assign({}, list[i]), { ma5: null });
|
|
68
67
|
else {
|
|
69
68
|
var sum = list
|
|
70
69
|
.slice(i - 4, i + 1)
|
|
@@ -84,7 +83,7 @@ var Ma = /** @class */ (function () {
|
|
|
84
83
|
var res = [];
|
|
85
84
|
for (var i = 0; i < list.length; i++) {
|
|
86
85
|
if (i < 9)
|
|
87
|
-
res[i] = __assign(__assign({}, list[i]), { ma10:
|
|
86
|
+
res[i] = __assign(__assign({}, list[i]), { ma10: null });
|
|
88
87
|
else {
|
|
89
88
|
var sum = list
|
|
90
89
|
.slice(i - 9, i + 1)
|
|
@@ -104,7 +103,7 @@ var Ma = /** @class */ (function () {
|
|
|
104
103
|
var res = [];
|
|
105
104
|
for (var i = 0; i < list.length; i++) {
|
|
106
105
|
if (i < 19)
|
|
107
|
-
res[i] = __assign(__assign({}, list[i]), { ma20:
|
|
106
|
+
res[i] = __assign(__assign({}, list[i]), { ma20: null });
|
|
108
107
|
else {
|
|
109
108
|
var sum = list
|
|
110
109
|
.slice(i - 19, i + 1)
|
|
@@ -124,7 +123,7 @@ var Ma = /** @class */ (function () {
|
|
|
124
123
|
var res = [];
|
|
125
124
|
for (var i = 0; i < list.length; i++) {
|
|
126
125
|
if (i < 59)
|
|
127
|
-
res[i] = __assign(__assign({}, list[i]), { ma60:
|
|
126
|
+
res[i] = __assign(__assign({}, list[i]), { ma60: null });
|
|
128
127
|
else {
|
|
129
128
|
var sum = list
|
|
130
129
|
.slice(i - 59, i + 1)
|
|
@@ -136,7 +135,7 @@ var Ma = /** @class */ (function () {
|
|
|
136
135
|
return res;
|
|
137
136
|
}
|
|
138
137
|
});
|
|
139
|
-
Object.defineProperty(Ma.prototype, "
|
|
138
|
+
Object.defineProperty(Ma.prototype, "getMa", {
|
|
140
139
|
enumerable: false,
|
|
141
140
|
configurable: true,
|
|
142
141
|
writable: true,
|
|
@@ -144,51 +143,18 @@ var Ma = /** @class */ (function () {
|
|
|
144
143
|
var res = [];
|
|
145
144
|
for (var i = 0; i < list.length; i++) {
|
|
146
145
|
if (i < self - 1)
|
|
147
|
-
res[i] = __assign(__assign({}, list[i]), {
|
|
146
|
+
res[i] = __assign(__assign({}, list[i]), { ma: null });
|
|
148
147
|
else {
|
|
149
148
|
var sum = list
|
|
150
149
|
.slice(i - (self - 1), i + 1)
|
|
151
150
|
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
152
|
-
var
|
|
153
|
-
res[i] = __assign(__assign({}, list[i]), {
|
|
151
|
+
var ma = Math.round((sum / self) * 100) / 100;
|
|
152
|
+
res[i] = __assign(__assign({}, list[i]), { ma: ma });
|
|
154
153
|
}
|
|
155
154
|
}
|
|
156
155
|
return res;
|
|
157
156
|
}
|
|
158
157
|
});
|
|
159
|
-
Object.defineProperty(Ma.prototype, "getBoll", {
|
|
160
|
-
enumerable: false,
|
|
161
|
-
configurable: true,
|
|
162
|
-
writable: true,
|
|
163
|
-
value: function (list) {
|
|
164
|
-
var res = [];
|
|
165
|
-
var _loop_1 = function (i) {
|
|
166
|
-
if (i < 24)
|
|
167
|
-
res[i] = __assign(__assign({}, list[i]), { ma25: undefined, bollUb: undefined, bollLb: undefined });
|
|
168
|
-
else {
|
|
169
|
-
// ma25
|
|
170
|
-
var sumMa25 = list
|
|
171
|
-
.slice(i - 24, i + 1)
|
|
172
|
-
.reduce(function (pre, current) { return pre + current.c; }, 0);
|
|
173
|
-
var ma25_1 = Math.round((sumMa25 / 25) * 100) / 100;
|
|
174
|
-
// 標準差
|
|
175
|
-
var sumBase = res
|
|
176
|
-
.slice(i - 24, i + 1)
|
|
177
|
-
.reduce(function (pre, current) {
|
|
178
|
-
return ma25_1 !== undefined
|
|
179
|
-
? pre + Math.pow(current.c - ma25_1, 2)
|
|
180
|
-
: pre;
|
|
181
|
-
}, 0);
|
|
182
|
-
var base = Math.round(Math.sqrt(sumBase / 25) * 100) / 100;
|
|
183
|
-
res[i] = __assign(__assign({}, list[i]), { ma25: ma25_1, bollUb: ma25_1 + 2 * base, bollLb: ma25_1 - 2 * base });
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
for (var i = 0; i < list.length; i++) {
|
|
187
|
-
_loop_1(i);
|
|
188
|
-
}
|
|
189
|
-
return res;
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
158
|
return Ma;
|
|
193
159
|
}());
|
|
194
160
|
export default Ma;
|
|
@@ -61,30 +61,16 @@ describe("test ma methods", function () {
|
|
|
61
61
|
ma60: 134.86,
|
|
62
62
|
});
|
|
63
63
|
});
|
|
64
|
-
it("test
|
|
64
|
+
it("test getMa()", function () {
|
|
65
65
|
var ma = new Ma();
|
|
66
|
-
expect(ma.
|
|
66
|
+
expect(ma.getMa(data, 20)[data.length - 1]).toEqual({
|
|
67
67
|
c: 142,
|
|
68
68
|
o: 138,
|
|
69
69
|
t: 20211214,
|
|
70
70
|
v: 16841,
|
|
71
71
|
h: 143,
|
|
72
72
|
l: 138,
|
|
73
|
-
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
it("test getBoll()", function () {
|
|
77
|
-
var ma = new Ma();
|
|
78
|
-
expect(ma.getBoll(data)[data.length - 1]).toEqual({
|
|
79
|
-
c: 142,
|
|
80
|
-
o: 138,
|
|
81
|
-
t: 20211214,
|
|
82
|
-
v: 16841,
|
|
83
|
-
h: 143,
|
|
84
|
-
l: 138,
|
|
85
|
-
ma25: 142.66,
|
|
86
|
-
bollLb: 126.69999999999999,
|
|
87
|
-
bollUb: 158.62,
|
|
73
|
+
ma: 144.88,
|
|
88
74
|
});
|
|
89
75
|
});
|
|
90
76
|
it("test getAllMa()", function () {
|
|
@@ -100,9 +86,6 @@ describe("test ma methods", function () {
|
|
|
100
86
|
ma10: 146.7,
|
|
101
87
|
ma20: 144.88,
|
|
102
88
|
ma60: 134.86,
|
|
103
|
-
ma25: 142.66,
|
|
104
|
-
bollUb: 158.62,
|
|
105
|
-
bollLb: 126.69999999999999,
|
|
106
89
|
});
|
|
107
90
|
});
|
|
108
91
|
});
|
|
@@ -7,60 +7,60 @@ type ResEMA12Type = {
|
|
|
7
7
|
h: number;
|
|
8
8
|
l: number;
|
|
9
9
|
c: number;
|
|
10
|
-
EMA12
|
|
10
|
+
EMA12: number | null;
|
|
11
11
|
}[];
|
|
12
12
|
type ResEMA26Type = {
|
|
13
13
|
h: number;
|
|
14
14
|
l: number;
|
|
15
15
|
c: number;
|
|
16
|
-
EMA26
|
|
16
|
+
EMA26: number | null;
|
|
17
17
|
}[];
|
|
18
18
|
type ResDifType = {
|
|
19
19
|
h: number;
|
|
20
20
|
l: number;
|
|
21
21
|
c: number;
|
|
22
|
-
DIF
|
|
22
|
+
DIF: number | null;
|
|
23
23
|
}[];
|
|
24
24
|
type ResMacd9Type = {
|
|
25
25
|
h: number;
|
|
26
26
|
l: number;
|
|
27
27
|
c: number;
|
|
28
|
-
MACD9
|
|
29
|
-
OSC
|
|
28
|
+
MACD9: number | null;
|
|
29
|
+
OSC: number | null;
|
|
30
30
|
}[];
|
|
31
31
|
type ResAllMacdType = {
|
|
32
32
|
h: number;
|
|
33
33
|
l: number;
|
|
34
34
|
c: number;
|
|
35
|
-
EMA12
|
|
36
|
-
EMA26
|
|
37
|
-
DIF
|
|
38
|
-
MACD9
|
|
39
|
-
OSC
|
|
35
|
+
EMA12: number | null;
|
|
36
|
+
EMA26: number | null;
|
|
37
|
+
DIF: number | null;
|
|
38
|
+
MACD9: number | null;
|
|
39
|
+
OSC: number | null;
|
|
40
40
|
}[];
|
|
41
41
|
interface MacdType {
|
|
42
42
|
init: (data: ItemType) => {
|
|
43
43
|
dataset: ItemType[];
|
|
44
|
-
ema12
|
|
45
|
-
ema26
|
|
44
|
+
ema12: number | null;
|
|
45
|
+
ema26: number | null;
|
|
46
46
|
dif: number[];
|
|
47
|
-
macd
|
|
48
|
-
osc
|
|
47
|
+
macd: number | null;
|
|
48
|
+
osc: number | null;
|
|
49
49
|
};
|
|
50
50
|
next: (data: ItemType, preList: {
|
|
51
51
|
dataset: ItemType[];
|
|
52
|
-
ema12
|
|
53
|
-
ema26
|
|
52
|
+
ema12: number | null;
|
|
53
|
+
ema26: number | null;
|
|
54
54
|
dif: number[];
|
|
55
|
-
macd
|
|
56
|
-
osc
|
|
55
|
+
macd: number | null;
|
|
56
|
+
osc: number | null;
|
|
57
57
|
}) => {
|
|
58
58
|
dataset: ItemType[];
|
|
59
|
-
ema12
|
|
60
|
-
ema26
|
|
59
|
+
ema12: number | null;
|
|
60
|
+
ema26: number | null;
|
|
61
61
|
dif: number[];
|
|
62
|
-
macd
|
|
63
|
-
osc
|
|
62
|
+
macd: number | null;
|
|
63
|
+
osc: number | null;
|
|
64
64
|
};
|
|
65
65
|
getMACD: (list: ItemType[]) => ResAllMacdType;
|
|
66
66
|
getDI: (item: ItemType) => number;
|
|
@@ -73,26 +73,26 @@ interface MacdType {
|
|
|
73
73
|
export default class MACD implements MacdType {
|
|
74
74
|
init(data: ItemType): {
|
|
75
75
|
dataset: ItemType[];
|
|
76
|
-
ema12
|
|
77
|
-
ema26
|
|
76
|
+
ema12: number | null;
|
|
77
|
+
ema26: number | null;
|
|
78
78
|
dif: number[];
|
|
79
|
-
macd
|
|
80
|
-
osc
|
|
79
|
+
macd: number | null;
|
|
80
|
+
osc: number | null;
|
|
81
81
|
};
|
|
82
82
|
next(data: ItemType, preList: {
|
|
83
83
|
dataset: ItemType[];
|
|
84
|
-
ema12
|
|
85
|
-
ema26
|
|
84
|
+
ema12: number | null;
|
|
85
|
+
ema26: number | null;
|
|
86
86
|
dif: number[];
|
|
87
|
-
macd
|
|
88
|
-
osc
|
|
87
|
+
macd: number | null;
|
|
88
|
+
osc: number | null;
|
|
89
89
|
}): {
|
|
90
90
|
dataset: ItemType[];
|
|
91
|
-
ema12: number |
|
|
92
|
-
ema26: number |
|
|
91
|
+
ema12: number | null;
|
|
92
|
+
ema26: number | null;
|
|
93
93
|
dif: number[];
|
|
94
|
-
macd: number |
|
|
95
|
-
osc: number |
|
|
94
|
+
macd: number | null;
|
|
95
|
+
osc: number | null;
|
|
96
96
|
};
|
|
97
97
|
getMACD(list: ItemType[]): ResAllMacdType;
|
|
98
98
|
getDI(item: ItemType): number;
|
|
@@ -19,11 +19,11 @@ var MACD = /** @class */ (function () {
|
|
|
19
19
|
value: function (data) {
|
|
20
20
|
return {
|
|
21
21
|
dataset: [data],
|
|
22
|
-
ema12:
|
|
23
|
-
ema26:
|
|
22
|
+
ema12: null,
|
|
23
|
+
ema26: null,
|
|
24
24
|
dif: [],
|
|
25
|
-
macd:
|
|
26
|
-
osc:
|
|
25
|
+
macd: null,
|
|
26
|
+
osc: null,
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
});
|
|
@@ -37,7 +37,7 @@ var MACD = /** @class */ (function () {
|
|
|
37
37
|
if (preList.dataset.length > 34)
|
|
38
38
|
preList.dataset.shift();
|
|
39
39
|
// EMA12
|
|
40
|
-
var ema12 =
|
|
40
|
+
var ema12 = null;
|
|
41
41
|
if (preList.dataset.length === 12) {
|
|
42
42
|
ema12 = this.getStartEMA(preList.dataset);
|
|
43
43
|
ema12 = (ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
|
|
@@ -48,7 +48,7 @@ var MACD = /** @class */ (function () {
|
|
|
48
48
|
ema12 = Math.round(ema12 * 100) / 100;
|
|
49
49
|
}
|
|
50
50
|
// EMA26
|
|
51
|
-
var ema26 =
|
|
51
|
+
var ema26 = null;
|
|
52
52
|
if (preList.dataset.length === 26) {
|
|
53
53
|
ema26 = this.getStartEMA(preList.dataset);
|
|
54
54
|
ema26 = (ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
|
|
@@ -59,7 +59,7 @@ var MACD = /** @class */ (function () {
|
|
|
59
59
|
ema26 = Math.round(ema26 * 100) / 100;
|
|
60
60
|
}
|
|
61
61
|
// DIF
|
|
62
|
-
var dif =
|
|
62
|
+
var dif = null;
|
|
63
63
|
if (ema12 && ema26) {
|
|
64
64
|
dif = ema12 - ema26;
|
|
65
65
|
dif = Math.round(dif * 100) / 100;
|
|
@@ -68,10 +68,10 @@ var MACD = /** @class */ (function () {
|
|
|
68
68
|
(_b = preList.dif) === null || _b === void 0 ? void 0 : _b.shift();
|
|
69
69
|
}
|
|
70
70
|
// MACD & OSC
|
|
71
|
-
var macd =
|
|
72
|
-
var osc =
|
|
71
|
+
var macd = null;
|
|
72
|
+
var osc = null;
|
|
73
73
|
if (preList.dif.length === 9) {
|
|
74
|
-
if (preList.macd ===
|
|
74
|
+
if (preList.macd === null) {
|
|
75
75
|
macd = preList.dif.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
|
|
76
76
|
for (var i = 0; i < 9; i++) {
|
|
77
77
|
var item = preList.dif[i];
|
|
@@ -111,7 +111,7 @@ var MACD = /** @class */ (function () {
|
|
|
111
111
|
var DIF = this.getDIF(list, EMA12, EMA26);
|
|
112
112
|
var MACD9 = this.getMACD9(list, DIF);
|
|
113
113
|
for (var i = 0; i < list.length; i++) {
|
|
114
|
-
res[i] = Object.assign(list[i], DIF[i], MACD9[i]);
|
|
114
|
+
res[i] = Object.assign(list[i], DIF[i], MACD9[i], EMA12[i], EMA26[i]);
|
|
115
115
|
}
|
|
116
116
|
return res;
|
|
117
117
|
}
|
|
@@ -148,7 +148,7 @@ var MACD = /** @class */ (function () {
|
|
|
148
148
|
var res = [];
|
|
149
149
|
for (var i = 0; i < list.length; i++) {
|
|
150
150
|
if (i < 12)
|
|
151
|
-
res[i] = __assign(__assign({}, list[i]), { EMA12:
|
|
151
|
+
res[i] = __assign(__assign({}, list[i]), { EMA12: null });
|
|
152
152
|
else {
|
|
153
153
|
beforeEMA12 = (beforeEMA12 * 11) / 13 + (this.getDI(list[i]) * 2) / 13;
|
|
154
154
|
res[i] = __assign(__assign({}, list[i]), { EMA12: beforeEMA12 });
|
|
@@ -167,7 +167,7 @@ var MACD = /** @class */ (function () {
|
|
|
167
167
|
var res = [];
|
|
168
168
|
for (var i = 0; i < list.length; i++) {
|
|
169
169
|
if (i < 26)
|
|
170
|
-
res[i] = __assign(__assign({}, list[i]), { EMA26:
|
|
170
|
+
res[i] = __assign(__assign({}, list[i]), { EMA26: null });
|
|
171
171
|
else {
|
|
172
172
|
beforeEMA26 = (beforeEMA26 * 25) / 27 + (this.getDI(list[i]) * 2) / 27;
|
|
173
173
|
res[i] = __assign(__assign({}, list[i]), { EMA26: beforeEMA26 });
|
|
@@ -185,7 +185,7 @@ var MACD = /** @class */ (function () {
|
|
|
185
185
|
var res = [];
|
|
186
186
|
for (var i = 0; i < list.length; i++) {
|
|
187
187
|
if (i < 26)
|
|
188
|
-
res[i] = __assign(__assign({}, list[i]), { DIF:
|
|
188
|
+
res[i] = __assign(__assign({}, list[i]), { DIF: null });
|
|
189
189
|
else {
|
|
190
190
|
var EMA12 = ((_a = ResEMA12 === null || ResEMA12 === void 0 ? void 0 : ResEMA12[i]) === null || _a === void 0 ? void 0 : _a["EMA12"]) && ResEMA12[i]["EMA12"];
|
|
191
191
|
var EMA26 = ((_b = ResEMA26 === null || ResEMA26 === void 0 ? void 0 : ResEMA26[i]) === null || _b === void 0 ? void 0 : _b["EMA26"]) && ResEMA26[i]["EMA26"];
|
|
@@ -205,7 +205,7 @@ var MACD = /** @class */ (function () {
|
|
|
205
205
|
var beforeMACD9 = 0;
|
|
206
206
|
for (var i = 0; i < list.length; i++) {
|
|
207
207
|
if (i < 26)
|
|
208
|
-
res[i] = __assign(__assign({}, list[i]), { MACD9:
|
|
208
|
+
res[i] = __assign(__assign({}, list[i]), { MACD9: null, OSC: null });
|
|
209
209
|
else if (i === 26) {
|
|
210
210
|
var MACD9 = DIF.slice(26, 34)
|
|
211
211
|
.map(function (item) { return ((item === null || item === void 0 ? void 0 : item.DIF) ? item["DIF"] : 0); })
|
|
@@ -3,16 +3,16 @@ type ListType = {
|
|
|
3
3
|
}[];
|
|
4
4
|
type ResRsi6Type = {
|
|
5
5
|
c: number;
|
|
6
|
-
rsi6
|
|
6
|
+
rsi6: number | null;
|
|
7
7
|
}[];
|
|
8
8
|
type ResRsi12Type = {
|
|
9
9
|
c: number;
|
|
10
|
-
rsi12
|
|
10
|
+
rsi12: number | null;
|
|
11
11
|
}[];
|
|
12
12
|
type ResAllRsiType = {
|
|
13
13
|
c: number;
|
|
14
|
-
rsi6
|
|
15
|
-
rsi12
|
|
14
|
+
rsi6: number | null;
|
|
15
|
+
rsi12: number | null;
|
|
16
16
|
}[];
|
|
17
17
|
interface RsiType {
|
|
18
18
|
getRsi6: (list: ListType) => ResRsi6Type;
|
|
@@ -34,7 +34,7 @@ var Rsi = /** @class */ (function () {
|
|
|
34
34
|
var res = [];
|
|
35
35
|
// 前5筆
|
|
36
36
|
for (var i = 0; i < 5; i++) {
|
|
37
|
-
res[i] = __assign(__assign({}, list[i]), { rsi6:
|
|
37
|
+
res[i] = __assign(__assign({}, list[i]), { rsi6: null });
|
|
38
38
|
}
|
|
39
39
|
// 第6筆Rsi
|
|
40
40
|
var beforeUpAvg = this.getStartUpAvg(list, 6);
|
|
@@ -68,7 +68,7 @@ var Rsi = /** @class */ (function () {
|
|
|
68
68
|
var res = [];
|
|
69
69
|
// 前11筆
|
|
70
70
|
for (var i = 0; i < 11; i++) {
|
|
71
|
-
res[i] = __assign(__assign({}, list[i]), { rsi12:
|
|
71
|
+
res[i] = __assign(__assign({}, list[i]), { rsi12: null });
|
|
72
72
|
}
|
|
73
73
|
// 第12筆Rsi
|
|
74
74
|
var beforeUpAvg = this.getStartUpAvg(list, 12);
|
|
@@ -5,16 +5,16 @@ type ListType = {
|
|
|
5
5
|
}[];
|
|
6
6
|
type ResWilliams9Type = {
|
|
7
7
|
c: number;
|
|
8
|
-
williams9
|
|
8
|
+
williams9: number | null;
|
|
9
9
|
}[];
|
|
10
10
|
type ResWilliams18Type = {
|
|
11
11
|
c: number;
|
|
12
|
-
williams18
|
|
12
|
+
williams18: number | null;
|
|
13
13
|
}[];
|
|
14
14
|
type ResAllWilliamsType = {
|
|
15
15
|
c: number;
|
|
16
|
-
williams18
|
|
17
|
-
williams9
|
|
16
|
+
williams18: number | null;
|
|
17
|
+
williams9: number | null;
|
|
18
18
|
}[];
|
|
19
19
|
interface WilliamsType {
|
|
20
20
|
getWilliams9: (list: ListType) => ResWilliams9Type;
|
|
@@ -34,7 +34,7 @@ var Williams = /** @class */ (function () {
|
|
|
34
34
|
var res = [];
|
|
35
35
|
for (var i = 0; i < list.length; i++) {
|
|
36
36
|
if (i < 9)
|
|
37
|
-
res[i] = __assign(__assign({}, list[i]), { williams9:
|
|
37
|
+
res[i] = __assign(__assign({}, list[i]), { williams9: null });
|
|
38
38
|
else {
|
|
39
39
|
var maxList = list.slice(i - 8, i).map(function (item) { return item["h"]; });
|
|
40
40
|
var minList = list.slice(i - 8, i).map(function (item) { return item["l"]; });
|
|
@@ -56,7 +56,7 @@ var Williams = /** @class */ (function () {
|
|
|
56
56
|
var res = [];
|
|
57
57
|
for (var i = 0; i < list.length; i++) {
|
|
58
58
|
if (i < 18)
|
|
59
|
-
res[i] = __assign(__assign({}, list[i]), {
|
|
59
|
+
res[i] = __assign(__assign({}, list[i]), { williams18: null });
|
|
60
60
|
else {
|
|
61
61
|
var maxList = list.slice(i - 17, i).map(function (item) { return item["h"]; });
|
|
62
62
|
var minList = list.slice(i - 17, i).map(function (item) { return item["l"]; });
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function isJSON(str: string): boolean;
|