@ch20026103/anysis 0.0.14-alpha → 0.0.16-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.
Files changed (49) hide show
  1. package/demo/main.js +19 -12
  2. package/dist/cjs/stockSkills/boll.d.ts +25 -50
  3. package/dist/cjs/stockSkills/boll.js +9 -11
  4. package/dist/cjs/stockSkills/ema.d.ts +11 -33
  5. package/dist/cjs/stockSkills/gold.d.ts +12 -32
  6. package/dist/cjs/stockSkills/kd.d.ts +29 -72
  7. package/dist/cjs/stockSkills/kd.js +14 -11
  8. package/dist/cjs/stockSkills/kd.test.js +1 -1
  9. package/dist/cjs/stockSkills/ma.d.ts +39 -60
  10. package/dist/cjs/stockSkills/ma.js +16 -7
  11. package/dist/cjs/stockSkills/macd.d.ts +32 -63
  12. package/dist/cjs/stockSkills/macd.js +21 -24
  13. package/dist/cjs/stockSkills/obv.d.ts +16 -49
  14. package/dist/cjs/stockSkills/obv.js +3 -1
  15. package/dist/cjs/stockSkills/rsi.d.ts +12 -31
  16. package/dist/cjs/stockSkills/rsi.js +79 -101
  17. package/dist/cjs/stockSkills/rsi.test.js +9 -20
  18. package/dist/cjs/stockSkills/types.d.ts +10 -0
  19. package/dist/cjs/stockSkills/types.js +2 -0
  20. package/dist/cjs/stockSkills/utils/getWeekLine.d.ts +4 -16
  21. package/dist/cjs/stockSkills/utils/getWeekLine.js +3 -0
  22. package/dist/cjs/stockSkills/utils/getWeekLine.test.js +1 -0
  23. package/dist/cjs/stockSkills/vma.d.ts +11 -26
  24. package/dist/cjs/stockSkills/williams.d.ts +20 -32
  25. package/dist/esm/stockSkills/boll.d.ts +25 -50
  26. package/dist/esm/stockSkills/boll.js +9 -11
  27. package/dist/esm/stockSkills/ema.d.ts +11 -33
  28. package/dist/esm/stockSkills/gold.d.ts +12 -32
  29. package/dist/esm/stockSkills/kd.d.ts +29 -72
  30. package/dist/esm/stockSkills/kd.js +14 -11
  31. package/dist/esm/stockSkills/kd.test.js +1 -1
  32. package/dist/esm/stockSkills/ma.d.ts +39 -60
  33. package/dist/esm/stockSkills/ma.js +16 -7
  34. package/dist/esm/stockSkills/macd.d.ts +32 -63
  35. package/dist/esm/stockSkills/macd.js +21 -24
  36. package/dist/esm/stockSkills/obv.d.ts +16 -49
  37. package/dist/esm/stockSkills/obv.js +3 -1
  38. package/dist/esm/stockSkills/rsi.d.ts +12 -31
  39. package/dist/esm/stockSkills/rsi.js +79 -101
  40. package/dist/esm/stockSkills/rsi.test.js +9 -20
  41. package/dist/esm/stockSkills/types.d.ts +10 -0
  42. package/dist/esm/stockSkills/types.js +1 -0
  43. package/dist/esm/stockSkills/utils/getWeekLine.d.ts +4 -16
  44. package/dist/esm/stockSkills/utils/getWeekLine.js +3 -0
  45. package/dist/esm/stockSkills/utils/getWeekLine.test.js +1 -0
  46. package/dist/esm/stockSkills/vma.d.ts +11 -26
  47. package/dist/esm/stockSkills/williams.d.ts +20 -32
  48. package/dist/umd/index.js +145 -155
  49. package/package.json +17 -15
