@ch20026103/anysis 0.0.3-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 (72) hide show
  1. package/dist/cjs/analyze/Month/index.d.ts +1 -1
  2. package/dist/cjs/analyze/Month/index.test.d.ts +1 -0
  3. package/dist/cjs/analyze/Month/index.test.js +22 -0
  4. package/dist/cjs/analyze/Regression/simpleRegressoinModel.d.ts +1 -1
  5. package/dist/cjs/analyze/Slope/slope.test.js +6 -0
  6. package/dist/cjs/analyze/TimeSeries/R/index.d.ts +1 -1
  7. package/dist/cjs/index.d.ts +3 -0
  8. package/dist/cjs/index.js +7 -1
  9. package/dist/cjs/stockSkills/boll.d.ts +58 -0
  10. package/dist/cjs/stockSkills/boll.js +101 -0
  11. package/dist/cjs/stockSkills/boll.test.d.ts +1 -0
  12. package/dist/cjs/stockSkills/boll.test.js +36 -0
  13. package/dist/cjs/stockSkills/ema.d.ts +9 -0
  14. package/dist/cjs/stockSkills/ema.js +41 -0
  15. package/dist/cjs/stockSkills/ema.test.d.ts +1 -0
  16. package/dist/cjs/stockSkills/ema.test.js +11 -0
  17. package/dist/cjs/stockSkills/gold.d.ts +4 -4
  18. package/dist/cjs/stockSkills/kd.d.ts +41 -14
  19. package/dist/cjs/stockSkills/kd.js +60 -6
  20. package/dist/cjs/stockSkills/kd.test.js +34 -2
  21. package/dist/cjs/stockSkills/ma.d.ts +49 -30
  22. package/dist/cjs/stockSkills/ma.js +37 -44
  23. package/dist/cjs/stockSkills/ma.test.js +15 -20
  24. package/dist/cjs/stockSkills/macd.d.ts +62 -16
  25. package/dist/cjs/stockSkills/macd.js +92 -5
  26. package/dist/cjs/stockSkills/macd.test.js +26 -0
  27. package/dist/cjs/stockSkills/obv.d.ts +44 -0
  28. package/dist/cjs/stockSkills/obv.js +89 -0
  29. package/dist/cjs/stockSkills/obv.test.d.ts +1 -0
  30. package/dist/cjs/stockSkills/obv.test.js +20 -0
  31. package/dist/cjs/stockSkills/rsi.d.ts +8 -8
  32. package/dist/cjs/stockSkills/rsi.js +2 -2
  33. package/dist/cjs/stockSkills/utils/getWeekLine.d.ts +2 -2
  34. package/dist/cjs/stockSkills/williams.d.ts +8 -8
  35. package/dist/cjs/stockSkills/williams.js +2 -2
  36. package/dist/esm/analyze/Month/index.d.ts +1 -1
  37. package/dist/esm/analyze/Month/index.test.d.ts +1 -0
  38. package/dist/esm/analyze/Month/index.test.js +20 -0
  39. package/dist/esm/analyze/Regression/simpleRegressoinModel.d.ts +1 -1
  40. package/dist/esm/analyze/Slope/slope.test.js +6 -0
  41. package/dist/esm/analyze/TimeSeries/R/index.d.ts +1 -1
  42. package/dist/esm/index.d.ts +3 -0
  43. package/dist/esm/index.js +3 -0
  44. package/dist/esm/stockSkills/boll.d.ts +58 -0
  45. package/dist/esm/stockSkills/boll.js +99 -0
  46. package/dist/esm/stockSkills/boll.test.d.ts +1 -0
  47. package/dist/esm/stockSkills/boll.test.js +34 -0
  48. package/dist/esm/stockSkills/ema.d.ts +9 -0
  49. package/dist/esm/stockSkills/ema.js +39 -0
  50. package/dist/esm/stockSkills/ema.test.d.ts +1 -0
  51. package/dist/esm/stockSkills/ema.test.js +9 -0
  52. package/dist/esm/stockSkills/gold.d.ts +4 -4
  53. package/dist/esm/stockSkills/kd.d.ts +41 -14
  54. package/dist/esm/stockSkills/kd.js +60 -6
  55. package/dist/esm/stockSkills/kd.test.js +34 -2
  56. package/dist/esm/stockSkills/ma.d.ts +49 -30
  57. package/dist/esm/stockSkills/ma.js +37 -44
  58. package/dist/esm/stockSkills/ma.test.js +15 -20
  59. package/dist/esm/stockSkills/macd.d.ts +62 -16
  60. package/dist/esm/stockSkills/macd.js +92 -5
  61. package/dist/esm/stockSkills/macd.test.js +26 -0
  62. package/dist/esm/stockSkills/obv.d.ts +44 -0
  63. package/dist/esm/stockSkills/obv.js +87 -0
  64. package/dist/esm/stockSkills/obv.test.d.ts +1 -0
  65. package/dist/esm/stockSkills/obv.test.js +18 -0
  66. package/dist/esm/stockSkills/rsi.d.ts +8 -8
  67. package/dist/esm/stockSkills/rsi.js +2 -2
  68. package/dist/esm/stockSkills/utils/getWeekLine.d.ts +2 -2
  69. package/dist/esm/stockSkills/williams.d.ts +8 -8
  70. package/dist/esm/stockSkills/williams.js +2 -2
  71. package/dist/umd/index.js +458 -96
  72. package/package.json +15 -17
