@ch20026103/anysis 0.0.5-alpha → 0.0.7-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 (46) hide show
  1. package/dist/cjs/index.d.ts +4 -2
  2. package/dist/cjs/index.js +9 -5
  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/cjs/utils/isJson.d.ts +1 -0
  22. package/dist/cjs/utils/isJson.js +12 -0
  23. package/dist/esm/index.d.ts +4 -2
  24. package/dist/esm/index.js +4 -2
  25. package/dist/esm/stockSkills/boll.d.ts +58 -0
  26. package/dist/esm/stockSkills/boll.js +99 -0
  27. package/dist/esm/stockSkills/boll.test.d.ts +1 -0
  28. package/dist/esm/stockSkills/boll.test.js +34 -0
  29. package/dist/esm/stockSkills/ema.d.ts +2 -2
  30. package/dist/esm/stockSkills/ema.js +1 -1
  31. package/dist/esm/stockSkills/kd.d.ts +22 -22
  32. package/dist/esm/stockSkills/kd.js +10 -10
  33. package/dist/esm/stockSkills/ma.d.ts +13 -23
  34. package/dist/esm/stockSkills/ma.js +9 -43
  35. package/dist/esm/stockSkills/ma.test.js +3 -20
  36. package/dist/esm/stockSkills/macd.d.ts +34 -34
  37. package/dist/esm/stockSkills/macd.js +15 -15
  38. package/dist/esm/stockSkills/macd.test.js +2 -0
  39. package/dist/esm/stockSkills/rsi.d.ts +4 -4
  40. package/dist/esm/stockSkills/rsi.js +2 -2
  41. package/dist/esm/stockSkills/williams.d.ts +4 -4
  42. package/dist/esm/stockSkills/williams.js +2 -2
  43. package/dist/esm/utils/isJson.d.ts +1 -0
  44. package/dist/esm/utils/isJson.js +9 -0
  45. package/dist/umd/index.js +279 -202
  46. package/package.json +17 -15
@@ -2,15 +2,17 @@ export { default as simpleRegressionModel } from "./analyze/Regression/simpleReg
2
2
  export { default as slope } from "./analyze/Slope/index.js";
3
3
  export { exponentialSmoothing, movingAverages, weightMovingAverages, } from "./analyze/TimeSeries/R/index.js";
4
4
  export { calcSeasonalIndicesNoTrend } from "./analyze/TimeSeries/RS/index.js";
5
+ export { default as Boll } from "./stockSkills/boll.js";
6
+ export { default as Ema } from "./stockSkills/ema.js";
5
7
  export { default as Gold } from "./stockSkills/gold.js";
6
8
  export { default as Kd } from "./stockSkills/kd.js";
7
9
  export { default as Ma } from "./stockSkills/ma.js";
8
10
  export { default as Macd } from "./stockSkills/macd.js";
9
- export { default as Rsi } from "./stockSkills/rsi.js";
10
11
  export { default as Obv } from "./stockSkills/obv.js";
11
- export { default as Ema } from "./stockSkills/ema.js";
12
+ export { default as Rsi } from "./stockSkills/rsi.js";
12
13
  export { default as dateFormat } from "./stockSkills/utils/dateFormat.js";
13
14
  export { default as getWeekLine } from "./stockSkills/utils/getWeekLine.js";
14
15
  export { default as Williams } from "./stockSkills/williams.js";
15
16
  export { add } from "./test/add.js";
16
17
  export { minus } from "./test/minus.js";
18
+ export { default as isJSON } from "./utils/isJson.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.isJSON = exports.minus = exports.add = exports.Williams = exports.getWeekLine = exports.dateFormat = exports.Rsi = exports.Obv = exports.Macd = exports.Ma = exports.Kd = exports.Gold = exports.Ema = exports.Boll = 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副檔名**
@@ -16,6 +16,10 @@ Object.defineProperty(exports, "movingAverages", { enumerable: true, get: functi
16
16
  Object.defineProperty(exports, "weightMovingAverages", { enumerable: true, get: function () { return index_js_2.weightMovingAverages; } });
17
17
  var index_js_3 = require("./analyze/TimeSeries/RS/index.js");
18
18
  Object.defineProperty(exports, "calcSeasonalIndicesNoTrend", { enumerable: true, get: function () { return index_js_3.calcSeasonalIndicesNoTrend; } });
19
+ var boll_js_1 = require("./stockSkills/boll.js");
20
+ Object.defineProperty(exports, "Boll", { enumerable: true, get: function () { return boll_js_1.default; } });
21
+ var ema_js_1 = require("./stockSkills/ema.js");
22
+ Object.defineProperty(exports, "Ema", { enumerable: true, get: function () { return ema_js_1.default; } });
19
23
  var gold_js_1 = require("./stockSkills/gold.js");
20
24
  Object.defineProperty(exports, "Gold", { enumerable: true, get: function () { return gold_js_1.default; } });
21
25
  var kd_js_1 = require("./stockSkills/kd.js");
@@ -24,12 +28,10 @@ var ma_js_1 = require("./stockSkills/ma.js");
24
28
  Object.defineProperty(exports, "Ma", { enumerable: true, get: function () { return ma_js_1.default; } });
25
29
  var macd_js_1 = require("./stockSkills/macd.js");
26
30
  Object.defineProperty(exports, "Macd", { enumerable: true, get: function () { return macd_js_1.default; } });
27
- var rsi_js_1 = require("./stockSkills/rsi.js");
28
- Object.defineProperty(exports, "Rsi", { enumerable: true, get: function () { return rsi_js_1.default; } });
29
31
  var obv_js_1 = require("./stockSkills/obv.js");
30
32
  Object.defineProperty(exports, "Obv", { enumerable: true, get: function () { return obv_js_1.default; } });
31
- var ema_js_1 = require("./stockSkills/ema.js");
32
- Object.defineProperty(exports, "Ema", { enumerable: true, get: function () { return ema_js_1.default; } });
33
+ var rsi_js_1 = require("./stockSkills/rsi.js");
34
+ Object.defineProperty(exports, "Rsi", { enumerable: true, get: function () { return rsi_js_1.default; } });
33
35
  var dateFormat_js_1 = require("./stockSkills/utils/dateFormat.js");
34
36
  Object.defineProperty(exports, "dateFormat", { enumerable: true, get: function () { return dateFormat_js_1.default; } });
35
37
  var getWeekLine_js_1 = require("./stockSkills/utils/getWeekLine.js");
@@ -40,3 +42,5 @@ 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");
42
44
  Object.defineProperty(exports, "minus", { enumerable: true, get: function () { return minus_js_1.minus; } });
45
+ var isJson_js_1 = require("./utils/isJson.js");
46
+ Object.defineProperty(exports, "isJSON", { enumerable: true, get: function () { return isJson_js_1.default; } });
@@ -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
  });