@ch20026103/anysis 0.0.5-alpha → 0.0.6-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 (42) hide show
  1. package/dist/cjs/index.d.ts +1 -0
  2. package/dist/cjs/index.js +3 -1
  3. package/dist/cjs/stockSkills/boll.d.ts +58 -0
  4. package/dist/cjs/stockSkills/boll.js +101 -0
  5. package/dist/cjs/stockSkills/boll.test.d.ts +1 -0
  6. package/dist/cjs/stockSkills/boll.test.js +36 -0
  7. package/dist/cjs/stockSkills/ema.d.ts +2 -2
  8. package/dist/cjs/stockSkills/ema.js +1 -1
  9. package/dist/cjs/stockSkills/kd.d.ts +22 -22
  10. package/dist/cjs/stockSkills/kd.js +10 -10
  11. package/dist/cjs/stockSkills/ma.d.ts +13 -23
  12. package/dist/cjs/stockSkills/ma.js +9 -43
  13. package/dist/cjs/stockSkills/ma.test.js +3 -20
  14. package/dist/cjs/stockSkills/macd.d.ts +34 -34
  15. package/dist/cjs/stockSkills/macd.js +15 -15
  16. package/dist/cjs/stockSkills/macd.test.js +2 -0
  17. package/dist/cjs/stockSkills/rsi.d.ts +4 -4
  18. package/dist/cjs/stockSkills/rsi.js +2 -2
  19. package/dist/cjs/stockSkills/williams.d.ts +4 -4
  20. package/dist/cjs/stockSkills/williams.js +2 -2
  21. package/dist/esm/index.d.ts +1 -0
  22. package/dist/esm/index.js +1 -0
  23. package/dist/esm/stockSkills/boll.d.ts +58 -0
  24. package/dist/esm/stockSkills/boll.js +99 -0
  25. package/dist/esm/stockSkills/boll.test.d.ts +1 -0
  26. package/dist/esm/stockSkills/boll.test.js +34 -0
  27. package/dist/esm/stockSkills/ema.d.ts +2 -2
  28. package/dist/esm/stockSkills/ema.js +1 -1
  29. package/dist/esm/stockSkills/kd.d.ts +22 -22
  30. package/dist/esm/stockSkills/kd.js +10 -10
  31. package/dist/esm/stockSkills/ma.d.ts +13 -23
  32. package/dist/esm/stockSkills/ma.js +9 -43
  33. package/dist/esm/stockSkills/ma.test.js +3 -20
  34. package/dist/esm/stockSkills/macd.d.ts +34 -34
  35. package/dist/esm/stockSkills/macd.js +15 -15
  36. package/dist/esm/stockSkills/macd.test.js +2 -0
  37. package/dist/esm/stockSkills/rsi.d.ts +4 -4
  38. package/dist/esm/stockSkills/rsi.js +2 -2
  39. package/dist/esm/stockSkills/williams.d.ts +4 -4
  40. package/dist/esm/stockSkills/williams.js +2 -2
  41. package/dist/umd/index.js +180 -114
  42. package/package.json +1 -1
@@ -12,5 +12,6 @@ export { default as Ema } from "./stockSkills/ema.js";
12
12
  export { default as dateFormat } from "./stockSkills/utils/dateFormat.js";
13
13
  export { default as getWeekLine } from "./stockSkills/utils/getWeekLine.js";
14
14
  export { default as Williams } from "./stockSkills/williams.js";
15
+ export { default as Boll } from "./stockSkills/boll.js";
15
16
  export { add } from "./test/add.js";
16
17
  export { minus } from "./test/minus.js";
