@ch20026103/anysis 0.0.2-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 (101) hide show
  1. package/.eslintrc.json +15 -0
  2. package/.gitattributes +1 -0
  3. package/.vscode/settings.json +5 -0
  4. package/README.md +11 -0
  5. package/commitlint.config.js +3 -0
  6. package/dist/cjs/analyze/Month/index.d.ts +15 -0
  7. package/dist/cjs/analyze/Month/index.js +24 -0
  8. package/dist/cjs/analyze/Regression/simpleRegressoinModel.d.ts +12 -0
  9. package/dist/cjs/analyze/Regression/simpleRegressoinModel.js +79 -0
  10. package/dist/cjs/analyze/Regression/simpleRegressoinModel.test.d.ts +1 -0
  11. package/dist/cjs/analyze/Regression/simpleRegressoinModel.test.js +16 -0
  12. package/dist/cjs/analyze/TimeSeries/R/index.d.ts +7 -0
  13. package/dist/cjs/analyze/TimeSeries/R/index.js +39 -0
  14. package/dist/cjs/analyze/TimeSeries/RS/index.d.ts +2 -0
  15. package/dist/cjs/analyze/TimeSeries/RS/index.js +31 -0
  16. package/dist/cjs/index.d.ts +12 -0
  17. package/dist/cjs/index.js +34 -0
  18. package/dist/cjs/stockSkills/gold.d.ts +47 -0
  19. package/dist/cjs/stockSkills/gold.js +216 -0
  20. package/dist/cjs/stockSkills/gold.test.d.ts +1 -0
  21. package/dist/cjs/stockSkills/gold.test.js +45 -0
  22. package/dist/cjs/stockSkills/ma.d.ts +58 -0
  23. package/dist/cjs/stockSkills/ma.js +169 -0
  24. package/dist/cjs/stockSkills/ma.test.d.ts +1 -0
  25. package/dist/cjs/stockSkills/ma.test.js +98 -0
  26. package/dist/cjs/stockSkills/macd.d.ts +59 -0
  27. package/dist/cjs/stockSkills/macd.js +144 -0
  28. package/dist/cjs/stockSkills/macd.test.d.ts +1 -0
  29. package/dist/cjs/stockSkills/macd.test.js +74 -0
  30. package/dist/cjs/stockSkills/rsi.d.ts +32 -0
  31. package/dist/cjs/stockSkills/rsi.js +145 -0
  32. package/dist/cjs/stockSkills/rsi.test.d.ts +1 -0
  33. package/dist/cjs/stockSkills/rsi.test.js +30 -0
  34. package/dist/cjs/stockSkills/test_data.test.d.ts +9 -0
  35. package/dist/cjs/stockSkills/test_data.test.js +166 -0
  36. package/dist/cjs/stockSkills/utils/dateFormat.d.ts +12 -0
  37. package/dist/cjs/stockSkills/utils/dateFormat.js +58 -0
  38. package/dist/cjs/stockSkills/utils/dateFormat.test.d.ts +1 -0
  39. package/dist/cjs/stockSkills/utils/dateFormat.test.js +29 -0
  40. package/dist/cjs/stockSkills/utils/getWeekLine.d.ts +17 -0
  41. package/dist/cjs/stockSkills/utils/getWeekLine.js +75 -0
  42. package/dist/cjs/stockSkills/utils/getWeekLine.test.d.ts +1 -0
  43. package/dist/cjs/stockSkills/utils/getWeekLine.test.js +16 -0
  44. package/dist/cjs/stockSkills/williams.d.ts +29 -0
  45. package/dist/cjs/stockSkills/williams.js +77 -0
  46. package/dist/cjs/stockSkills/williams.test.d.ts +1 -0
  47. package/dist/cjs/stockSkills/williams.test.js +43 -0
  48. package/dist/cjs/test/add.d.ts +1 -0
  49. package/dist/cjs/test/add.js +7 -0
  50. package/dist/cjs/test/minus.d.ts +1 -0
  51. package/dist/cjs/test/minus.js +7 -0
  52. package/dist/esm/analyze/Month/index.d.ts +15 -0
  53. package/dist/esm/analyze/Month/index.js +20 -0
  54. package/dist/esm/analyze/Regression/simpleRegressoinModel.d.ts +12 -0
  55. package/dist/esm/analyze/Regression/simpleRegressoinModel.js +76 -0
  56. package/dist/esm/analyze/Regression/simpleRegressoinModel.test.d.ts +1 -0
  57. package/dist/esm/analyze/Regression/simpleRegressoinModel.test.js +14 -0
  58. package/dist/esm/analyze/TimeSeries/R/index.d.ts +7 -0
  59. package/dist/esm/analyze/TimeSeries/R/index.js +33 -0
  60. package/dist/esm/analyze/TimeSeries/RS/index.d.ts +2 -0
  61. package/dist/esm/analyze/TimeSeries/RS/index.js +27 -0
  62. package/dist/esm/index.d.ts +12 -0
  63. package/dist/esm/index.js +17 -0
  64. package/dist/esm/stockSkills/gold.d.ts +47 -0
  65. package/dist/esm/stockSkills/gold.js +214 -0
  66. package/dist/esm/stockSkills/gold.test.d.ts +1 -0
  67. package/dist/esm/stockSkills/gold.test.js +43 -0
  68. package/dist/esm/stockSkills/ma.d.ts +58 -0
  69. package/dist/esm/stockSkills/ma.js +167 -0
  70. package/dist/esm/stockSkills/ma.test.d.ts +1 -0
  71. package/dist/esm/stockSkills/ma.test.js +96 -0
  72. package/dist/esm/stockSkills/macd.d.ts +59 -0
  73. package/dist/esm/stockSkills/macd.js +142 -0
  74. package/dist/esm/stockSkills/macd.test.d.ts +1 -0
  75. package/dist/esm/stockSkills/macd.test.js +72 -0
  76. package/dist/esm/stockSkills/rsi.d.ts +32 -0
  77. package/dist/esm/stockSkills/rsi.js +143 -0
  78. package/dist/esm/stockSkills/rsi.test.d.ts +1 -0
  79. package/dist/esm/stockSkills/rsi.test.js +28 -0
  80. package/dist/esm/stockSkills/test_data.test.d.ts +9 -0
  81. package/dist/esm/stockSkills/test_data.test.js +164 -0
  82. package/dist/esm/stockSkills/utils/dateFormat.d.ts +12 -0
  83. package/dist/esm/stockSkills/utils/dateFormat.js +55 -0
  84. package/dist/esm/stockSkills/utils/dateFormat.test.d.ts +1 -0
  85. package/dist/esm/stockSkills/utils/dateFormat.test.js +27 -0
  86. package/dist/esm/stockSkills/utils/getWeekLine.d.ts +17 -0
  87. package/dist/esm/stockSkills/utils/getWeekLine.js +72 -0
  88. package/dist/esm/stockSkills/utils/getWeekLine.test.d.ts +1 -0
  89. package/dist/esm/stockSkills/utils/getWeekLine.test.js +14 -0
  90. package/dist/esm/stockSkills/williams.d.ts +29 -0
  91. package/dist/esm/stockSkills/williams.js +75 -0
  92. package/dist/esm/stockSkills/williams.test.d.ts +1 -0
  93. package/dist/esm/stockSkills/williams.test.js +41 -0
  94. package/dist/esm/test/add.d.ts +1 -0
  95. package/dist/esm/test/add.js +3 -0
  96. package/dist/esm/test/minus.d.ts +1 -0
  97. package/dist/esm/test/minus.js +3 -0
  98. package/dist/umd/index.js +1059 -0
  99. package/package.json +61 -0
  100. package/test.js +29 -0
  101. package/vite.config.js +10 -0
