@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
@@ -19,7 +19,12 @@ var Ma = /** @class */ (function () {
19
19
  configurable: true,
20
20
  writable: true,
21
21
  value: function (data, type) {
22
- return { dataset: [data], ma: 0, type: type, exclusionValue: { "d+1": 0, d: 0, "d-1": 0 } };
22
+ return {
23
+ dataset: [data],
24
+ ma: 0,
25
+ type: type,
26
+ exclusionValue: { "d+1": 0, d: 0, "d-1": 0 },
27
+ };
23
28
  }
24
29
  });
25
30
  Object.defineProperty(Ma.prototype, "next", {
@@ -37,7 +42,11 @@ var Ma = /** @class */ (function () {
37
42
  };
38
43
  }
39
44
  else {
40
- var exclusionValue = { "d+1": preList.dataset[1].c, d: preList.dataset[0].c, "d-1": 0 };
45
+ var exclusionValue = {
46
+ "d+1": preList.dataset[1].c,
47
+ d: preList.dataset[0].c,
48
+ "d-1": 0,
49
+ };
41
50
  if (preList.dataset.length > type) {
42
51
  exclusionValue["d-1"] = exclusionValue.d;
43
52
  preList.dataset.shift();
@@ -74,7 +83,7 @@ var Ma = /** @class */ (function () {
74
83
  var res = [];
75
84
  for (var i = 0; i < list.length; i++) {
76
85
  if (i < 4)
77
- res[i] = __assign(__assign({}, list[i]), { ma5: null });
86
+ res[i] = __assign(__assign({}, list[i]), { ma5: 0 });
78
87
  else {
79
88
  var sum = list
80
89
  .slice(i - 4, i + 1)
@@ -94,7 +103,7 @@ var Ma = /** @class */ (function () {
94
103
  var res = [];
95
104
  for (var i = 0; i < list.length; i++) {
96
105
  if (i < 9)
97
- res[i] = __assign(__assign({}, list[i]), { ma10: null });
106
+ res[i] = __assign(__assign({}, list[i]), { ma10: 0 });
98
107
  else {
99
108
  var sum = list
100
109
  .slice(i - 9, i + 1)
@@ -114,7 +123,7 @@ var Ma = /** @class */ (function () {
114
123
  var res = [];
115
124
  for (var i = 0; i < list.length; i++) {
116
125
  if (i < 19)
117
- res[i] = __assign(__assign({}, list[i]), { ma20: null });
126
+ res[i] = __assign(__assign({}, list[i]), { ma20: 0 });
118
127
  else {
119
128
  var sum = list
120
129
  .slice(i - 19, i + 1)
@@ -134,7 +143,7 @@ var Ma = /** @class */ (function () {
134
143
  var res = [];
135
144
  for (var i = 0; i < list.length; i++) {
136
145
  if (i < 59)
137
- res[i] = __assign(__assign({}, list[i]), { ma60: null });
146
+ res[i] = __assign(__assign({}, list[i]), { ma60: 0 });
138
147
  else {
139
148
  var sum = list
140
149
  .slice(i - 59, i + 1)
@@ -154,7 +163,7 @@ var Ma = /** @class */ (function () {
154
163
  var res = [];
155
164
  for (var i = 0; i < list.length; i++) {
156
165
  if (i < self - 1)
157
- res[i] = __assign(__assign({}, list[i]), { ma: null });
166
+ res[i] = __assign(__assign({}, list[i]), { ma: 0 });
158
167
  else {
159
168
  var sum = list
160
169
  .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 {};
@@ -21,11 +21,11 @@ var MACD = /** @class */ (function () {
21
21
  value: function (data) {
22
22
  return {
23
23
  dataset: [data],
24
- ema12: null,
25
- ema26: null,
24
+ ema12: 0,
25
+ ema26: 0,
26
26
  dif: [],
27
- macd: null,
28
- osc: null,
27
+ macd: 0,
28
+ osc: 0,
29
29
  };
30
30
  }
31
31
  });
@@ -39,7 +39,7 @@ var MACD = /** @class */ (function () {
39
39
  if (preList.dataset.length > 34)
40
40
  preList.dataset.shift();
41
41
  // EMA12
42
- var ema12 = null;
42
+ var ema12 = 0;
43
43
  if (preList.dataset.length === 12) {
44
44
  ema12 = this.getStartEMA(preList.dataset);
45
45
  ema12 = (ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
@@ -50,7 +50,7 @@ var MACD = /** @class */ (function () {
50
50
  ema12 = Math.round(ema12 * 100) / 100;
51
51
  }
52
52
  // EMA26
53
- var ema26 = null;
53
+ var ema26 = 0;
54
54
  if (preList.dataset.length === 26) {
55
55
  ema26 = this.getStartEMA(preList.dataset);
56
56
  ema26 = (ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
@@ -61,36 +61,33 @@ var MACD = /** @class */ (function () {
61
61
  ema26 = Math.round(ema26 * 100) / 100;
62
62
  }
63
63
  // DIF
64
- var dif = null;
64
+ var dif = 0;
65
65
  if (ema12 && ema26) {
66
66
  dif = ema12 - ema26;
67
67
  dif = Math.round(dif * 100) / 100;
68
68
  (_a = preList.dif) === null || _a === void 0 ? void 0 : _a.push(dif);
69
- if (preList.dif.length > 9)
70
- (_b = preList.dif) === null || _b === void 0 ? void 0 : _b.shift();
71
69
  }
72
70
  // MACD & OSC
73
- var macd = null;
74
- var osc = null;
71
+ var macd = 0;
72
+ var osc = 0;
75
73
  if (preList.dif.length === 9) {
76
- if (preList.macd === null) {
77
- macd = preList.dif.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
78
- for (var i = 0; i < 9; i++) {
79
- var item = preList.dif[i];
80
- macd = macd + ((item - macd) * 2) / 10;
81
- macd = Math.round(macd * 100) / 100;
82
- osc = item - macd;
83
- osc = Math.round(osc * 100) / 100;
84
- }
85
- }
86
- else {
87
- macd = preList.macd + ((dif - preList.macd) * 2) / 10;
74
+ macd = preList.dif.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
75
+ for (var i = 0; i < 9; i++) {
76
+ var item = preList.dif[i];
77
+ macd = macd + ((item - macd) * 2) / 10;
88
78
  macd = Math.round(macd * 100) / 100;
89
- var item = preList.dif[preList.dif.length - 1];
90
79
  osc = item - macd;
91
80
  osc = Math.round(osc * 100) / 100;
92
81
  }
93
82
  }
83
+ else if (preList.dif.length > 9) {
84
+ macd = preList.macd + ((dif - preList.macd) * 2) / 10;
85
+ macd = Math.round(macd * 100) / 100;
86
+ var item = preList.dif[preList.dif.length - 1];
87
+ osc = item - macd;
88
+ osc = Math.round(osc * 100) / 100;
89
+ (_b = preList.dif) === null || _b === void 0 ? void 0 : _b.shift();
90
+ }
94
91
  return {
95
92
  dataset: preList.dataset,
96
93
  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 {};
@@ -34,6 +34,7 @@ var Obv = /** @class */ (function () {
34
34
  obvList: [data.v],
35
35
  preClose: data.c,
36
36
  obvMa: 0,
37
+ type: type,
37
38
  };
38
39
  }
39
40
  });
@@ -64,7 +65,8 @@ var Obv = /** @class */ (function () {
64
65
  obv: obv,
65
66
  preClose: currentClose,
66
67
  obvList: obvList,
67
- obvMa: vma
68
+ obvMa: vma,
69
+ type: type,
68
70
  };
69
71
  }
70
72
  });
@@ -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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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;
@@ -48,11 +48,11 @@ function dateFormat(date, mode) {
48
48
  return parseInt(res);
49
49
  }
50
50
  case Mode.StringToNumber: {
51
- var res = date.toString().replace("-", "").replace("-", "");
51
+ var res = date.replace(/-/g, '');
52
52
  return parseInt(res);
53
53
  }
54
54
  default:
55
- return "please setting mode";
55
+ throw new Error("请设置正确的模式");
56
56
  }
57
57
  }
58
58
  exports.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 {};
@@ -36,6 +36,7 @@ function getWeekLine(list, detail) {
36
36
  t: collectWeekData[collectWeekData.length - 1]["t"],
37
37
  h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
38
38
  l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
39
+ v: collectWeekData.reduce(function (pre, current) { return pre + current.v; }, 0),
39
40
  };
40
41
  res.push(addDetail(obj, collectWeekData, detail));
41
42
  collectWeekData = [];
@@ -49,6 +50,7 @@ function getWeekLine(list, detail) {
49
50
  t: collectWeekData[collectWeekData.length - 1]["t"],
50
51
  h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
51
52
  l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
53
+ v: collectWeekData.reduce(function (pre, current) { return pre + current.v; }, 0),
52
54
  };
53
55
  res.push(addDetail(obj, collectWeekData, detail));
54
56
  }
@@ -64,6 +66,7 @@ function getWeekLine(list, detail) {
64
66
  t: collectWeekData[collectWeekData.length - 1]["t"],
65
67
  h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
66
68
  l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
69
+ v: collectWeekData.reduce(function (pre, current) { return pre + current.v; }, 0),
67
70
  };
68
71
  res.push(addDetail(obj, collectWeekData, detail));
69
72
  }
@@ -11,6 +11,7 @@ describe("test getWeekLine methods", function () {
11
11
  l: 137,
12
12
  o: 155,
13
13
  t: 20211210,
14
+ v: 78444,
14
15
  });
15
16
  });
16
17
  });
@@ -1,36 +1,23 @@
1
- type DataType = {
2
- v: number;
3
- [key: string]: unknown;
1
+ import { StockType } from "./types";
2
+ type NewStockType = Required<Pick<StockType, 'v'>> & StockType;
3
+ type NewStockListType = NewStockType[];
4
+ export type VmaResType = {
5
+ dataset: NewStockListType;
6
+ vma: number;
7
+ type: number;
4
8
  };
5
- type ListType = DataType[];
6
9
  interface VmaType {
7
- init: (data: DataType, type: number) => {
8
- dataset: ListType;
9
- vma: number;
10
- type: number;
11
- };
12
- next: (data: DataType, preList: {
13
- dataset: ListType;
14
- vma: number;
15
- type: number;
16
- }, type: number) => {
17
- dataset: ListType;
18
- vma: number;
19
- type: number;
20
- };
10
+ init: (data: NewStockType, type: number) => VmaResType;
11
+ next: (data: NewStockType, preList: VmaResType, type: number) => VmaResType;
21
12
  }
22
13
  export default class Vma implements VmaType {
23
- init(data: DataType, type: number): {
24
- dataset: DataType[];
14
+ init(data: NewStockType, type: number): {
15
+ dataset: NewStockType[];
25
16
  vma: number;
26
17
  type: number;
27
18
  };
28
- next(data: DataType, preList: {
29
- dataset: ListType;
30
- vma: number;
31
- type: number;
32
- }, type: number): {
33
- dataset: ListType;
19
+ next(data: NewStockType, preList: VmaResType, type: number): {
20
+ dataset: NewStockListType;
34
21
  vma: number;
35
22
  type: number;
36
23
  };
@@ -0,0 +1,16 @@
1
+ import { StockType } from "./types";
2
+ type NewStockType = Required<Pick<StockType, 'v'>> & StockType;
3
+ type NewStockListType = NewStockType[];
4
+ export type WeekResType = {
5
+ dataset: NewStockListType;
6
+ week: NewStockListType;
7
+ };
8
+ interface WeekType {
9
+ init: (data: NewStockType) => WeekResType;
10
+ next: (data: NewStockType, preList: WeekResType) => WeekResType;
11
+ }
12
+ export default class Week implements WeekType {
13
+ init(data: NewStockType): WeekResType;
14
+ next(data: NewStockType, preList: WeekResType): WeekResType;
15
+ }
16
+ export {};
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ var Week = /** @class */ (function () {
13
+ function Week() {
14
+ }
15
+ Object.defineProperty(Week.prototype, "init", {
16
+ enumerable: false,
17
+ configurable: true,
18
+ writable: true,
19
+ value: function (data) {
20
+ return { dataset: [data], week: [] };
21
+ }
22
+ });
23
+ Object.defineProperty(Week.prototype, "next", {
24
+ enumerable: false,
25
+ configurable: true,
26
+ writable: true,
27
+ value: function (data, preList) {
28
+ var year = data.t
29
+ .toString()
30
+ .replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3");
31
+ var day = new Date(year).getDay();
32
+ if (day === 6 || day === 0)
33
+ return { dataset: preList.dataset, week: preList.week };
34
+ preList.dataset.push(data);
35
+ if (day === 5) {
36
+ var week = {
37
+ o: preList.dataset[0]["o"],
38
+ c: preList.dataset[preList.dataset.length - 1]["c"],
39
+ t: preList.dataset[preList.dataset.length - 1]["t"],
40
+ h: Math.max.apply(Math, preList.dataset.map(function (item) { return item.h; })),
41
+ l: Math.min.apply(Math, preList.dataset.map(function (item) { return item.l; })),
42
+ v: preList.dataset.reduce(function (pre, current) { return pre + current.v; }, 0),
43
+ };
44
+ return { dataset: preList.dataset, week: __spreadArray(__spreadArray([], preList.week, true), [week], false) };
45
+ }
46
+ else {
47
+ if (day === 1) {
48
+ preList.dataset = [data];
49
+ }
50
+ return { dataset: preList.dataset, week: preList.week };
51
+ }
52
+ }
53
+ });
54
+ return Week;
55
+ }());
56
+ exports.default = Week;
@@ -0,0 +1 @@
1
+ export {};