@@ -12,6 +12,93 @@ var __assign = (this && this.__assign) || function () {
12
12
  var MACD = /** @class */ (function () {
13
13
  function MACD() {
14
14
  }
15
+ Object.defineProperty(MACD.prototype, "init", {
16
+ enumerable: false,
17
+ configurable: true,
18
+ writable: true,
19
+ value: function (data) {
20
+ return {
21
+ dataset: [data],
22
+ ema12: null,
23
+ ema26: null,
24
+ dif: [],
25
+ macd: null,
26
+ osc: null,
27
+ };
28
+ }
29
+ });
30
+ Object.defineProperty(MACD.prototype, "next", {
31
+ enumerable: false,
32
+ configurable: true,
33
+ writable: true,
34
+ value: function (data, preList) {
35
+ var _a, _b;
36
+ preList.dataset.push(data);
37
+ if (preList.dataset.length > 34)
38
+ preList.dataset.shift();
39
+ // EMA12
40
+ var ema12 = null;
41
+ if (preList.dataset.length === 12) {
42
+ ema12 = this.getStartEMA(preList.dataset);
43
+ ema12 = (ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
44
+ ema12 = Math.round(ema12 * 100) / 100;
45
+ }
46
+ else if (preList.dataset.length > 12 && preList.ema12) {
47
+ ema12 = (preList.ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
48
+ ema12 = Math.round(ema12 * 100) / 100;
49
+ }
50
+ // EMA26
51
+ var ema26 = null;
52
+ if (preList.dataset.length === 26) {
53
+ ema26 = this.getStartEMA(preList.dataset);
54
+ ema26 = (ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
55
+ ema26 = Math.round(ema26 * 100) / 100;
56
+ }
57
+ else if (preList.dataset.length > 26 && preList.ema26) {
58
+ ema26 = (preList.ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
59
+ ema26 = Math.round(ema26 * 100) / 100;
60
+ }
61
+ // DIF
62
+ var dif = null;
63
+ if (ema12 && ema26) {
64
+ dif = ema12 - ema26;
65
+ dif = Math.round(dif * 100) / 100;
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
+ }
70
+ // MACD & OSC
71
+ var macd = null;
72
+ var osc = null;
73
+ 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;
86
+ macd = Math.round(macd * 100) / 100;
87
+ var item = preList.dif[preList.dif.length - 1];
88
+ osc = item - macd;
89
+ osc = Math.round(osc * 100) / 100;
90
+ }
91
+ }
92
+ return {
93
+ dataset: preList.dataset,
94
+ ema12: ema12,
95
+ ema26: ema26,
96
+ dif: preList.dif,
97
+ macd: macd,
98
+ osc: osc,
99
+ };
100
+ }
101
+ });
15
102
  Object.defineProperty(MACD.prototype, "getMACD", {
16
103
  enumerable: false,
17
104
  configurable: true,
@@ -24,7 +111,7 @@ var MACD = /** @class */ (function () {
24
111
  var DIF = this.getDIF(list, EMA12, EMA26);
25
112
  var MACD9 = this.getMACD9(list, DIF);
26
113
  for (var i = 0; i < list.length; i++) {
27
- res[i] = Object.assign(list[i], DIF[i], MACD9[i]);
114
+ res[i] = Object.assign(list[i], DIF[i], MACD9[i], EMA12[i], EMA26[i]);
28
115
  }
29
116
  return res;
30
117
  }
@@ -61,7 +148,7 @@ var MACD = /** @class */ (function () {
61
148
  var res = [];
62
149
  for (var i = 0; i < list.length; i++) {
63
150
  if (i < 12)
64
- res[i] = __assign(__assign({}, list[i]), { EMA12: undefined });
151
+ res[i] = __assign(__assign({}, list[i]), { EMA12: null });
65
152
  else {
66
153
  beforeEMA12 = (beforeEMA12 * 11) / 13 + (this.getDI(list[i]) * 2) / 13;
67
154
  res[i] = __assign(__assign({}, list[i]), { EMA12: beforeEMA12 });
@@ -80,7 +167,7 @@ var MACD = /** @class */ (function () {
80
167
  var res = [];
81
168
  for (var i = 0; i < list.length; i++) {
82
169
  if (i < 26)
83
- res[i] = __assign(__assign({}, list[i]), { EMA26: undefined });
170
+ res[i] = __assign(__assign({}, list[i]), { EMA26: null });
84
171
  else {
85
172
  beforeEMA26 = (beforeEMA26 * 25) / 27 + (this.getDI(list[i]) * 2) / 27;
86
173
  res[i] = __assign(__assign({}, list[i]), { EMA26: beforeEMA26 });
@@ -98,7 +185,7 @@ var MACD = /** @class */ (function () {
98
185
  var res = [];
99
186
  for (var i = 0; i < list.length; i++) {
100
187
  if (i < 26)
101
- res[i] = __assign(__assign({}, list[i]), { DIF: undefined });
188
+ res[i] = __assign(__assign({}, list[i]), { DIF: null });
102
189
  else {
103
190
  var EMA12 = ((_a = ResEMA12 === null || ResEMA12 === void 0 ? void 0 : ResEMA12[i]) === null || _a === void 0 ? void 0 : _a["EMA12"]) && ResEMA12[i]["EMA12"];
104
191
  var EMA26 = ((_b = ResEMA26 === null || ResEMA26 === void 0 ? void 0 : ResEMA26[i]) === null || _b === void 0 ? void 0 : _b["EMA26"]) && ResEMA26[i]["EMA26"];
@@ -118,7 +205,7 @@ var MACD = /** @class */ (function () {
118
205
  var beforeMACD9 = 0;
119
206
  for (var i = 0; i < list.length; i++) {
120
207
  if (i < 26)
121
- res[i] = __assign(__assign({}, list[i]), { MACD9: undefined, OSC: undefined });
208
+ res[i] = __assign(__assign({}, list[i]), { MACD9: null, OSC: null });
122
209
  else if (i === 26) {
123
210
  var MACD9 = DIF.slice(26, 34)
124
211
  .map(function (item) { return ((item === null || item === void 0 ? void 0 : item.DIF) ? item["DIF"] : 0); })
@@ -1,6 +1,30 @@
1
1
  import Macd from "./macd";
2
2
  import data from "./test_data.test";
3
3
  describe("test macd methods", function () {
4
+ it("test init & next", function () {
5
+ var _a, _b;
6
+ var index = data.length - 1;
7
+ var macd = new Macd();
8
+ var init = macd.init(data[0]);
9
+ var res = init;
10
+ for (var i = 1; i <= index; i++) {
11
+ var item = data[i];
12
+ res = macd.next(item, res);
13
+ }
14
+ expect({
15
+ ema12: 144.02,
16
+ ema26: 142.23,
17
+ dif: 1.79,
18
+ macd: 3.46,
19
+ osc: -1.67,
20
+ }).toEqual({
21
+ ema12: res.ema12,
22
+ ema26: res.ema26,
23
+ dif: (_a = res.dif) === null || _a === void 0 ? void 0 : _a[((_b = res.dif) === null || _b === void 0 ? void 0 : _b.length) - 1],
24
+ macd: res.macd,
25
+ osc: res.osc,
26
+ });
27
+ });
4
28
  it("test getEMA12()", function () {
5
29
  var macd = new Macd();
6
30
  expect(macd.getEMA12(data)[data.length - 1]).toEqual({
@@ -67,6 +91,8 @@ describe("test macd methods", function () {
67
91
  DIF: 1.7905942688080358,
68
92
  MACD9: 3.461688641153529,
69
93
  OSC: -1.6710943723454932,
94
+ EMA12: 144.01967137166324,
95
+ EMA26: 142.2290771028552
70
96
  });
71
97
  });
72
98
  });
@@ -0,0 +1,44 @@
1
+ type ItemType = {
2
+ h: number;
3
+ l: number;
4
+ c: number;
5
+ v: number;
6
+ };
7
+ type ResObv = {
8
+ obv: number;
9
+ } & ItemType;
10
+ interface ObvType {
11
+ init: (data: ItemType) => {
12
+ dataset: ItemType[];
13
+ obv: number;
14
+ preClose: number;
15
+ };
16
+ next: (data: ItemType, preList: {
17
+ dataset: ItemType[];
18
+ obv: number;
19
+ preClose: number;
20
+ }) => {
21
+ dataset: ItemType[];
22
+ obv: number;
23
+ preClose: number;
24
+ };
25
+ getObv: (list: ItemType[], period: number) => ResObv[];
26
+ }
27
+ export default class Obv implements ObvType {
28
+ init(data: ItemType): {
29
+ dataset: ItemType[];
30
+ obv: number;
31
+ preClose: number;
32
+ };
33
+ next(data: ItemType, preList: {
34
+ dataset: ItemType[];
35
+ obv: number;
36
+ preClose: number;
37
+ }): {
38
+ dataset: ItemType[];
39
+ obv: number;
40
+ preClose: number;
41
+ };
42
+ getObv(list: ItemType[]): ResObv[];
43
+ }
44
+ export {};
@@ -0,0 +1,87 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ var Obv = /** @class */ (function () {
22
+ function Obv() {
23
+ }
24
+ Object.defineProperty(Obv.prototype, "init", {
25
+ enumerable: false,
26
+ configurable: true,
27
+ writable: true,
28
+ value: function (data) {
29
+ return {
30
+ dataset: [data],
31
+ obv: data.v,
32
+ preClose: data.c,
33
+ };
34
+ }
35
+ });
36
+ Object.defineProperty(Obv.prototype, "next", {
37
+ enumerable: false,
38
+ configurable: true,
39
+ writable: true,
40
+ value: function (data, preList) {
41
+ var currentVolume = data.v;
42
+ var currentClose = data.c;
43
+ // obv
44
+ var obv = preList.obv;
45
+ if (currentClose > preList.preClose) {
46
+ obv += currentVolume;
47
+ }
48
+ else if (currentClose < preList.preClose) {
49
+ obv -= currentVolume;
50
+ }
51
+ return {
52
+ dataset: __spreadArray(__spreadArray([], preList.dataset, true), [data], false),
53
+ obv: obv,
54
+ preClose: currentClose,
55
+ };
56
+ }
57
+ });
58
+ Object.defineProperty(Obv.prototype, "getObv", {
59
+ enumerable: false,
60
+ configurable: true,
61
+ writable: true,
62
+ value: function (list) {
63
+ var res = [];
64
+ var obv = 0;
65
+ for (var i = 0; i < list.length; i++) {
66
+ var currentVolume = list[i].v;
67
+ var currentClose = list[i].c;
68
+ if (i > 0) {
69
+ // obv
70
+ if (currentClose > list[i - 1].c) {
71
+ obv += currentVolume;
72
+ }
73
+ else if (currentClose < list[i - 1].c) {
74
+ obv -= currentVolume;
75
+ }
76
+ }
77
+ else {
78
+ obv = currentVolume;
79
+ }
80
+ res[i] = __assign(__assign({}, list[i]), { obv: obv });
81
+ }
82
+ return res;
83
+ }
84
+ });
85
+ return Obv;
86
+ }());
87
+ export default Obv;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,18 @@
1
+ import Obv from "./obv";
2
+ import { data_9904 as data } from "./test_data.test";
3
+ describe("test obv methods", function () {
4
+ it("test init", function () {
5
+ var obv = new Obv();
6
+ var init = obv.init(data[0]);
7
+ var res = init;
8
+ for (var i = 1; i < data.length; i++) {
9
+ var item = data[i];
10
+ res = obv.next(item, res);
11
+ }
12
+ expect(res.obv).toEqual(504538);
13
+ });
14
+ it("test getObv()", function () {
15
+ var kd = new Obv();
16
+ expect(kd.getObv(data)[data.length - 1].obv).toEqual(504538);
17
+ });
18
+ });
@@ -1,18 +1,18 @@
1
- declare type ListType = {
1
+ type ListType = {
2
2
  c: number;
3
3
  }[];
4
- declare type ResRsi6Type = {
4
+ type ResRsi6Type = {
5
5
  c: number;
6
- rsi6?: number;
6
+ rsi6: number | null;
7
7
  }[];
8
- declare type ResRsi12Type = {
8
+ type ResRsi12Type = {
9
9
  c: number;
10
- rsi12?: number;
10
+ rsi12: number | null;
11
11
  }[];
12
- declare type ResAllRsiType = {
12
+ type ResAllRsiType = {
13
13
  c: number;
14
- rsi6?: number;
15
- rsi12?: number;
14
+ rsi6: number | null;
15
+ rsi12: number | null;
16
16
  }[];
17
17
  interface RsiType {
18
18
  getRsi6: (list: ListType) => ResRsi6Type;
@@ -34,7 +34,7 @@ var Rsi = /** @class */ (function () {
34
34
  var res = [];
35
35
  // 前5筆
36
36
  for (var i = 0; i < 5; i++) {
37
- res[i] = __assign(__assign({}, list[i]), { rsi6: undefined });
37
+ res[i] = __assign(__assign({}, list[i]), { rsi6: null });
38
38
  }
39
39
  // 第6筆Rsi
40
40
  var beforeUpAvg = this.getStartUpAvg(list, 6);
@@ -68,7 +68,7 @@ var Rsi = /** @class */ (function () {
68
68
  var res = [];
69
69
  // 前11筆
70
70
  for (var i = 0; i < 11; i++) {
71
- res[i] = __assign(__assign({}, list[i]), { rsi12: undefined });
71
+ res[i] = __assign(__assign({}, list[i]), { rsi12: null });
72
72
  }
73
73
  // 第12筆Rsi
74
74
  var beforeUpAvg = this.getStartUpAvg(list, 12);
@@ -1,11 +1,11 @@
1
- declare type ListType = {
1
+ type ListType = {
2
2
  h: number;
3
3
  t: number;
4
4
  o: number;
5
5
  c: number;
6
6
  l: number;
7
7
  }[];
8
- export declare type ResType = {
8
+ export type ResType = {
9
9
  h: number;
10
10
  t: number;
11
11
  o: number;
@@ -1,20 +1,20 @@
1
- declare type ListType = {
1
+ type ListType = {
2
2
  h: number;
3
3
  l: number;
4
4
  c: number;
5
5
  }[];
6
- declare type ResWilliams9Type = {
6
+ type ResWilliams9Type = {
7
7
  c: number;
8
- williams9?: number;
8
+ williams9: number | null;
9
9
  }[];
10
- declare type ResWilliams18Type = {
10
+ type ResWilliams18Type = {
11
11
  c: number;
12
- williams18?: number;
12
+ williams18: number | null;
13
13
  }[];
14
- declare type ResAllWilliamsType = {
14
+ type ResAllWilliamsType = {
15
15
  c: number;
16
- williams18?: number;
17
- williams9?: number;
16
+ williams18: number | null;
17
+ williams9: number | null;
18
18
  }[];
19
19
  interface WilliamsType {
20
20
  getWilliams9: (list: ListType) => ResWilliams9Type;
@@ -34,7 +34,7 @@ var Williams = /** @class */ (function () {
34
34
  var res = [];
35
35
  for (var i = 0; i < list.length; i++) {
36
36
  if (i < 9)
37
- res[i] = __assign(__assign({}, list[i]), { williams9: undefined });
37
+ res[i] = __assign(__assign({}, list[i]), { williams9: null });
38
38
  else {
39
39
  var maxList = list.slice(i - 8, i).map(function (item) { return item["h"]; });
40
40
  var minList = list.slice(i - 8, i).map(function (item) { return item["l"]; });
@@ -56,7 +56,7 @@ var Williams = /** @class */ (function () {
56
56
  var res = [];
57
57
  for (var i = 0; i < list.length; i++) {
58
58
  if (i < 18)
59
- res[i] = __assign(__assign({}, list[i]), { williams9: undefined });
59
+ res[i] = __assign(__assign({}, list[i]), { williams18: null });
60
60
  else {
61
61
  var maxList = list.slice(i - 17, i).map(function (item) { return item["h"]; });
62
62
  var minList = list.slice(i - 17, i).map(function (item) { return item["l"]; });