package/dist/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.minus = exports.add = exports.Williams = exports.getWeekLine = exports.dateFormat = exports.Ema = exports.Obv = exports.Rsi = exports.Macd = exports.Ma = exports.Kd = exports.Gold = exports.calcSeasonalIndicesNoTrend = exports.weightMovingAverages = exports.movingAverages = exports.exponentialSmoothing = exports.slope = exports.simpleRegressionModel = void 0;
3
+ exports.minus = exports.add = exports.Boll = exports.Williams = exports.getWeekLine = exports.dateFormat = exports.Ema = exports.Obv = exports.Rsi = exports.Macd = exports.Ma = exports.Kd = exports.Gold = exports.calcSeasonalIndicesNoTrend = exports.weightMovingAverages = exports.movingAverages = exports.exponentialSmoothing = exports.slope = exports.simpleRegressionModel = void 0;
4
4
  /*
5
5
  請注意,在 src/index.ts 中,我的導入包含文件擴展名(.js)。
6
6
  如果需要支持 Node.js 和構建工具(ex: webpack),則不需要這樣做。 **因為commonJs默認js副檔名**
@@ -36,6 +36,8 @@ var getWeekLine_js_1 = require("./stockSkills/utils/getWeekLine.js");
36
36
  Object.defineProperty(exports, "getWeekLine", { enumerable: true, get: function () { return getWeekLine_js_1.default; } });
37
37
  var williams_js_1 = require("./stockSkills/williams.js");
38
38
  Object.defineProperty(exports, "Williams", { enumerable: true, get: function () { return williams_js_1.default; } });
39
+ var boll_js_1 = require("./stockSkills/boll.js");
40
+ Object.defineProperty(exports, "Boll", { enumerable: true, get: function () { return boll_js_1.default; } });
39
41
  var add_js_1 = require("./test/add.js");
40
42
  Object.defineProperty(exports, "add", { enumerable: true, get: function () { return add_js_1.add; } });
41
43
  var minus_js_1 = require("./test/minus.js");
@@ -0,0 +1,58 @@
1
+ type ItemType = {
2
+ c: number;
3
+ };
4
+ type ListType = ItemType[];
5
+ type ResBoll = {
6
+ c: number;
7
+ bollMa: number | null;
8
+ bollUb: number | null;
9
+ bollLb: number | null;
10
+ }[];
11
+ interface BollType {
12
+ init: (data: ItemType) => {
13
+ dataset: ListType;
14
+ bollMa: number | null;
15
+ bollUb: number | null;
16
+ bollLb: number | null;
17
+ };
18
+ next: (data: ItemType, preList: {
19
+ dataset: ListType;
20
+ bollMa: number | null;
21
+ bollUb: number | null;
22
+ bollLb: number | null;
23
+ }, type: number) => {
24
+ dataset: ListType;
25
+ bollMa: number | null;
26
+ bollUb: number | null;
27
+ bollLb: number | null;
28
+ };
29
+ getBoll: (list: ListType, type: number) => ResBoll;
30
+ }
31
+ export default class Boll implements BollType {
32
+ init(data: ItemType): {
33
+ dataset: ListType;
34
+ bollMa: number | null;
35
+ bollUb: number | null;
36
+ bollLb: number | null;
37
+ };
38
+ next(data: ItemType, preList: {
39
+ dataset: ListType;
40
+ bollMa: number | null;
41
+ bollUb: number | null;
42
+ bollLb: number | null;
43
+ }, type: number): {
44
+ dataset: ListType;
45
+ type: number;
46
+ bollMa: null;
47
+ bollUb: null;
48
+ bollLb: null;
49
+ } | {
50
+ dataset: ListType;
51
+ type: number;
52
+ bollMa: number;
53
+ bollUb: number;
54
+ bollLb: number;
55
+ };
56
+ getBoll(list: ListType, type: number): ResBoll;
57
+ }
58
+ export {};
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ var Boll = /** @class */ (function () {
15
+ function Boll() {
16
+ }
17
+ Object.defineProperty(Boll.prototype, "init", {
18
+ enumerable: false,
19
+ configurable: true,
20
+ writable: true,
21
+ value: function (data) {
22
+ return {
23
+ dataset: [data],
24
+ bollMa: null,
25
+ bollUb: null,
26
+ bollLb: null,
27
+ };
28
+ }
29
+ });
30
+ Object.defineProperty(Boll.prototype, "next", {
31
+ enumerable: false,
32
+ configurable: true,
33
+ writable: true,
34
+ value: function (data, preList, type) {
35
+ preList.dataset.push(data);
36
+ if (preList.dataset.length < type) {
37
+ return {
38
+ dataset: preList.dataset,
39
+ type: type,
40
+ bollMa: null,
41
+ bollUb: null,
42
+ bollLb: null,
43
+ };
44
+ }
45
+ else {
46
+ if (preList.dataset.length > type) {
47
+ preList.dataset.shift();
48
+ }
49
+ var sum = preList.dataset.reduce(function (pre, current) { return pre + current.c; }, 0);
50
+ var bollMa_1 = Math.round((sum / type) * 100) / 100;
51
+ var difference = preList.dataset.reduce(function (pre, current) {
52
+ return bollMa_1 !== null ? pre + Math.pow(current.c - bollMa_1, 2) : pre;
53
+ }, 0);
54
+ var std = Math.round(Math.sqrt(difference / type) * 100) / 100;
55
+ return {
56
+ dataset: preList.dataset,
57
+ type: type,
58
+ bollMa: bollMa_1,
59
+ bollUb: bollMa_1 + 2 * std,
60
+ bollLb: bollMa_1 - 2 * std,
61
+ };
62
+ }
63
+ }
64
+ });
65
+ Object.defineProperty(Boll.prototype, "getBoll", {
66
+ enumerable: false,
67
+ configurable: true,
68
+ writable: true,
69
+ value: function (list, type) {
70
+ var res = [];
71
+ var _loop_1 = function (i) {
72
+ if (i < type)
73
+ res[i] = __assign(__assign({}, list[i]), { bollMa: null, bollUb: null, bollLb: null });
74
+ else {
75
+ // bollMa
76
+ var sumMa = list
77
+ .slice(i - (type - 1), i + 1)
78
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
79
+ console.log("sumMa", sumMa);
80
+ var bollMa_2 = Math.round((sumMa / type) * 100) / 100;
81
+ // 標準差
82
+ var difference = res
83
+ .slice(i - (type - 1), i + 1)
84
+ .reduce(function (pre, current) {
85
+ return bollMa_2 !== null
86
+ ? pre + Math.pow(current.c - bollMa_2, 2)
87
+ : pre;
88
+ }, 0);
89
+ var std = Math.round(Math.sqrt(difference / type) * 100) / 100;
90
+ res[i] = __assign(__assign({}, list[i]), { bollMa: bollMa_2, bollUb: bollMa_2 + 2 * std, bollLb: bollMa_2 - 2 * std });
91
+ }
92
+ };
93
+ for (var i = 0; i < list.length; i++) {
94
+ _loop_1(i);
95
+ }
96
+ return res;
97
+ }
98
+ });
99
+ return Boll;
100
+ }());
101
+ exports.default = Boll;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var boll_1 = require("./boll");
4
+ var test_data_test_1 = require("./test_data.test");
5
+ describe("test boll methods", function () {
6
+ it("test init & next", function () {
7
+ var index = test_data_test_1.default.length - 1;
8
+ var boll = new boll_1.default();
9
+ var init = boll.init(test_data_test_1.default[0]);
10
+ var res = init;
11
+ for (var i = 1; i <= index; i++) {
12
+ var item = test_data_test_1.default[i];
13
+ res = boll.next(item, res, 25);
14
+ }
15
+ expect({
16
+ bollMa: res.bollMa,
17
+ bollLb: res.bollLb,
18
+ bollUb: res.bollUb,
19
+ }).toEqual({ bollMa: 142.66, bollLb: 126.69999999999999, bollUb: 158.62 });
20
+ });
21
+ it("test getBoll()", function () {
22
+ var boll = new boll_1.default();
23
+ var res = boll.getBoll(test_data_test_1.default, 25);
24
+ expect(res[test_data_test_1.default.length - 1]).toEqual({
25
+ c: 142,
26
+ o: 138,
27
+ t: 20211214,
28
+ v: 16841,
29
+ h: 143,
30
+ l: 138,
31
+ bollMa: 142.66,
32
+ bollLb: 126.69999999999999,
33
+ bollUb: 158.62,
34
+ });
35
+ });
36
+ });
@@ -1,9 +1,9 @@
1
1
  interface EmaType {
2
2
  getStartEma: (list: number[], period: number) => number;
3
- getEma: (list: number[], period: number) => (number | undefined)[];
3
+ getEma: (list: number[], period: number) => (number | null)[];
4
4
  }
