@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.
@@ -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[], type: SwingExtremesType, level?: number): Index[];
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, type, level) {
63
+ function SwingExtremes(y, level) {
64
64
  if (level === void 0) { level = 1; }
65
- if (type === SwingExtremesType.Peak) {
66
- var result = [];
67
- var indexs = findPeaksByGradient(y, level);
68
- result.push(indexs[0]);
69
- for (var i = 1; i < indexs.length; i++) {
70
- if (y[indexs[i]] > y[result[result.length - 1]] &&
71
- y[indexs[i]] > y[result[result.length - 2]]) {
72
- result[result.length - 1] = indexs[i];
73
- }
74
- else if (y[indexs[i + 1]] < y[i] &&
75
- y[indexs[i]] > y[result[result.length - 1]]) {
76
- result.pop();
77
- result.push(indexs[i]);
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
- else {
104
- throw new Error("Invalid SwingExtremesType");
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 res = (0, index_1.SwingExtremes)(prices, index_1.SwingExtremesType.Peak);
20
- expect(res).toEqual([1, 6, 10, 13]);
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 res = (0, index_1.SwingExtremes)(prices, index_1.SwingExtremesType.Trough);
24
- expect(res).toEqual([2, 14]);
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[], type: SwingExtremesType, level?: number): Index[];
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, type, level) {
58
+ export function SwingExtremes(y, level) {
59
59
  if (level === void 0) { level = 1; }
60
- if (type === SwingExtremesType.Peak) {
61
- var result = [];
62
- var indexs = findPeaksByGradient(y, level);
63
- result.push(indexs[0]);
64
- for (var i = 1; i < indexs.length; i++) {
65
- if (y[indexs[i]] > y[result[result.length - 1]] &&
66
- y[indexs[i]] > y[result[result.length - 2]]) {
67
- result[result.length - 1] = indexs[i];
68
- }
69
- else if (y[indexs[i + 1]] < y[i] &&
70
- y[indexs[i]] > y[result[result.length - 1]]) {
71
- result.pop();
72
- result.push(indexs[i]);
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
- else {
99
- throw new Error("Invalid SwingExtremesType");
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 res = SwingExtremes(prices, SwingExtremesType.Peak);
18
- expect(res).toEqual([1, 6, 10, 13]);
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 res = SwingExtremes(prices, SwingExtremesType.Trough);
22
- expect(res).toEqual([2, 14]);
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, type, level) {
181
+ function SwingExtremes(y, level) {
182
182
  if (level === void 0) { level = 1; }
183
- if (type === exports.SwingExtremesType.Peak) {
184
- var result = [];
185
- var indexs = findPeaksByGradient(y, level);
186
- result.push(indexs[0]);
187
- for (var i = 1; i < indexs.length; i++) {
188
- if (y[indexs[i]] > y[result[result.length - 1]] &&
189
- y[indexs[i]] > y[result[result.length - 2]]) {
190
- result[result.length - 1] = indexs[i];
191
- }
192
- else if (y[indexs[i + 1]] < y[i] &&
193
- y[indexs[i]] > y[result[result.length - 1]]) {
194
- result.pop();
195
- result.push(indexs[i]);
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
- else {
222
- throw new Error("Invalid SwingExtremesType");
197
+ catch (err) {
198
+ console.error(err);
199
+ return [];
223
200
  }
224
201
  }
225
202
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ch20026103/anysis",
3
- "version": "0.0.16-beta1",
3
+ "version": "0.0.16-beta2",
4
4
  "description": "provide many analyze methods in the library.",
5
5
  "keywords": [],
6
6
  "bugs": "git@github.com:cosmic1330/anysis/issues",