@@ -1,76 +1,55 @@
1
- type DataType = {
2
- c: number;
3
- [key: string]: unknown;
1
+ import { StockListType, StockType } from "./types";
2
+ export type MaResType = {
3
+ dataset: StockListType;
4
+ ma: number;
5
+ type: number;
6
+ exclusionValue: {
7
+ "d+1": number;
8
+ d: number;
9
+ "d-1": number;
10
+ };
4
11
  };
5
- type ListType = DataType[];
6
12
  type ResMa5 = {
7
13
  c: number;
8
- ma5: number | null;
14
+ ma5: number;
9
15
  }[];
10
16
  type ResMa10 = {
11
17
  c: number;
12
- ma10: number | null;
18
+ ma10: number;
13
19
  }[];
14
20
  type ResMa20 = {
15
21
  c: number;
16
- ma20: number | null;
22
+ ma20: number;
17
23
  }[];
18
24
  type ResMa60 = {
19
25
  c: number;
20
- ma60: number | null;
26
+ ma60: number;
21
27
  }[];
22
28
  type ResMa = {
23
29
  c: number;
24
- ma: number | null;
30
+ ma: number;
25
31
  }[];
26
32
  type ResAllMa = {
27
33
  c: number;
28
- ma5: number | null;
29
- ma10: number | null;
30
- ma20: number | null;
31
- ma25: number | null;
32
- ma60: number | null;
34
+ ma5: number;
35
+ ma10: number;
36
+ ma20: number;
37
+ ma25: number;
38
+ ma60: number;
33
39
  }[];
34
40
  interface MaType {
35
- init: (data: DataType, type: number) => {
36
- dataset: ListType;
37
- ma: number;
38
- type: number;
39
- exclusionValue: {
40
- "d+1": number;
41
- d: number;
42
- "d-1": number;
43
- };
44
- };
45
- next: (data: DataType, preList: {
46
- dataset: ListType;
47
- ma: number;
48
- type: number;
49
- exclusionValue: {
50
- "d+1": number;
51
- d: number;
52
- "d-1": number;
53
- };
54
- }, type: number) => {
55
- dataset: ListType;
56
- ma: number;
57
- type: number;
58
- exclusionValue: {
59
- "d+1": number;
60
- d: number;
61
- "d-1": number;
62
- };
63
- };
64
- getAllMa: (list: ListType) => ResAllMa;
65
- getMa5: (list: ListType) => ResMa5;
66
- getMa10: (list: ListType) => ResMa10;
67
- getMa20: (list: ListType) => ResMa20;
68
- getMa60: (list: ListType) => ResMa60;
69
- getMa: (list: ListType, self: number) => ResMa;
41
+ init: (data: StockType, type: number) => MaResType;
42
+ next: (data: StockType, preList: MaResType, type: number) => MaResType;
43
+ getAllMa: (list: StockListType) => ResAllMa;
44
+ getMa5: (list: StockListType) => ResMa5;
45
+ getMa10: (list: StockListType) => ResMa10;
46
+ getMa20: (list: StockListType) => ResMa20;
47
+ getMa60: (list: StockListType) => ResMa60;
48
+ getMa: (list: StockListType, self: number) => ResMa;
70
49
  }
71
50
  export default class Ma implements MaType {
72
- init(data: DataType, type: number): {
73
- dataset: DataType[];
51
+ init(data: StockType, type: number): {
52
+ dataset: StockType[];
74
53
  ma: number;
75
54
  type: number;
76
55
  exclusionValue: {
@@ -79,12 +58,12 @@ export default class Ma implements MaType {
79
58
  "d-1": number;
80
59
  };
81
60
  };
82
- next(data: DataType, preList: {
83
- dataset: ListType;
61
+ next(data: StockType, preList: {
62
+ dataset: StockListType;
84
63
  ma: number;
85
64
  type: number;
86
65
  }, type: number): {
87
- dataset: ListType;
66
+ dataset: StockListType;
88
67
  ma: number;
89
68
  type: number;
90
69
  exclusionValue: {
@@ -93,11 +72,11 @@ export default class Ma implements MaType {
93
72
  "d-1": number;
94
73
  };
95
74
  };
96
- getAllMa(list: ListType): ResAllMa;
97
- getMa5(list: ListType): ResMa5;
98
- getMa10(list: ListType): ResMa10;
99
- getMa20(list: ListType): ResMa20;
100
- getMa60(list: ListType): ResMa60;
101
- getMa(list: ListType, self: number): ResMa;
75
+ getAllMa(list: StockListType): ResAllMa;
76
+ getMa5(list: StockListType): ResMa5;
77
+ getMa10(list: StockListType): ResMa10;
78
+ getMa20(list: StockListType): ResMa20;
79
+ getMa60(list: StockListType): ResMa60;
80
+ getMa(list: StockListType, self: number): ResMa;
102
81
  }
103
82
  export {};
@@ -17,7 +17,12 @@ var Ma = /** @class */ (function () {
17
17
  configurable: true,
18
18
  writable: true,
19
19
  value: function (data, type) {
20
- return { dataset: [data], ma: 0, type: type, exclusionValue: { "d+1": 0, d: 0, "d-1": 0 } };
20
+ return {
21
+ dataset: [data],
22
+ ma: 0,
23
+ type: type,
24
+ exclusionValue: { "d+1": 0, d: 0, "d-1": 0 },
25
+ };
21
26
  }
22
27
  });
23
28
  Object.defineProperty(Ma.prototype, "next", {
@@ -35,7 +40,11 @@ var Ma = /** @class */ (function () {
35
40
  };
36
41
  }
37
42
  else {
38
- var exclusionValue = { "d+1": preList.dataset[1].c, d: preList.dataset[0].c, "d-1": 0 };
43
+ var exclusionValue = {
44
+ "d+1": preList.dataset[1].c,
45
+ d: preList.dataset[0].c,
46
+ "d-1": 0,
47
+ };
39
48
  if (preList.dataset.length > type) {
40
49
  exclusionValue["d-1"] = exclusionValue.d;
41
50
  preList.dataset.shift();
@@ -72,7 +81,7 @@ var Ma = /** @class */ (function () {
72
81
  var res = [];
73
82
  for (var i = 0; i < list.length; i++) {
74
83
  if (i < 4)
75
- res[i] = __assign(__assign({}, list[i]), { ma5: null });
84
+ res[i] = __assign(__assign({}, list[i]), { ma5: 0 });
76
85
  else {
77
86
  var sum = list
78
87
  .slice(i - 4, i + 1)
@@ -92,7 +101,7 @@ var Ma = /** @class */ (function () {
92
101
  var res = [];
93
102
  for (var i = 0; i < list.length; i++) {
94
103
  if (i < 9)
95
- res[i] = __assign(__assign({}, list[i]), { ma10: null });
104
+ res[i] = __assign(__assign({}, list[i]), { ma10: 0 });
96
105
  else {
97
106
  var sum = list
98
107
  .slice(i - 9, i + 1)
@@ -112,7 +121,7 @@ var Ma = /** @class */ (function () {
112
121
  var res = [];
113
122
  for (var i = 0; i < list.length; i++) {
114
123
  if (i < 19)
115
- res[i] = __assign(__assign({}, list[i]), { ma20: null });
124
+ res[i] = __assign(__assign({}, list[i]), { ma20: 0 });
116
125
  else {
117
126
  var sum = list
118
127
  .slice(i - 19, i + 1)
@@ -132,7 +141,7 @@ var Ma = /** @class */ (function () {
132
141
  var res = [];
133
142
  for (var i = 0; i < list.length; i++) {
134
143
  if (i < 59)
135
- res[i] = __assign(__assign({}, list[i]), { ma60: null });
144
+ res[i] = __assign(__assign({}, list[i]), { ma60: 0 });
136
145
  else {
137
146
  var sum = list
138
147
  .slice(i - 59, i + 1)
@@ -152,7 +161,7 @@ var Ma = /** @class */ (function () {
152
161
  var res = [];
153
162
  for (var i = 0; i < list.length; i++) {
154
163
  if (i < self - 1)
155
- res[i] = __assign(__assign({}, list[i]), { ma: null });
164
+ res[i] = __assign(__assign({}, list[i]), { ma: 0 });
156
165
  else {
157
166
  var sum = list
158
167
  .slice(i - (self - 1), i + 1)
@@ -1,8 +1,4 @@
1
- type ItemType = {
2
- h: number;
3
- l: number;
4
- c: number;
5
- };
1
+ import { StockListType, StockType } from "./types";
6
2
  type ResEMA12Type = {
7
3
  h: number;
8
4
  l: number;
@@ -38,68 +34,41 @@ type ResAllMacdType = {
38
34
  MACD9: number | null;
39
35
  OSC: number | null;
40
36
  }[];
37
+ export type MacdResType = {
38
+ dataset: StockListType;
39
+ ema12: number;
40
+ ema26: number;
41
+ dif: number[];
42
+ macd: number;
43
+ osc: number;
44
+ };
41
45
  interface MacdType {
42
- init: (data: ItemType) => {
43
- dataset: ItemType[];
44
- ema12: number | null;
45
- ema26: number | null;
46
- dif: number[];
47
- macd: number | null;
48
- osc: number | null;
49
- };
50
- next: (data: ItemType, preList: {
51
- dataset: ItemType[];
52
- ema12: number | null;
53
- ema26: number | null;
54
- dif: number[];
55
- macd: number | null;
56
- osc: number | null;
57
- }) => {
58
- dataset: ItemType[];
59
- ema12: number | null;
60
- ema26: number | null;
61
- dif: number[];
62
- macd: number | null;
63
- osc: number | null;
64
- };
65
- getMACD: (list: ItemType[]) => ResAllMacdType;
66
- getDI: (item: ItemType) => number;
67
- getStartEMA: (list: ItemType[]) => number;
68
- getEMA12: (list: ItemType[]) => ResEMA12Type;
69
- getEMA26: (list: ItemType[]) => ResEMA26Type;
70
- getDIF: (list: ItemType[], ResEMA12: ResEMA12Type, ResEMA26: ResEMA26Type) => ResDifType;
71
- getMACD9: (list: ItemType[], DIF: ResDifType) => ResMacd9Type;
46
+ init: (data: StockType) => MacdResType;
47
+ next: (data: StockType, preList: MacdResType) => MacdResType;
48
+ getMACD: (list: StockType[]) => ResAllMacdType;
49
+ getDI: (item: StockType) => number;
50
+ getStartEMA: (list: StockType[]) => number;
51
+ getEMA12: (list: StockType[]) => ResEMA12Type;
52
+ getEMA26: (list: StockType[]) => ResEMA26Type;
53
+ getDIF: (list: StockType[], ResEMA12: ResEMA12Type, ResEMA26: ResEMA26Type) => ResDifType;
54
+ getMACD9: (list: StockType[], DIF: ResDifType) => ResMacd9Type;
72
55
  }
73
56
  export default class MACD implements MacdType {
74
- init(data: ItemType): {
75
- dataset: ItemType[];
76
- ema12: number | null;
77
- ema26: number | null;
78
- dif: number[];
79
- macd: number | null;
80
- osc: number | null;
81
- };
82
- next(data: ItemType, preList: {
83
- dataset: ItemType[];
84
- ema12: number | null;
85
- ema26: number | null;
86
- dif: number[];
87
- macd: number | null;
88
- osc: number | null;
89
- }): {
90
- dataset: ItemType[];
91
- ema12: number | null;
92
- ema26: number | null;
57
+ init(data: StockType): MacdResType;
58
+ next(data: StockType, preList: MacdResType): {
59
+ dataset: StockListType;
60
+ ema12: number;
61
+ ema26: number;
93
62
  dif: number[];
94
- macd: number | null;
95
- osc: number | null;
63
+ macd: number;
64
+ osc: number;
96
65
  };
97
- getMACD(list: ItemType[]): ResAllMacdType;
98
- getDI(item: ItemType): number;
99
- getStartEMA(arr: ItemType[]): number;
100
- getEMA12(list: ItemType[]): ResEMA12Type;
101
- getEMA26(list: ItemType[]): ResEMA26Type;
102
- getDIF(list: ItemType[], ResEMA12: ResEMA12Type, ResEMA26: ResEMA26Type): ResDifType;
103
- getMACD9(list: ItemType[], DIF: ResDifType): ResMacd9Type;
66
+ getMACD(list: StockType[]): ResAllMacdType;
67
+ getDI(item: StockType): number;
68
+ getStartEMA(arr: StockType[]): number;
69
+ getEMA12(list: StockType[]): ResEMA12Type;
70
+ getEMA26(list: StockType[]): ResEMA26Type;
71
+ getDIF(list: StockType[], ResEMA12: ResEMA12Type, ResEMA26: ResEMA26Type): ResDifType;
72
+ getMACD9(list: StockType[], DIF: ResDifType): ResMacd9Type;
104
73
  }
105
74
  export {};
@@ -19,11 +19,11 @@ var MACD = /** @class */ (function () {
19
19
  value: function (data) {
20
20
  return {
21
21
  dataset: [data],
22
- ema12: null,
23
- ema26: null,
22
+ ema12: 0,
23
+ ema26: 0,
24
24
  dif: [],
25
- macd: null,
26
- osc: null,
25
+ macd: 0,
26
+ osc: 0,
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 = null;
40
+ var ema12 = 0;
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 = null;
51
+ var ema26 = 0;
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,36 +59,33 @@ var MACD = /** @class */ (function () {
59
59
  ema26 = Math.round(ema26 * 100) / 100;
60
60
  }
61
61
  // DIF
62
- var dif = null;
62
+ var dif = 0;
63
63
  if (ema12 && ema26) {
64
64
  dif = ema12 - ema26;
65
65
  dif = Math.round(dif * 100) / 100;
66
66
  (_a = preList.dif) === null || _a === void 0 ? void 0 : _a.push(dif);
67
- if (preList.dif.length > 9)
68
- (_b = preList.dif) === null || _b === void 0 ? void 0 : _b.shift();
69
67
  }
70
68
  // MACD & OSC
71
- var macd = null;
72
- var osc = null;
69
+ var macd = 0;
70
+ var osc = 0;
73
71
  if (preList.dif.length === 9) {
74
- if (preList.macd === null) {
75
- macd = preList.dif.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
76
- for (var i = 0; i < 9; i++) {
77
- var item = preList.dif[i];
78
- macd = macd + ((item - macd) * 2) / 10;
79
- macd = Math.round(macd * 100) / 100;
80
- osc = item - macd;
81
- osc = Math.round(osc * 100) / 100;
82
- }
83
- }
84
- else {
85
- macd = preList.macd + ((dif - preList.macd) * 2) / 10;
72
+ macd = preList.dif.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
73
+ for (var i = 0; i < 9; i++) {
74
+ var item = preList.dif[i];
75
+ macd = macd + ((item - macd) * 2) / 10;
86
76
  macd = Math.round(macd * 100) / 100;
87
- var item = preList.dif[preList.dif.length - 1];
88
77
  osc = item - macd;
89
78
  osc = Math.round(osc * 100) / 100;
90
79
  }
91
80
  }
81
+ else if (preList.dif.length > 9) {
82
+ macd = preList.macd + ((dif - preList.macd) * 2) / 10;
83
+ macd = Math.round(macd * 100) / 100;
84
+ var item = preList.dif[preList.dif.length - 1];
85
+ osc = item - macd;
86
+ osc = Math.round(osc * 100) / 100;
87
+ (_b = preList.dif) === null || _b === void 0 ? void 0 : _b.shift();
88
+ }
92
89
  return {
93
90
  dataset: preList.dataset,
94
91
  ema12: ema12,
@@ -1,56 +1,23 @@
1
- type ItemType = {
2
- h: number;
3
- l: number;
4
- c: number;
5
- v: number;
6
- };
1
+ import { StockListType, StockType } from "./types";
7
2
  type ResObv = {
8
3
  obv: number;
9
- } & ItemType;
4
+ } & StockType;
5
+ export type ObvResType = {
6
+ dataset: StockListType;
7
+ obv: number;
8
+ obvList: number[];
9
+ preClose: number;
10
+ obvMa: number;
11
+ type: number;
12
+ };
10
13
  interface ObvType {
11
- init: (data: ItemType, type: number) => {
12
- dataset: ItemType[];
13
- obv: number;
14
- obvList: number[];
15
- preClose: number;
16
- obvMa: number;
17
- };
18
- next: (data: ItemType, preList: {
19
- dataset: ItemType[];
20
- obv: number;
21
- obvList: number[];
22
- preClose: number;
23
- obvMa: number;
24
- }, type: number) => {
25
- dataset: ItemType[];
26
- obv: number;
27
- obvList: number[];
28
- preClose: number;
29
- obvMa: number;
30
- };
31
- getObv: (list: ItemType[], period: number) => ResObv[];
14
+ init: (data: StockType, type: number) => ObvResType;
15
+ next: (data: StockType, preList: ObvResType, type: number) => ObvResType;
16
+ getObv: (list: StockType[], period: number) => ResObv[];
32
17
  }
33
18
  export default class Obv implements ObvType {
34
- init(data: ItemType, type: number): {
35
- dataset: ItemType[];
36
- obv: number;
37
- obvList: number[];
38
- preClose: number;
39
- obvMa: number;
40
- };
41
- next(data: ItemType, preList: {
42
- dataset: ItemType[];
43
- obv: number;
44
- obvList: number[];
45
- preClose: number;
46
- obvMa: number;
47
- }, type: number): {
48
- dataset: ItemType[];
49
- obv: number;
50
- preClose: number;
51
- obvList: number[];
52
- obvMa: number;
53
- };
54
- getObv(list: ItemType[]): ResObv[];
19
+ init(data: StockType, type: number): ObvResType;
20
+ next(data: StockType, preList: ObvResType, type: number): ObvResType;
21
+ getObv(list: StockType[]): ResObv[];
55
22
  }
56
23
  export {};
@@ -32,6 +32,7 @@ var Obv = /** @class */ (function () {
32
32
  obvList: [data.v],
33
33
  preClose: data.c,
34
34
  obvMa: 0,
35
+ type: type,
35
36
  };
36
37
  }
37
38
  });
@@ -62,7 +63,8 @@ var Obv = /** @class */ (function () {
62
63
  obv: obv,
63
64
  preClose: currentClose,
64
65
  obvList: obvList,
65
- obvMa: vma
66
+ obvMa: vma,
67
+ type: type,
66
68
  };
67
69
  }
68
70
  });
@@ -1,32 +1,13 @@
1
- type ListType = {
2
- c: number;
3
- }[];
4
- type ResRsi6Type = {
5
- c: number;
6
- rsi6: number | null;
7
- }[];
8
- type ResRsi12Type = {
9
- c: number;
10
- rsi12: number | null;
11
- }[];
12
- type ResAllRsiType = {
13
- c: number;
14
- rsi6: number | null;
15
- rsi12: number | null;
16
- }[];
17
- interface RsiType {
18
- getRsi6: (list: ListType) => ResRsi6Type;
19
- getRsi12: (list: ListType) => ResRsi12Type;
20
- getStartUpAvg: (list: ListType, count: number) => number;
21
- getStartDownAvg: (list: ListType, count: number) => number;
22
- getRsi: (UpAvg: number, DownAvg: number) => number;
1
+ import { StockListType, StockType } from "./types";
2
+ export type RsiResType = {
3
+ dataset: StockListType;
4
+ rsi: number;
5
+ type: number;
6
+ avgGain: number;
7
+ avgLoss: number;
8
+ };
9
+ export default class Rsi {
10
+ init(data: StockType, type: number): RsiResType;
11
+ next(data: StockType, preList: RsiResType, type: number): RsiResType;
12
+ calculateRSI(prices: StockListType, period?: number): number[];
23
13
  }
24
- export default class Rsi implements RsiType {
25
- getAllRsi(list: ListType): ResAllRsiType;
26
- getRsi6(list: ListType): ResRsi6Type;
27
- getRsi12(list: ListType): ResRsi12Type;
28
- getStartUpAvg(list: ListType, count: number): number;
29
- getStartDownAvg(list: ListType, count: number): number;
30
- getRsi(UpAvg: number, DownAvg: number): number;
31
- }
32
- export {};