5
5
  export default class Ema implements EmaType {
6
6
  getStartEma(list: number[], period: number): number;
7
- getEma(list: number[], period: number): (number | undefined)[];
7
+ getEma(list: number[], period: number): (number | null)[];
8
8
  }
9
9
  export {};
@@ -27,7 +27,7 @@ var Ema = /** @class */ (function () {
27
27
  var ema = this.getStartEma(list.slice(0, period), period);
28
28
  for (var i = 0; i < list.length; i++) {
29
29
  if (i < period) {
30
- res.push(undefined);
30
+ res.push(null);
31
31
  continue;
32
32
  }
33
33
  ema = (list[i] * 2 + (period - 1) * ema) / (period + 1);
@@ -10,35 +10,35 @@ type DataType = {
10
10
  type ListType = DataType[];
11
11
  type ResRSV = {
12
12
  c: number;
13
- rsv?: number;
13
+ rsv: number | null;
14
14
  }[];
15
15
  type ResKD = {
16
16
  c: number;
17
- rsv?: number;
18
- k?: number;
19
- d?: number;
20
- "k-d"?: number;
17
+ rsv: number | null;
18
+ k: number | null;
19
+ d: number | null;
20
+ "k-d": number | null;
21
21
  }[];
22
22
  export default class Kd implements KdType {
23
23
  init(data: DataType): {
24
24
  dataset: ListType;
25
- rsv?: number;
26
- k?: number;
27
- d?: number;
28
- "k-d"?: number;
25
+ rsv: number | null;
26
+ k: number | null;
27
+ d: number | null;
28
+ "k-d": number | null;
29
29
  };
30
30
  next(data: DataType, preList: {
31
31
  dataset: ListType;
32
- rsv?: number;
33
- k?: number;
34
- d?: number;
35
- "k-d"?: number;
32
+ rsv: number | null;
33
+ k: number | null;
34
+ d: number | null;
35
+ "k-d": number | null;
36
36
  }, type: number): {
37
37
  dataset: ListType;
38
- rsv: undefined;
39
- k: undefined;
40
- d: undefined;
41
- "k-d": undefined;
38
+ rsv: null;
39
+ k: null;
40
+ d: null;
41
+ "k-d": null;
42
42
  } | {
43
43
  dataset: ListType;
44
44
  rsv: number;
@@ -47,7 +47,7 @@ export default class Kd implements KdType {
47
47
  "k-d": number;
48
48
  };
49
49
  getRSV(list: ListType): ({
50
- rsv: undefined;
50
+ rsv: null;
51
51
  c: number;
52
52
  h: number;
53
53
  l: number;
@@ -58,10 +58,10 @@ export default class Kd implements KdType {
58
58
  l: number;
59
59
  })[];
60
60
  getKD(list: ListType): ({
61
- rsv: undefined;
62
- k: undefined;
63
- d: undefined;
64
- "k-d": undefined;
61
+ rsv: null;
62
+ k: null;
63
+ d: null;
64
+ "k-d": null;
65
65
  c: number;
66
66
  h: number;
67
67
  l: number;
@@ -21,10 +21,10 @@ var Kd = /** @class */ (function () {
21
21
  value: function (data) {
22
22
  return {
23
23
  dataset: [data],
24
- rsv: undefined,
25
- k: undefined,
26
- d: undefined,
27
- "k-d": undefined,
24
+ rsv: null,
25
+ k: null,
26
+ d: null,
27
+ "k-d": null,
28
28
  };
29
29
  }
30
30
  });
@@ -37,10 +37,10 @@ var Kd = /** @class */ (function () {
37
37
  if (preList.dataset.length < type) {
38
38
  return {
39
39
  dataset: preList.dataset,
40
- rsv: undefined,
41
- k: undefined,
42
- d: undefined,
43
- "k-d": undefined,
40
+ rsv: null,
41
+ k: null,
42
+ d: null,
43
+ "k-d": null,
44
44
  };
45
45
  }
46
46
  else {
@@ -76,7 +76,7 @@ var Kd = /** @class */ (function () {
76
76
  var res = [];
77
77
  for (var i = 0; i < list.length; i++) {
78
78
  if (i < 8)
79
- res[i] = __assign(__assign({}, list[i]), { rsv: undefined });
79
+ res[i] = __assign(__assign({}, list[i]), { rsv: null });
80
80
  else {
81
81
  var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
82
82
  var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
@@ -99,7 +99,7 @@ var Kd = /** @class */ (function () {
99
99
  var yesterdayD = 50;
100
100
  for (var i = 0; i < list.length; i++) {
101
101
  if (i < 8)
102
- res[i] = __assign(__assign({}, list[i]), { rsv: undefined, k: undefined, d: undefined, "k-d": undefined });
102
+ res[i] = __assign(__assign({}, list[i]), { rsv: null, k: null, d: null, "k-d": null });
103
103
  else {
104
104
  var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
105
105
  var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
@@ -4,39 +4,31 @@ type DataType = {
4
4
  type ListType = DataType[];
5
5
  type ResMa5 = {
6
6
  c: number;
7
- ma5?: number;
7
+ ma5: number | null;
8
8
  }[];
9
9
  type ResMa10 = {
10
10
  c: number;
11
- ma10?: number;
11
+ ma10: number | null;
12
12
  }[];
13
13
  type ResMa20 = {
14
14
  c: number;
15
- ma20?: number;
15
+ ma20: number | null;
16
16
  }[];
17
17
  type ResMa60 = {
18
18
  c: number;
19
- ma60?: number;
19
+ ma60: number | null;
20
20
  }[];
21
- type ResMaSelf = {
21
+ type ResMa = {
22
22
  c: number;
23
- maSelf?: number;
24
- }[];
25
- type ResBoll = {
26
- c: number;
27
- ma25?: number;
28
- bollUb?: number;
29
- bollLb?: number;
23
+ ma: number | null;
30
24
  }[];
31
25
  type ResAllMa = {
32
26
  c: number;
33
- ma5?: number;
34
- ma10?: number;
35
- ma20?: number;
36
- ma25?: number;
37
- ma60?: number;
38
- bollUb?: number;
39
- bollLb?: number;
27
+ ma5: number | null;
28
+ ma10: number | null;
29
+ ma20: number | null;
30
+ ma25: number | null;
31
+ ma60: number | null;
40
32
  }[];
41
33
  interface MaType {
42
34
  init: (data: DataType, type: number) => {
@@ -58,8 +50,7 @@ interface MaType {
58
50
  getMa10: (list: ListType) => ResMa10;
59
51
  getMa20: (list: ListType) => ResMa20;
60
52
  getMa60: (list: ListType) => ResMa60;
61
- getMaSelf: (list: ListType, self: number) => ResMaSelf;
62
- getBoll: (list: ListType) => ResBoll;
53
+ getMa: (list: ListType, self: number) => ResMa;
63
54
  }
64
55
  export default class Ma implements MaType {
65
56
  init(data: DataType, type: number): {
@@ -81,7 +72,6 @@ export default class Ma implements MaType {
81
72
  getMa10(list: ListType): ResMa10;
82
73
  getMa20(list: ListType): ResMa20;
83
74
  getMa60(list: ListType): ResMa60;
84
- getMaSelf(list: ListType, self: number): ResMaSelf;
85
- getBoll(list: ListType): ResBoll;
75
+ getMa(list: ListType, self: number): ResMa;
86
76
  }
87
77
  export {};
@@ -51,9 +51,8 @@ var Ma = /** @class */ (function () {
51
51
  var responseMa10 = this.getMa10(list);
52
52
  var responseMa20 = this.getMa20(list);
53
53
  var responseMa60 = this.getMa60(list);
54
- var responseBoll = this.getBoll(list);
55
54
  for (var i = 0; i < list.length; i++) {
56
- res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseMa60[i], responseBoll[i]);
55
+ res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseMa60[i]);
57
56
  }
58
57
  return res;
59
58
  }
@@ -66,7 +65,7 @@ var Ma = /** @class */ (function () {
66
65
  var res = [];
67
66
  for (var i = 0; i < list.length; i++) {
68
67
  if (i < 4)
69
- res[i] = __assign(__assign({}, list[i]), { ma5: undefined });
68
+ res[i] = __assign(__assign({}, list[i]), { ma5: null });
70
69
  else {
71
70
  var sum = list
72
71
  .slice(i - 4, i + 1)
@@ -86,7 +85,7 @@ var Ma = /** @class */ (function () {
86
85
  var res = [];
87
86
  for (var i = 0; i < list.length; i++) {
88
87
  if (i < 9)
89
- res[i] = __assign(__assign({}, list[i]), { ma10: undefined });
88
+ res[i] = __assign(__assign({}, list[i]), { ma10: null });
90
89
  else {
91
90
  var sum = list
92
91
  .slice(i - 9, i + 1)
@@ -106,7 +105,7 @@ var Ma = /** @class */ (function () {
106
105
  var res = [];
107
106
  for (var i = 0; i < list.length; i++) {
108
107
  if (i < 19)
109
- res[i] = __assign(__assign({}, list[i]), { ma20: undefined });
108
+ res[i] = __assign(__assign({}, list[i]), { ma20: null });
110
109
  else {
111
110
  var sum = list
112
111
  .slice(i - 19, i + 1)
@@ -126,7 +125,7 @@ var Ma = /** @class */ (function () {
126
125
  var res = [];
127
126
  for (var i = 0; i < list.length; i++) {
128
127
  if (i < 59)
129
- res[i] = __assign(__assign({}, list[i]), { ma60: undefined });
128
+ res[i] = __assign(__assign({}, list[i]), { ma60: null });
130
129
  else {
131
130
  var sum = list
132
131
  .slice(i - 59, i + 1)
@@ -138,7 +137,7 @@ var Ma = /** @class */ (function () {
138
137
  return res;
139
138
  }
140
139
  });
141
- Object.defineProperty(Ma.prototype, "getMaSelf", {
140
+ Object.defineProperty(Ma.prototype, "getMa", {
142
141
  enumerable: false,
143
142
  configurable: true,
144
143
  writable: true,
@@ -146,51 +145,18 @@ var Ma = /** @class */ (function () {
146
145
  var res = [];
147
146
  for (var i = 0; i < list.length; i++) {
148
147
  if (i < self - 1)
149
- res[i] = __assign(__assign({}, list[i]), { maSelf: undefined });
148
+ res[i] = __assign(__assign({}, list[i]), { ma: null });
150
149
  else {
151
150
  var sum = list
152
151
  .slice(i - (self - 1), i + 1)
153
152
  .reduce(function (pre, current) { return pre + current.c; }, 0);
154
- var maSelf = Math.round((sum / self) * 100) / 100;
155
- res[i] = __assign(__assign({}, list[i]), { maSelf: maSelf });
153
+ var ma = Math.round((sum / self) * 100) / 100;
154
+ res[i] = __assign(__assign({}, list[i]), { ma: ma });
156
155
  }
157
156
  }
158
157
  return res;
159
158
  }
160
159
  });
161
- Object.defineProperty(Ma.prototype, "getBoll", {
162
- enumerable: false,
163
- configurable: true,
164
- writable: true,
165
- value: function (list) {
166
- var res = [];
167
- var _loop_1 = function (i) {
168
- if (i < 24)
169
- res[i] = __assign(__assign({}, list[i]), { ma25: undefined, bollUb: undefined, bollLb: undefined });
170
- else {
171
- // ma25
172
- var sumMa25 = list
173
- .slice(i - 24, i + 1)
174
- .reduce(function (pre, current) { return pre + current.c; }, 0);
175
- var ma25_1 = Math.round((sumMa25 / 25) * 100) / 100;
176
- // 標準差
177
- var sumBase = res
178
- .slice(i - 24, i + 1)
179
- .reduce(function (pre, current) {
180
- return ma25_1 !== undefined
181
- ? pre + Math.pow(current.c - ma25_1, 2)
182
- : pre;
183
- }, 0);
184
- var base = Math.round(Math.sqrt(sumBase / 25) * 100) / 100;
185
- res[i] = __assign(__assign({}, list[i]), { ma25: ma25_1, bollUb: ma25_1 + 2 * base, bollLb: ma25_1 - 2 * base });
186
- }
187
- };
188
- for (var i = 0; i < list.length; i++) {
189
- _loop_1(i);
190
- }
191
- return res;
192
- }
193
- });
194
160
  return Ma;
195
161
  }());
196
162
  exports.default = Ma;
@@ -63,30 +63,16 @@ describe("test ma methods", function () {
63
63
  ma60: 134.86,
64
64
  });
65
65
  });
66
- it("test getMaSelf()", function () {
66
+ it("test getMa()", function () {
67
67
  var ma = new ma_1.default();
68
- expect(ma.getMaSelf(test_data_test_1.default, 20)[test_data_test_1.default.length - 1]).toEqual({
68
+ expect(ma.getMa(test_data_test_1.default, 20)[test_data_test_1.default.length - 1]).toEqual({
69
69
  c: 142,
70
70
  o: 138,
71
71
  t: 20211214,
72
72
  v: 16841,
73
73
  h: 143,
74
74
  l: 138,
75
- maSelf: 144.88,
76
- });
77
- });
78
- it("test getBoll()", function () {
79
- var ma = new ma_1.default();
80
- expect(ma.getBoll(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
81
- c: 142,
82
- o: 138,
83
- t: 20211214,
84
- v: 16841,
85
- h: 143,
86
- l: 138,
87
- ma25: 142.66,
88
- bollLb: 126.69999999999999,
89
- bollUb: 158.62,
75
+ ma: 144.88,
90
76
  });
91
77
  });
92
78
  it("test getAllMa()", function () {
@@ -102,9 +88,6 @@ describe("test ma methods", function () {
102
88
  ma10: 146.7,
103
89
  ma20: 144.88,
104
90
  ma60: 134.86,
105
- ma25: 142.66,
106
- bollUb: 158.62,
107
- bollLb: 126.69999999999999,
108
91
  });
109
92
  });
110
93
  });