@ch20026103/anysis 0.0.15-alpha → 0.0.16-beta

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 (61) hide show
  1. package/demo/main.js +12 -10
  2. package/dist/cjs/index.d.ts +1 -1
  3. package/dist/cjs/index.js +3 -3
  4. package/dist/cjs/stockSkills/boll.d.ts +25 -50
  5. package/dist/cjs/stockSkills/boll.js +9 -11
  6. package/dist/cjs/stockSkills/ema.d.ts +11 -33
  7. package/dist/cjs/stockSkills/gold.d.ts +13 -32
  8. package/dist/cjs/stockSkills/kd.d.ts +29 -72
  9. package/dist/cjs/stockSkills/kd.js +14 -11
  10. package/dist/cjs/stockSkills/kd.test.js +1 -1
  11. package/dist/cjs/stockSkills/ma.d.ts +39 -60
  12. package/dist/cjs/stockSkills/ma.js +16 -7
  13. package/dist/cjs/stockSkills/macd.d.ts +32 -63
  14. package/dist/cjs/stockSkills/macd.js +21 -24
  15. package/dist/cjs/stockSkills/obv.d.ts +18 -49
  16. package/dist/cjs/stockSkills/obv.js +3 -1
  17. package/dist/cjs/stockSkills/rsi.d.ts +10 -26
  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/dateFormat.d.ts +6 -3
  21. package/dist/cjs/stockSkills/utils/dateFormat.js +2 -2
  22. package/dist/cjs/stockSkills/utils/getWeekLine.d.ts +6 -15
  23. package/dist/cjs/stockSkills/utils/getWeekLine.js +3 -0
  24. package/dist/cjs/stockSkills/utils/getWeekLine.test.js +1 -0
  25. package/dist/cjs/stockSkills/vma.d.ts +13 -26
  26. package/dist/cjs/stockSkills/week.d.ts +16 -0
  27. package/dist/cjs/stockSkills/week.js +56 -0
  28. package/dist/cjs/stockSkills/week.test.d.ts +1 -0
  29. package/dist/cjs/stockSkills/week.test.js +60 -0
  30. package/dist/cjs/stockSkills/williams.d.ts +20 -32
  31. package/dist/esm/index.d.ts +1 -1
  32. package/dist/esm/index.js +1 -1
  33. package/dist/esm/stockSkills/boll.d.ts +25 -50
  34. package/dist/esm/stockSkills/boll.js +9 -11
  35. package/dist/esm/stockSkills/ema.d.ts +11 -33
  36. package/dist/esm/stockSkills/gold.d.ts +13 -32
  37. package/dist/esm/stockSkills/kd.d.ts +29 -72
  38. package/dist/esm/stockSkills/kd.js +14 -11
  39. package/dist/esm/stockSkills/kd.test.js +1 -1
  40. package/dist/esm/stockSkills/ma.d.ts +39 -60
  41. package/dist/esm/stockSkills/ma.js +16 -7
  42. package/dist/esm/stockSkills/macd.d.ts +32 -63
  43. package/dist/esm/stockSkills/macd.js +21 -24
  44. package/dist/esm/stockSkills/obv.d.ts +18 -49
  45. package/dist/esm/stockSkills/obv.js +3 -1
  46. package/dist/esm/stockSkills/rsi.d.ts +10 -26
  47. package/dist/esm/stockSkills/types.d.ts +10 -0
  48. package/dist/esm/stockSkills/types.js +1 -0
  49. package/dist/esm/stockSkills/utils/dateFormat.d.ts +6 -3
  50. package/dist/esm/stockSkills/utils/dateFormat.js +2 -2
  51. package/dist/esm/stockSkills/utils/getWeekLine.d.ts +6 -15
  52. package/dist/esm/stockSkills/utils/getWeekLine.js +3 -0
  53. package/dist/esm/stockSkills/utils/getWeekLine.test.js +1 -0
  54. package/dist/esm/stockSkills/vma.d.ts +13 -26
  55. package/dist/esm/stockSkills/week.d.ts +16 -0
  56. package/dist/esm/stockSkills/week.js +54 -0
  57. package/dist/esm/stockSkills/week.test.d.ts +1 -0
  58. package/dist/esm/stockSkills/week.test.js +58 -0
  59. package/dist/esm/stockSkills/williams.d.ts +20 -32
  60. package/dist/umd/index.js +125 -59
  61. package/package.json +1 -1
@@ -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,25 @@
1
- type ItemType = {
2
- h: number;
3
- l: number;
4
- c: number;
5
- v: number;
6
- };
1
+ import { StockListType, StockType } from "./types";
2
+ type NewStockType = Required<Pick<StockType, 'v'>> & StockType;
3
+ type NewStockListType = NewStockType[];
7
4
  type ResObv = {
8
5
  obv: number;
9
- } & ItemType;
6
+ } & NewStockType;
7
+ export type ObvResType = {
8
+ dataset: StockListType;
9
+ obv: number;
10
+ obvList: number[];
11
+ preClose: number;
12
+ obvMa: number;
13
+ type: number;
14
+ };
10
15
  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[];
16
+ init: (data: NewStockType, type: number) => ObvResType;
17
+ next: (data: NewStockType, preList: ObvResType, type: number) => ObvResType;
18
+ getObv: (list: NewStockListType, period: number) => ResObv[];
32
19
  }
33
20
  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[];
