@ch20026103/anysis 0.0.16-beta1 → 0.0.16-beta2
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/SwingExtremes/index.d.ts +4 -1
- package/dist/cjs/analyze/SwingExtremes/index.js +17 -40
- package/dist/cjs/analyze/SwingExtremes/index.test.js +18 -4
- package/dist/esm/analyze/SwingExtremes/index.d.ts +4 -1
- package/dist/esm/analyze/SwingExtremes/index.js +17 -40
- package/dist/esm/analyze/SwingExtremes/index.test.js +18 -4
- package/dist/umd/index.js +17 -40
- package/package.json +1 -1
|
@@ -5,5 +5,8 @@ export declare enum SwingExtremesType {
|
|
|
5
5
|
type Index = number;
|
|
6
6
|
export declare function findPeaksByGradient(prices: number[], level?: number): Index[];
|
|
7
7
|
export declare function findTroughByGradient(prices: number[], level?: number): Index[];
|
|
8
|
-
export declare function SwingExtremes(y: number[],
|
|
8
|
+
export declare function SwingExtremes(y: number[], level?: number): {
|
|
9
|
+
index: Index;
|
|
10
|
+
type: SwingExtremesType;
|
|
11
|
+
}[];
|
|
9
12
|
export {};
|
|
@@ -60,48 +60,25 @@ function findTroughByGradient(prices, level) {
|
|
|
60
60
|
return troughs;
|
|
61
61
|
}
|
|
62
62
|
exports.findTroughByGradient = findTroughByGradient;
|
|
63
|
-
function SwingExtremes(y,
|
|
63
|
+
function SwingExtremes(y, level) {
|
|
64
64
|
if (level === void 0) { level = 1; }
|
|
65
|
-
|
|
66
|
-
var
|
|
67
|
-
var
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
-
else
|
|
80
|
-
result.push(indexs[i]);
|
|
81
|
-
}
|
|
82
|
-
return result;
|
|
83
|
-
}
|
|
84
|
-
if (type === SwingExtremesType.Trough) {
|
|
85
|
-
var result = [];
|
|
86
|
-
var indexs = findTroughByGradient(y, level);
|
|
87
|
-
result.push(indexs[0]);
|
|
88
|
-
for (var i = 1; i < indexs.length; i++) {
|
|
89
|
-
if (y[indexs[i]] < y[result[result.length - 1]] &&
|
|
90
|
-
y[indexs[i]] < y[result[result.length - 2]]) {
|
|
91
|
-
result[result.length - 1] = indexs[i];
|
|
92
|
-
}
|
|
93
|
-
else if (y[indexs[i + 1]] > y[i] &&
|
|
94
|
-
y[indexs[i]] < y[result[result.length - 1]]) {
|
|
95
|
-
result.pop();
|
|
96
|
-
result.push(indexs[i]);
|
|
97
|
-
}
|
|
98
|
-
else
|
|
99
|
-
result.push(indexs[i]);
|
|
100
|
-
}
|
|
101
|
-
return result;
|
|
65
|
+
try {
|
|
66
|
+
var peaks = findPeaksByGradient(y, level);
|
|
67
|
+
var peakObjs = peaks.map(function (index) { return ({
|
|
68
|
+
index: index,
|
|
69
|
+
type: SwingExtremesType.Peak,
|
|
70
|
+
}); });
|
|
71
|
+
var troughs = findTroughByGradient(y, level);
|
|
72
|
+
var troughObjs = troughs.map(function (index) { return ({
|
|
73
|
+
index: index,
|
|
74
|
+
type: SwingExtremesType.Trough,
|
|
75
|
+
}); });
|
|
76
|
+
var merge = peakObjs.concat(troughObjs);
|
|
77
|
+
return merge.sort(function (a, b) { return a.index - b.index; });
|
|
102
78
|
}
|
|
103
|
-
|
|
104
|
-
|
|
79
|
+
catch (err) {
|
|
80
|
+
console.error(err);
|
|
81
|
+
return [];
|
|
105
82
|
}
|
|
106
83
|
}
|
|
107
84
|
exports.SwingExtremes = SwingExtremes;
|
|
@@ -16,11 +16,25 @@ describe("test SwingExtremes", function () {
|
|
|
16
16
|
expect(res).toEqual([2, 5, 8, 12, 14]);
|
|
17
17
|
});
|
|
18
18
|
it("test SwingExtremes Peak", function () {
|
|
19
|
-
var
|
|
20
|
-
|
|
19
|
+
var arr = (0, index_1.SwingExtremes)(prices);
|
|
20
|
+
var res = arr.filter(function (x) { return x.type === index_1.SwingExtremesType.Peak; });
|
|
21
|
+
expect(res).toEqual([
|
|
22
|
+
{ index: 1, type: "Peak" },
|
|
23
|
+
{ index: 4, type: "Peak" },
|
|
24
|
+
{ index: 6, type: "Peak" },
|
|
25
|
+
{ index: 10, type: "Peak" },
|
|
26
|
+
{ index: 13, type: "Peak" },
|
|
27
|
+
]);
|
|
21
28
|
});
|
|
22
29
|
it("test SwingExtremes Trough", function () {
|
|
23
|
-
var
|
|
24
|
-
|
|
30
|
+
var arr = (0, index_1.SwingExtremes)(prices);
|
|
31
|
+
var res = arr.filter(function (x) { return x.type === index_1.SwingExtremesType.Trough; });
|
|
32
|
+
expect(res).toEqual([
|
|
33
|
+
{ index: 2, type: "Trough" },
|
|
34
|
+
{ index: 5, type: "Trough" },
|
|
35
|
+
{ index: 8, type: "Trough" },
|
|
36
|
+
{ index: 12, type: "Trough" },
|
|
37
|
+
{ index: 14, type: "Trough" },
|
|
38
|
+
]);
|
|
25
39
|
});
|
|
26
40
|
});
|
|
@@ -5,5 +5,8 @@ export declare enum SwingExtremesType {
|
|
|
5
5
|
type Index = number;
|
|
6
6
|
export declare function findPeaksByGradient(prices: number[], level?: number): Index[];
|
|
7
7
|
export declare function findTroughByGradient(prices: number[], level?: number): Index[];
|
|
8
|
-
export declare function SwingExtremes(y: number[],
|
|
8
|
+
export declare function SwingExtremes(y: number[], level?: number): {
|
|
9
|
+
index: Index;
|
|
10
|
+
type: SwingExtremesType;
|
|
11
|
+
}[];
|
|
9
12
|
export {};
|
|
@@ -55,47 +55,24 @@ export function findTroughByGradient(prices, level) {
|
|
|
55
55
|
}
|
|
56
56
|
return troughs;
|
|
57
57
|
}
|
|
58
|
-
export function SwingExtremes(y,
|
|
58
|
+
export function SwingExtremes(y, level) {
|
|
59
59
|
if (level === void 0) { level = 1; }
|
|
60
|
-
|
|
61
|
-
var
|
|
62
|
-
var
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
else
|
|
75
|
-
result.push(indexs[i]);
|
|
76
|
-
}
|
|
77
|
-
return result;
|
|
78
|
-
}
|
|
79
|
-
if (type === SwingExtremesType.Trough) {
|
|
80
|
-
var result = [];
|
|
81
|
-
var indexs = findTroughByGradient(y, level);
|
|
82
|
-
result.push(indexs[0]);
|
|
83
|
-
for (var i = 1; i < indexs.length; i++) {
|
|
84
|
-
if (y[indexs[i]] < y[result[result.length - 1]] &&
|
|
85
|
-
y[indexs[i]] < y[result[result.length - 2]]) {
|
|
86
|
-
result[result.length - 1] = indexs[i];
|
|
87
|
-
}
|
|
88
|
-
else if (y[indexs[i + 1]] > y[i] &&
|
|
89
|
-
y[indexs[i]] < y[result[result.length - 1]]) {
|
|
90
|
-
result.pop();
|
|
91
|
-
result.push(indexs[i]);
|
|
92
|
-
}
|
|
93
|
-
else
|
|
94
|
-
result.push(indexs[i]);
|
|
95
|
-
}
|
|
96
|
-
return result;
|
|
60
|
+
try {
|
|
61
|
+
var peaks = findPeaksByGradient(y, level);
|
|
62
|
+
var peakObjs = peaks.map(function (index) { return ({
|
|
63
|
+
index: index,
|
|
64
|
+
type: SwingExtremesType.Peak,
|
|
65
|
+
}); });
|
|
66
|
+
var troughs = findTroughByGradient(y, level);
|
|
67
|
+
var troughObjs = troughs.map(function (index) { return ({
|
|
68
|
+
index: index,
|
|
69
|
+
type: SwingExtremesType.Trough,
|
|
70
|
+
}); });
|
|
71
|
+
var merge = peakObjs.concat(troughObjs);
|
|
72
|
+
return merge.sort(function (a, b) { return a.index - b.index; });
|
|
97
73
|
}
|
|
98
|
-
|
|
99
|
-
|
|
74
|
+
catch (err) {
|
|
75
|
+
console.error(err);
|
|
76
|
+
return [];
|
|
100
77
|
}
|
|
101
78
|
}
|
|
@@ -14,11 +14,25 @@ describe("test SwingExtremes", function () {
|
|
|
14
14
|
expect(res).toEqual([2, 5, 8, 12, 14]);
|
|
15
15
|
});
|
|
16
16
|
it("test SwingExtremes Peak", function () {
|
|
17
|
-
var
|
|
18
|
-
|
|
17
|
+
var arr = SwingExtremes(prices);
|
|
18
|
+
var res = arr.filter(function (x) { return x.type === SwingExtremesType.Peak; });
|
|
19
|
+
expect(res).toEqual([
|
|
20
|
+
{ index: 1, type: "Peak" },
|
|
21
|
+
{ index: 4, type: "Peak" },
|
|
22
|
+
{ index: 6, type: "Peak" },
|
|
23
|
+
{ index: 10, type: "Peak" },
|
|
24
|
+
{ index: 13, type: "Peak" },
|
|
25
|
+
]);
|
|
19
26
|
});
|
|
20
27
|
it("test SwingExtremes Trough", function () {
|
|
21
|
-
var
|
|
22
|
-
|
|
28
|
+
var arr = SwingExtremes(prices);
|
|
29
|
+
var res = arr.filter(function (x) { return x.type === SwingExtremesType.Trough; });
|
|
30
|
+
expect(res).toEqual([
|
|
31
|
+
{ index: 2, type: "Trough" },
|
|
32
|
+
{ index: 5, type: "Trough" },
|
|
33
|
+
{ index: 8, type: "Trough" },
|
|
34
|
+
{ index: 12, type: "Trough" },
|
|
35
|
+
{ index: 14, type: "Trough" },
|
|
36
|
+
]);
|
|
23
37
|
});
|
|
24
38
|
});
|
package/dist/umd/index.js
CHANGED
|
@@ -178,48 +178,25 @@
|
|
|
178
178
|
}
|
|
179
179
|
return troughs;
|
|
180
180
|
}
|
|
181
|
-
function SwingExtremes(y,
|
|
181
|
+
function SwingExtremes(y, level) {
|
|
182
182
|
if (level === void 0) { level = 1; }
|
|
183
|
-
|
|
184
|
-
var
|
|
185
|
-
var
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
else
|
|
198
|
-
result.push(indexs[i]);
|
|
199
|
-
}
|
|
200
|
-
return result;
|
|
201
|
-
}
|
|
202
|
-
if (type === exports.SwingExtremesType.Trough) {
|
|
203
|
-
var result = [];
|
|
204
|
-
var indexs = findTroughByGradient(y, level);
|
|
205
|
-
result.push(indexs[0]);
|
|
206
|
-
for (var i = 1; i < indexs.length; i++) {
|
|
207
|
-
if (y[indexs[i]] < y[result[result.length - 1]] &&
|
|
208
|
-
y[indexs[i]] < y[result[result.length - 2]]) {
|
|
209
|
-
result[result.length - 1] = indexs[i];
|
|
210
|
-
}
|
|
211
|
-
else if (y[indexs[i + 1]] > y[i] &&
|
|
212
|
-
y[indexs[i]] < y[result[result.length - 1]]) {
|
|
213
|
-
result.pop();
|
|
214
|
-
result.push(indexs[i]);
|
|
215
|
-
}
|
|
216
|
-
else
|
|
217
|
-
result.push(indexs[i]);
|
|
218
|
-
}
|
|
219
|
-
return result;
|
|
183
|
+
try {
|
|
184
|
+
var peaks = findPeaksByGradient(y, level);
|
|
185
|
+
var peakObjs = peaks.map(function (index) { return ({
|
|
186
|
+
index: index,
|
|
187
|
+
type: exports.SwingExtremesType.Peak,
|
|
188
|
+
}); });
|
|
189
|
+
var troughs = findTroughByGradient(y, level);
|
|
190
|
+
var troughObjs = troughs.map(function (index) { return ({
|
|
191
|
+
index: index,
|
|
192
|
+
type: exports.SwingExtremesType.Trough,
|
|
193
|
+
}); });
|
|
194
|
+
var merge = peakObjs.concat(troughObjs);
|
|
195
|
+
return merge.sort(function (a, b) { return a.index - b.index; });
|
|
220
196
|
}
|
|
221
|
-
|
|
222
|
-
|
|
197
|
+
catch (err) {
|
|
198
|
+
console.error(err);
|
|
199
|
+
return [];
|
|
223
200
|
}
|
|
224
201
|
}
|
|
225
202
|
|