@@ -0,0 +1,58 @@
1
+ declare type ListType = {
2
+ c: number;
3
+ }[];
4
+ declare type ResMa5 = {
5
+ c: number;
6
+ ma5?: number;
7
+ }[];
8
+ declare type ResMa10 = {
9
+ c: number;
10
+ ma10?: number;
11
+ }[];
12
+ declare type ResMa20 = {
13
+ c: number;
14
+ ma20?: number;
15
+ }[];
16
+ declare type ResMa60 = {
17
+ c: number;
18
+ ma60?: number;
19
+ }[];
20
+ declare type ResMaSelf = {
21
+ c: number;
22
+ maSelf?: number;
23
+ }[];
24
+ declare type ResBoll = {
25
+ c: number;
26
+ ma25?: number;
27
+ bollUb?: number;
28
+ bollLb?: number;
29
+ }[];
30
+ declare type ResAllMa = {
31
+ c: number;
32
+ ma5?: number;
33
+ ma10?: number;
34
+ ma20?: number;
35
+ ma25?: number;
36
+ ma60?: number;
37
+ bollUb?: number;
38
+ bollLb?: number;
39
+ }[];
40
+ interface MaType {
41
+ getAllMa: (list: ListType) => ResAllMa;
42
+ getMa5: (list: ListType) => ResMa5;
43
+ getMa10: (list: ListType) => ResMa10;
44
+ getMa20: (list: ListType) => ResMa20;
45
+ getMa60: (list: ListType) => ResMa60;
46
+ getMaSelf: (list: ListType, self: number) => ResMaSelf;
47
+ getBoll: (list: ListType) => ResBoll;
48
+ }
49
+ export default class Ma implements MaType {
50
+ getAllMa(list: ListType): ResAllMa;
51
+ getMa5(list: ListType): ResMa5;
52
+ getMa10(list: ListType): ResMa10;
53
+ getMa20(list: ListType): ResMa20;
54
+ getMa60(list: ListType): ResMa60;
55
+ getMaSelf(list: ListType, self: number): ResMaSelf;
56
+ getBoll(list: ListType): ResBoll;
57
+ }
58
+ export {};
@@ -0,0 +1,169 @@
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 Ma = /** @class */ (function () {
15
+ function Ma() {
16
+ }
17
+ Object.defineProperty(Ma.prototype, "getAllMa", {
18
+ enumerable: false,
19
+ configurable: true,
20
+ writable: true,
21
+ value: function (list) {
22
+ var res = [];
23
+ var responseMa5 = this.getMa5(list);
24
+ var responseMa10 = this.getMa10(list);
25
+ var responseMa20 = this.getMa20(list);
26
+ var responseMa60 = this.getMa60(list);
27
+ var responseBoll = this.getBoll(list);
28
+ for (var i = 0; i < list.length; i++) {
29
+ res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseMa60[i], responseBoll[i]);
30
+ }
31
+ return res;
32
+ }
33
+ });
34
+ Object.defineProperty(Ma.prototype, "getMa5", {
35
+ enumerable: false,
36
+ configurable: true,
37
+ writable: true,
38
+ value: function (list) {
39
+ var res = [];
40
+ for (var i = 0; i < list.length; i++) {
41
+ if (i < 4)
42
+ res[i] = __assign(__assign({}, list[i]), { ma5: undefined });
43
+ else {
44
+ var sum = list
45
+ .slice(i - 4, i + 1)
46
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
47
+ var ma5 = Math.round((sum / 5) * 100) / 100;
48
+ res[i] = __assign(__assign({}, list[i]), { ma5: ma5 });
49
+ }
50
+ }
51
+ return res;
52
+ }
53
+ });
54
+ Object.defineProperty(Ma.prototype, "getMa10", {
55
+ enumerable: false,
56
+ configurable: true,
57
+ writable: true,
58
+ value: function (list) {
59
+ var res = [];
60
+ for (var i = 0; i < list.length; i++) {
61
+ if (i < 9)
62
+ res[i] = __assign(__assign({}, list[i]), { ma10: undefined });
63
+ else {
64
+ var sum = list
65
+ .slice(i - 9, i + 1)
66
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
67
+ var ma10 = Math.round((sum / 10) * 100) / 100;
68
+ res[i] = __assign(__assign({}, list[i]), { ma10: ma10 });
69
+ }
70
+ }
71
+ return res;
72
+ }
73
+ });
74
+ Object.defineProperty(Ma.prototype, "getMa20", {
75
+ enumerable: false,
76
+ configurable: true,
77
+ writable: true,
78
+ value: function (list) {
79
+ var res = [];
80
+ for (var i = 0; i < list.length; i++) {
81
+ if (i < 19)
82
+ res[i] = __assign(__assign({}, list[i]), { ma20: undefined });
83
+ else {
84
+ var sum = list
85
+ .slice(i - 19, i + 1)
86
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
87
+ var ma20 = Math.round((sum / 20) * 100) / 100;
88
+ res[i] = __assign(__assign({}, list[i]), { ma20: ma20 });
89
+ }
90
+ }
91
+ return res;
92
+ }
93
+ });
94
+ Object.defineProperty(Ma.prototype, "getMa60", {
95
+ enumerable: false,
96
+ configurable: true,
97
+ writable: true,
98
+ value: function (list) {
99
+ var res = [];
100
+ for (var i = 0; i < list.length; i++) {
101
+ if (i < 59)
102
+ res[i] = __assign(__assign({}, list[i]), { ma60: undefined });
103
+ else {
104
+ var sum = list
105
+ .slice(i - 59, i + 1)
106
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
107
+ var ma60 = Math.round((sum / 60) * 100) / 100;
108
+ res[i] = __assign(__assign({}, list[i]), { ma60: ma60 });
109
+ }
110
+ }
111
+ return res;
112
+ }
113
+ });
114
+ Object.defineProperty(Ma.prototype, "getMaSelf", {
115
+ enumerable: false,
116
+ configurable: true,
117
+ writable: true,
118
+ value: function (list, self) {
119
+ var res = [];
120
+ for (var i = 0; i < list.length; i++) {
121
+ if (i < (self - 1))
122
+ res[i] = __assign(__assign({}, list[i]), { maSelf: undefined });
123
+ else {
124
+ var sum = list
125
+ .slice(i - (self - 1), i + 1)
126
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
127
+ var maSelf = Math.round((sum / self) * 100) / 100;
128
+ res[i] = __assign(__assign({}, list[i]), { maSelf: maSelf });
129
+ }
130
+ }
131
+ return res;
132
+ }
133
+ });
134
+ Object.defineProperty(Ma.prototype, "getBoll", {
135
+ enumerable: false,
136
+ configurable: true,
137
+ writable: true,
138
+ value: function (list) {
139
+ var res = [];
140
+ var _loop_1 = function (i) {
141
+ if (i < 24)
142
+ res[i] = __assign(__assign({}, list[i]), { ma25: undefined, bollUb: undefined, bollLb: undefined });
143
+ else {
144
+ // ma25
145
+ var sumMa25 = list
146
+ .slice(i - 24, i + 1)
147
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
148
+ var ma25_1 = Math.round((sumMa25 / 25) * 100) / 100;
149
+ // 標準差
150
+ var sumBase = res
151
+ .slice(i - 24, i + 1)
152
+ .reduce(function (pre, current) {
153
+ return ma25_1 !== undefined
154
+ ? pre + Math.pow(current.c - ma25_1, 2)
155
+ : pre;
156
+ }, 0);
157
+ var base = Math.round(Math.sqrt(sumBase / 25) * 100) / 100;
158
+ res[i] = __assign(__assign({}, list[i]), { ma25: ma25_1, bollUb: ma25_1 + 2 * base, bollLb: ma25_1 - 2 * base });
159
+ }
160
+ };
161
+ for (var i = 0; i < list.length; i++) {
162
+ _loop_1(i);
163
+ }
164
+ return res;
165
+ }
166
+ });
167
+ return Ma;
168
+ }());
169
+ exports.default = Ma;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var ma_1 = require("./ma");
4
+ var test_data_test_1 = require("./test_data.test");
5
+ describe("test ma methods", function () {
6
+ it("test getMa5()", function () {
7
+ var ma = new ma_1.default();
8
+ expect(ma.getMa5(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
9
+ c: 142,
10
+ o: 138,
11
+ t: 20211214,
12
+ v: 16841,
13
+ h: 143,
14
+ l: 138,
15
+ ma5: 141.1,
16
+ });
17
+ });
18
+ it("test getMa10()", function () {
19
+ var ma = new ma_1.default();
20
+ expect(ma.getMa10(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
21
+ c: 142,
22
+ o: 138,
23
+ t: 20211214,
24
+ v: 16841,
25
+ h: 143,
26
+ l: 138,
27
+ ma10: 146.7,
28
+ });
29
+ });
30
+ it("test getMa20()", function () {
31
+ var ma = new ma_1.default();
32
+ expect(ma.getMa20(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
33
+ c: 142,
34
+ o: 138,
35
+ t: 20211214,
36
+ v: 16841,
37
+ h: 143,
38
+ l: 138,
39
+ ma20: 144.88,
40
+ });
41
+ });
42
+ it("test getMa60()", function () {
43
+ var ma = new ma_1.default();
44
+ expect(ma.getMa60(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
45
+ c: 142,
46
+ o: 138,
47
+ t: 20211214,
48
+ v: 16841,
49
+ h: 143,
50
+ l: 138,
51
+ ma60: 134.86,
52
+ });
53
+ });
54
+ it("test getMaSelf()", function () {
55
+ var ma = new ma_1.default();
56
+ expect(ma.getMaSelf(test_data_test_1.default, 20)[test_data_test_1.default.length - 1]).toEqual({
57
+ c: 142,
58
+ o: 138,
59
+ t: 20211214,
60
+ v: 16841,
61
+ h: 143,
62
+ l: 138,
63
+ maSelf: 144.88,
64
+ });
65
+ });
66
+ it("test getBoll()", function () {
67
+ var ma = new ma_1.default();
68
+ expect(ma.getBoll(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
69
+ c: 142,
70
+ o: 138,
71
+ t: 20211214,
72
+ v: 16841,
73
+ h: 143,
74
+ l: 138,
75
+ ma25: 142.66,
76
+ bollLb: 126.69999999999999,
77
+ bollUb: 158.62,
78
+ });
79
+ });
80
+ it("test getAllMa()", function () {
81
+ var ma = new ma_1.default();
82
+ expect(ma.getAllMa(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
83
+ t: 20211214,
84
+ o: 138,
85
+ h: 143,
86
+ l: 138,
87
+ c: 142,
88
+ v: 16841,
89
+ ma5: 141.1,
90
+ ma10: 146.7,
91
+ ma20: 144.88,
92
+ ma60: 134.86,
93
+ ma25: 142.66,
94
+ bollUb: 158.62,
95
+ bollLb: 126.69999999999999,
96
+ });
97
+ });
98
+ });
@@ -0,0 +1,59 @@
1
+ declare type ItemType = {
2
+ h: number;
3
+ l: number;
4
+ c: number;
5
+ };
6
+ declare type ResEMA12Type = {
7
+ h: number;
8
+ l: number;
9
+ c: number;
10
+ EMA12?: number;
11
+ }[];
12
+ declare type ResEMA26Type = {
13
+ h: number;
14
+ l: number;
15
+ c: number;
16
+ EMA26?: number;
17
+ }[];
18
+ declare type ResDifType = {
19
+ h: number;
20
+ l: number;
21
+ c: number;
22
+ DIF?: number;
23
+ }[];
24
+ declare type ResMacd9Type = {
25
+ h: number;
26
+ l: number;
27
+ c: number;
28
+ MACD9?: number;
29
+ OSC?: number;
30
+ }[];
31
+ declare type ResAllMacdType = {
32
+ h: number;
33
+ l: number;
34
+ c: number;
35
+ EMA12?: number;
36
+ EMA26?: number;
37
+ DIF?: number;
38
+ MACD9?: number;
39
+ OSC?: number;
40
+ }[];
41
+ interface MacdType {
42
+ getMACD: (list: ItemType[]) => ResAllMacdType;
43
+ getDI: (item: ItemType) => number;
44
+ getStartEMA: (list: ItemType[]) => number;
45
+ getEMA12: (list: ItemType[]) => ResEMA12Type;
46
+ getEMA26: (list: ItemType[]) => ResEMA26Type;
47
+ getDIF: (list: ItemType[], ResEMA12: ResEMA12Type, ResEMA26: ResEMA26Type) => ResDifType;
48
+ getMACD9: (list: ItemType[], DIF: ResDifType) => ResMacd9Type;
49
+ }
50
+ export default class MACD implements MacdType {
51
+ getMACD(list: ItemType[]): ResAllMacdType;
52
+ getDI(item: ItemType): number;
53
+ getStartEMA(arr: ItemType[]): number;
54
+ getEMA12(list: ItemType[]): ResEMA12Type;
55
+ getEMA26(list: ItemType[]): ResEMA26Type;
56
+ getDIF(list: ItemType[], ResEMA12: ResEMA12Type, ResEMA26: ResEMA26Type): ResDifType;
57
+ getMACD9(list: ItemType[], DIF: ResDifType): ResMacd9Type;
58
+ }
59
+ export {};
@@ -0,0 +1,144 @@
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 MACD = /** @class */ (function () {
15
+ function MACD() {
16
+ }
17
+ Object.defineProperty(MACD.prototype, "getMACD", {
18
+ enumerable: false,
19
+ configurable: true,
20
+ writable: true,
21
+ value: function (list) {
22
+ // 首筆RSI
23
+ var res = [];
24
+ var EMA12 = this.getEMA12(list);
25
+ var EMA26 = this.getEMA26(list);
26
+ var DIF = this.getDIF(list, EMA12, EMA26);
27
+ var MACD9 = this.getMACD9(list, DIF);
28
+ for (var i = 0; i < list.length; i++) {
29
+ res[i] = Object.assign(list[i], DIF[i], MACD9[i]);
30
+ }
31
+ return res;
32
+ }
33
+ });
34
+ Object.defineProperty(MACD.prototype, "getDI", {
35
+ enumerable: false,
36
+ configurable: true,
37
+ writable: true,
38
+ value: function (item) {
39
+ return (item["h"] + item["l"] + 2 * item["c"]) / 4;
40
+ }
41
+ });
42
+ Object.defineProperty(MACD.prototype, "getStartEMA", {
43
+ enumerable: false,
44
+ configurable: true,
45
+ writable: true,
46
+ value: function (arr) {
47
+ var _this = this;
48
+ var sum = 0;
49
+ arr.forEach(function (item) {
50
+ var DI = _this.getDI(item);
51
+ sum += DI;
52
+ });
53
+ return sum / arr.length;
54
+ }
55
+ });
56
+ Object.defineProperty(MACD.prototype, "getEMA12", {
57
+ enumerable: false,
58
+ configurable: true,
59
+ writable: true,
60
+ value: function (list) {
61
+ var start = list.slice(0, 11);
62
+ var beforeEMA12 = this.getStartEMA(start);
63
+ var res = [];
64
+ for (var i = 0; i < list.length; i++) {
65
+ if (i < 12)
66
+ res[i] = __assign(__assign({}, list[i]), { EMA12: undefined });
67
+ else {
68
+ beforeEMA12 = (beforeEMA12 * 11) / 13 + (this.getDI(list[i]) * 2) / 13;
69
+ res[i] = __assign(__assign({}, list[i]), { EMA12: beforeEMA12 });
70
+ }
71
+ }
72
+ return res;
73
+ }
74
+ });
75
+ Object.defineProperty(MACD.prototype, "getEMA26", {
76
+ enumerable: false,
77
+ configurable: true,
78
+ writable: true,
79
+ value: function (list) {
80
+ var start = list.slice(0, 25);
81
+ var beforeEMA26 = this.getStartEMA(start);
82
+ var res = [];
83
+ for (var i = 0; i < list.length; i++) {
84
+ if (i < 26)
85
+ res[i] = __assign(__assign({}, list[i]), { EMA26: undefined });
86
+ else {
87
+ beforeEMA26 = (beforeEMA26 * 25) / 27 + (this.getDI(list[i]) * 2) / 27;
88
+ res[i] = __assign(__assign({}, list[i]), { EMA26: beforeEMA26 });
89
+ }
90
+ }
91
+ return res;
92
+ }
93
+ });
94
+ Object.defineProperty(MACD.prototype, "getDIF", {
95
+ enumerable: false,
96
+ configurable: true,
97
+ writable: true,
98
+ value: function (list, ResEMA12, ResEMA26) {
99
+ var _a, _b;
100
+ var res = [];
101
+ for (var i = 0; i < list.length; i++) {
102
+ if (i < 26)
103
+ res[i] = __assign(__assign({}, list[i]), { DIF: undefined });
104
+ else {
105
+ var EMA12 = ((_a = ResEMA12 === null || ResEMA12 === void 0 ? void 0 : ResEMA12[i]) === null || _a === void 0 ? void 0 : _a["EMA12"]) && ResEMA12[i]["EMA12"];
106
+ var EMA26 = ((_b = ResEMA26 === null || ResEMA26 === void 0 ? void 0 : ResEMA26[i]) === null || _b === void 0 ? void 0 : _b["EMA26"]) && ResEMA26[i]["EMA26"];
107
+ var DIF = EMA12 - EMA26;
108
+ res[i] = __assign(__assign({}, list[i]), { DIF: DIF });
109
+ }
110
+ }
111
+ return res;
112
+ }
113
+ });
114
+ Object.defineProperty(MACD.prototype, "getMACD9", {
115
+ enumerable: false,
116
+ configurable: true,
117
+ writable: true,
118
+ value: function (list, DIF) {
119
+ var res = [];
120
+ var beforeMACD9 = 0;
121
+ for (var i = 0; i < list.length; i++) {
122
+ if (i < 26)
123
+ res[i] = __assign(__assign({}, list[i]), { MACD9: undefined, OSC: undefined });
124
+ else if (i === 26) {
125
+ var MACD9 = DIF.slice(26, 34)
126
+ .map(function (item) { return ((item === null || item === void 0 ? void 0 : item.DIF) ? item["DIF"] : 0); })
127
+ .reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
128
+ var OSC = DIF[i]["DIF"] - MACD9;
129
+ res[26] = __assign(__assign({}, list[i]), { MACD9: MACD9, OSC: OSC });
130
+ beforeMACD9 = MACD9;
131
+ }
132
+ else {
133
+ var MACD9 = beforeMACD9 + ((DIF[i]["DIF"] - beforeMACD9) * 2) / 10;
134
+ var OSC = DIF[i]["DIF"] - MACD9;
135
+ res[i] = __assign(__assign({}, list[i]), { MACD9: MACD9, OSC: OSC });
136
+ beforeMACD9 = MACD9;
137
+ }
138
+ }
139
+ return res;
140
+ }
141
+ });
142
+ return MACD;
143
+ }());
144
+ exports.default = MACD;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var macd_1 = require("./macd");
4
+ var test_data_test_1 = require("./test_data.test");
5
+ describe("test macd methods", function () {
6
+ it("test getEMA12()", function () {
7
+ var macd = new macd_1.default();
8
+ expect(macd.getEMA12(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
9
+ c: 142,
10
+ o: 138,
11
+ t: 20211214,
12
+ v: 16841,
13
+ h: 143,
14
+ l: 138,
15
+ EMA12: 144.01967137166324,
16
+ });
17
+ });
18
+ it("test getEMA26()", function () {
19
+ var macd = new macd_1.default();
20
+ expect(macd.getEMA26(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
21
+ c: 142,
22
+ o: 138,
23
+ t: 20211214,
24
+ v: 16841,
25
+ h: 143,
26
+ l: 138,
27
+ EMA26: 142.2290771028552,
28
+ });
29
+ });
30
+ it("test getDIF()", function () {
31
+ var macd = new macd_1.default();
32
+ var Ema26 = macd.getEMA26(test_data_test_1.default);
33
+ var Ema12 = macd.getEMA12(test_data_test_1.default);
34
+ expect(macd.getDIF(test_data_test_1.default, Ema12, Ema26)[test_data_test_1.default.length - 1]).toEqual({
35
+ c: 142,
36
+ o: 138,
37
+ t: 20211214,
38
+ v: 16841,
39
+ h: 143,
40
+ l: 138,
41
+ DIF: 1.7905942688080358,
42
+ });
43
+ });
44
+ it("test getMACD9()", function () {
45
+ var macd = new macd_1.default();
46
+ var Ema26 = macd.getEMA26(test_data_test_1.default);
47
+ var Ema12 = macd.getEMA12(test_data_test_1.default);
48
+ var Dif = macd.getDIF(test_data_test_1.default, Ema12, Ema26);
49
+ expect(macd.getMACD9(test_data_test_1.default, Dif)[test_data_test_1.default.length - 1]).toEqual({
50
+ c: 142,
51
+ o: 138,
52
+ t: 20211214,
53
+ v: 16841,
54
+ h: 143,
55
+ l: 138,
56
+ MACD9: 3.461688641153529,
57
+ OSC: -1.6710943723454932,
58
+ });
59
+ });
60
+ it("test getMACD()", function () {
61
+ var macd = new macd_1.default();
62
+ expect(macd.getMACD(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
63
+ c: 142,
64
+ o: 138,
65
+ t: 20211214,
66
+ v: 16841,
67
+ h: 143,
68
+ l: 138,
69
+ DIF: 1.7905942688080358,
70
+ MACD9: 3.461688641153529,
71
+ OSC: -1.6710943723454932,
72
+ });
73
+ });
74
+ });
@@ -0,0 +1,32 @@
1
+ declare type ListType = {
2
+ c: number;
3
+ }[];
4
+ declare type ResRsi6Type = {
5
+ c: number;
6
+ rsi6?: number;
7
+ }[];
8
+ declare type ResRsi12Type = {
9
+ c: number;
10
+ rsi12?: number;
11
+ }[];
12
+ declare type ResAllRsiType = {
13
+ c: number;
14
+ rsi6?: number;
15
+ rsi12?: number;
16
+ }[];
17
+ interface RsiType {
18
+ getRsi6: (list: ListType) => ResRsi6Type;
19
+ getRsi12: (list: ListType) => ResRsi12Type;
20
+ getStartUpAvg: (list: ListType, count: number) => number;
21
+ getStartDownAvg: (list: ListType, count: number) => number;
22
+ getRsi: (UpAvg: number, DownAvg: number) => number;
23
+ }
24
+ export default class Rsi implements RsiType {
25
+ getAllRsi(list: ListType): ResAllRsiType;
26
+ getRsi6(list: ListType): ResRsi6Type;
27
+ getRsi12(list: ListType): ResRsi12Type;
28
+ getStartUpAvg(list: ListType, count: number): number;
29
+ getStartDownAvg(list: ListType, count: number): number;
30
+ getRsi(UpAvg: number, DownAvg: number): number;
31
+ }
32
+ export {};