21
+ init(data: NewStockType, type: number): ObvResType;
22
+ next(data: NewStockType, preList: ObvResType, type: number): ObvResType;
23
+ getObv(list: NewStockListType): ResObv[];
55
24
  }
56
25
  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,29 +1,13 @@
1
- type DataType = {
2
- c: number;
3
- [key: string]: unknown;
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;
4
8
  };
5
- type ListType = DataType[];
6
9
  export default class Rsi {
7
- init(data: DataType, type: number): {
8
- dataset: DataType[];
9
- rsi: number;
10
- type: number;
11
- avgGain: number;
12
- avgLoss: number;
13
- };
14
- next(data: DataType, preList: {
15
- dataset: ListType;
16
- rsi: number;
17
- type: number;
18
- avgGain: number;
19
- avgLoss: number;
20
- }, type: number): {
21
- rsi: number;
22
- type: number;
23
- avgGain: number;
24
- avgLoss: number;
25
- dataset: ListType;
26
- };
27
- calculateRSI(prices: ListType, period?: number): number[];
10
+ init(data: StockType, type: number): RsiResType;
11
+ next(data: StockType, preList: RsiResType, type: number): RsiResType;
12
+ calculateRSI(prices: StockListType, period?: number): number[];
28
13
  }
29
- export {};
@@ -0,0 +1,10 @@
1
+ export type StockType = {
2
+ c: number;
3
+ v?: number;
4
+ l: number;
5
+ h: number;
6
+ o: number;
7
+ t: number;
8
+ [key: string]: unknown;
9
+ };
10
+ export type StockListType = StockType[];
@@ -0,0 +1 @@
1
+ export {};
@@ -6,7 +6,10 @@ export declare enum Mode {
6
6
  TimeStampToNumber = 5,
7
7
  StringToNumber = 6
8
8
  }
9
- declare function dateFormat(date: number, mode: Mode): number;
10
- declare function dateFormat(date: number, mode: Mode): string;
11
- declare function dateFormat(date: string, mode: Mode): number;
9
+ declare function dateFormat(date: number, mode: Mode.NumberToString): string;
10
+ declare function dateFormat(date: number, mode: Mode.NumberToTimeStamp): number;
11
+ declare function dateFormat(date: string, mode: Mode.StringToTimeStamp): number;
12
+ declare function dateFormat(date: number, mode: Mode.TimeStampToString): string;
13
+ declare function dateFormat(date: number, mode: Mode.TimeStampToNumber): number;
14
+ declare function dateFormat(date: string, mode: Mode.StringToNumber): number;
12
15
  export default dateFormat;
@@ -45,11 +45,11 @@ function dateFormat(date, mode) {
45
45
  return parseInt(res);
46
46
  }
47
47
  case Mode.StringToNumber: {
48
- var res = date.toString().replace("-", "").replace("-", "");
48
+ var res = date.replace(/-/g, '');
49
49
  return parseInt(res);
50
50
  }
51
51
  default:
52
- return "please setting mode";
52
+ throw new Error("请设置正确的模式");
53
53
  }
54
54
  }
55
55
  export default dateFormat;
@@ -1,17 +1,8 @@
1
- type ListType = {
2
- h: number;
3
- t: number;
4
- o: number;
5
- c: number;
6
- l: number;
7
- }[];
1
+ import { StockType } from "../types";
2
+ type NewStockType = Required<Pick<StockType, 'v'>> & StockType;
3
+ type NewStockListType = NewStockType[];
8
4
  export type ResType = {
9
- h: number;
10
- t: number;
11
- o: number;
12
- c: number;
13
- l: number;
14
- detail?: ListType;
15
- };
16
- export default function getWeekLine(list: ListType, detail: boolean): ResType[];
5
+ detail?: NewStockListType;
6
+ } & NewStockType;
7
+ export default function getWeekLine(list: NewStockListType, detail: boolean): ResType[];
17
8
  export {};
@@ -34,6 +34,7 @@ export default function getWeekLine(list, detail) {
34
34
  t: collectWeekData[collectWeekData.length - 1]["t"],
35
35
  h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
36
36
  l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
37
+ v: collectWeekData.reduce(function (pre, current) { return pre + current.v; }, 0),
37
38
  };
38
39
  res.push(addDetail(obj, collectWeekData, detail));
39
40
  collectWeekData = [];
@@ -47,6 +48,7 @@ export default function getWeekLine(list, detail) {
47
48
  t: collectWeekData[collectWeekData.length - 1]["t"],
48
49
  h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
49
50
  l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
51
+ v: collectWeekData.reduce(function (pre, current) { return pre + current.v; }, 0),
50
52
  };
51
53
  res.push(addDetail(obj, collectWeekData, detail));
52
54
  }
@@ -62,6 +64,7 @@ export default function getWeekLine(list, detail) {
62
64
  t: collectWeekData[collectWeekData.length - 1]["t"],
63
65
  h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
64
66
  l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
67
+ v: collectWeekData.reduce(function (pre, current) { return pre + current.v; }, 0),
65
68
  };
66
69
  res.push(addDetail(obj, collectWeekData, detail));
67
70
  }
@@ -9,6 +9,7 @@ describe("test getWeekLine methods", function () {
9
9
  l: 137,
10
10
  o: 155,
11
11
  t: 20211210,
12
+ v: 78444,
12
13
  });
13
14
  });
14
15
  });