@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,143 @@
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 Rsi = /** @class */ (function () {
13
+ function Rsi() {
14
+ }
15
+ Object.defineProperty(Rsi.prototype, "getAllRsi", {
16
+ enumerable: false,
17
+ configurable: true,
18
+ writable: true,
19
+ value: function (list) {
20
+ var res = [];
21
+ var rsi6 = this.getRsi6(list);
22
+ var rsi12 = this.getRsi12(list);
23
+ for (var i = 0; i < list.length; i++) {
24
+ res[i] = Object.assign(list[i], rsi6[i], rsi12[i]);
25
+ }
26
+ return res;
27
+ }
28
+ });
29
+ Object.defineProperty(Rsi.prototype, "getRsi6", {
30
+ enumerable: false,
31
+ configurable: true,
32
+ writable: true,
33
+ value: function (list) {
34
+ var res = [];
35
+ // 前5筆
36
+ for (var i = 0; i < 5; i++) {
37
+ res[i] = __assign(__assign({}, list[i]), { rsi6: undefined });
38
+ }
39
+ // 第6筆Rsi
40
+ var beforeUpAvg = this.getStartUpAvg(list, 6);
41
+ var beforeDownAvg = this.getStartDownAvg(list, 6);
42
+ var firstRsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
43
+ res[5] = __assign(__assign({}, list[5]), { rsi6: firstRsi6 });
44
+ // else
45
+ for (var i = 6; i < list.length; i++) {
46
+ var minusU = 0;
47
+ var minusD = 0;
48
+ var minusC = list[i]["c"] - list[i - 1]["c"];
49
+ if (minusC > 0) {
50
+ minusU = minusC;
51
+ }
52
+ else {
53
+ minusD = minusC;
54
+ }
55
+ beforeUpAvg = (beforeUpAvg * 5) / 6 + minusU / 6;
56
+ beforeDownAvg = (beforeDownAvg * 5) / 6 + Math.abs(minusD) / 6;
57
+ var rsi6 = this.getRsi(beforeUpAvg, beforeDownAvg);
58
+ res[i] = __assign(__assign({}, list[i]), { rsi6: Math.round(rsi6 * 100) / 100 });
59
+ }
60
+ return res;
61
+ }
62
+ });
63
+ Object.defineProperty(Rsi.prototype, "getRsi12", {
64
+ enumerable: false,
65
+ configurable: true,
66
+ writable: true,
67
+ value: function (list) {
68
+ var res = [];
69
+ // 前11筆
70
+ for (var i = 0; i < 11; i++) {
71
+ res[i] = __assign(__assign({}, list[i]), { rsi12: undefined });
72
+ }
73
+ // 第12筆Rsi
74
+ var beforeUpAvg = this.getStartUpAvg(list, 12);
75
+ var beforeDownAvg = this.getStartDownAvg(list, 12);
76
+ var firstRsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
77
+ res[11] = __assign(__assign({}, list[11]), { rsi12: firstRsi12 });
78
+ // else
79
+ for (var i = 12; i < list.length; i++) {
80
+ var minusU = 0;
81
+ var minusD = 0;
82
+ var minusC = list[i]["c"] - list[i - 1]["c"];
83
+ if (minusC > 0) {
84
+ minusU = minusC;
85
+ }
86
+ else {
87
+ minusD = minusC;
88
+ }
89
+ beforeUpAvg = (beforeUpAvg * 11) / 12 + minusU / 12;
90
+ beforeDownAvg = (beforeDownAvg * 11) / 12 + Math.abs(minusD) / 12;
91
+ var rsi12 = this.getRsi(beforeUpAvg, beforeDownAvg);
92
+ res[i] = __assign(__assign({}, list[i]), { rsi12: Math.round(rsi12 * 100) / 100 });
93
+ }
94
+ return res;
95
+ }
96
+ });
97
+ Object.defineProperty(Rsi.prototype, "getStartUpAvg", {
98
+ enumerable: false,
99
+ configurable: true,
100
+ writable: true,
101
+ value: function (list, count) {
102
+ var start = list.slice(0, 5);
103
+ var sum = 0;
104
+ for (var i = 1; i < start.length; i++) {
105
+ var minus = start[i]["c"] - start[i - 1]["c"];
106
+ if (minus > 0) {
107
+ sum += minus;
108
+ }
109
+ }
110
+ return sum / count;
111
+ }
112
+ });
113
+ Object.defineProperty(Rsi.prototype, "getStartDownAvg", {
114
+ enumerable: false,
115
+ configurable: true,
116
+ writable: true,
117
+ value: function (list, count) {
118
+ var start = list.slice(0, 5);
119
+ var sum = 0;
120
+ for (var i = 1; i < start.length; i++) {
121
+ var minus = start[i]["c"] - start[i - 1]["c"];
122
+ if (minus < 0) {
123
+ sum += minus;
124
+ }
125
+ }
126
+ return Math.abs(sum / count);
127
+ }
128
+ });
129
+ Object.defineProperty(Rsi.prototype, "getRsi", {
130
+ enumerable: false,
131
+ configurable: true,
132
+ writable: true,
133
+ value: function (UpAvg, DownAvg) {
134
+ var res = 0;
135
+ if (UpAvg + DownAvg !== 0) {
136
+ res = (UpAvg / (UpAvg + DownAvg)) * 100;
137
+ }
138
+ return res;
139
+ }
140
+ });
141
+ return Rsi;
142
+ }());
143
+ export default Rsi;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,28 @@
1
+ import Rsi from "./rsi";
2
+ import data from "./test_data.test";
3
+ describe("test rsi methods", function () {
4
+ it("test getRsi6()", function () {
5
+ var rsi = new Rsi();
6
+ expect(rsi.getRsi6(data)[data.length - 1]).toEqual({
7
+ c: 142,
8
+ o: 138,
9
+ t: 20211214,
10
+ v: 16841,
11
+ h: 143,
12
+ l: 138,
13
+ rsi6: 45.12,
14
+ });
15
+ });
16
+ it("test getRsi12()", function () {
17
+ var rsi = new Rsi();
18
+ expect(rsi.getRsi12(data)[data.length - 1]).toEqual({
19
+ c: 142,
20
+ o: 138,
21
+ t: 20211214,
22
+ v: 16841,
23
+ h: 143,
24
+ l: 138,
25
+ rsi12: 49.47,
26
+ });
27
+ });
28
+ });
@@ -0,0 +1,9 @@
1
+ declare const data: {
2
+ t: number;
3
+ o: number;
4
+ h: number;
5
+ l: number;
6
+ c: number;
7
+ v: number;
8
+ }[];
9
+ export default data;
@@ -0,0 +1,164 @@
1
+ var data = [
2
+ { t: 20210428, o: 71.0, h: 72.0, l: 69.1, c: 69.6, v: 22859 },
3
+ { t: 20210429, o: 69.0, h: 71.5, l: 68.6, c: 69.0, v: 13359 },
4
+ { t: 20210503, o: 69.2, h: 69.4, l: 66.0, c: 67.0, v: 13227 },
5
+ { t: 20210504, o: 68.0, h: 68.5, l: 60.3, c: 64.4, v: 21469 },
6
+ { t: 20210505, o: 65.1, h: 67.7, l: 62.8, c: 62.8, v: 13563 },
7
+ { t: 20210506, o: 62.1, h: 64.8, l: 60.5, c: 61.2, v: 10918 },
8
+ { t: 20210507, o: 66.3, h: 67.3, l: 66.2, c: 67.3, v: 4979 },
9
+ { t: 20210510, o: 72.5, h: 74.0, l: 70.6, c: 74.0, v: 38266 },
10
+ { t: 20210511, o: 72.0, h: 72.0, l: 66.6, c: 67.0, v: 33321 },
11
+ { t: 20210512, o: 67.2, h: 72.0, l: 60.3, c: 63.5, v: 45970 },
12
+ { t: 20210513, o: 62.0, h: 65.9, l: 59.9, c: 62.9, v: 24450 },
13
+ { t: 20210514, o: 65.0, h: 67.7, l: 62.0, c: 63.5, v: 21603 },
14
+ { t: 20210517, o: 58.6, h: 63.0, l: 57.2, c: 57.2, v: 21274 },
15
+ { t: 20210518, o: 59.0, h: 62.9, l: 58.2, c: 62.9, v: 21156 },
16
+ { t: 20210519, o: 63.3, h: 67.5, l: 62.3, c: 66.0, v: 25551 },
17
+ { t: 20210520, o: 65.0, h: 66.6, l: 62.7, c: 62.9, v: 16006 },
18
+ { t: 20210521, o: 64.8, h: 65.6, l: 63.5, c: 64.0, v: 10197 },
19
+ { t: 20210524, o: 63.2, h: 68.2, l: 63.1, c: 66.8, v: 18400 },
20
+ { t: 20210525, o: 68.0, h: 71.3, l: 67.5, c: 68.2, v: 35417 },
21
+ { t: 20210526, o: 69.1, h: 70.4, l: 67.8, c: 68.5, v: 13411 },
22
+ { t: 20210527, o: 68.2, h: 72.0, l: 67.9, c: 72.0, v: 26521 },
23
+ { t: 20210528, o: 74.1, h: 79.2, l: 73.6, c: 79.2, v: 82389 },
24
+ { t: 20210531, o: 82.3, h: 86.6, l: 80.2, c: 81.9, v: 77328 },
25
+ { t: 20210601, o: 82.9, h: 86.3, l: 81.8, c: 86.1, v: 46547 },
26
+ { t: 20210602, o: 87.0, h: 88.0, l: 82.2, c: 83.0, v: 35438 },
27
+ { t: 20210603, o: 84.5, h: 88.3, l: 83.8, c: 85.7, v: 38572 },
28
+ { t: 20210604, o: 85.1, h: 90.0, l: 84.3, c: 86.0, v: 43999 },
29
+ { t: 20210607, o: 86.4, h: 87.8, l: 81.9, c: 83.1, v: 28352 },
30
+ { t: 20210608, o: 75.7, h: 79.0, l: 75.4, c: 77.0, v: 45168 },
31
+ { t: 20210609, o: 79.9, h: 81.0, l: 78.3, c: 78.6, v: 37397 },
32
+ { t: 20210610, o: 80.0, h: 85.2, l: 79.1, c: 83.1, v: 56885 },
33
+ { t: 20210611, o: 85.5, h: 86.6, l: 82.2, c: 83.0, v: 37103 },
34
+ { t: 20210615, o: 84.4, h: 84.9, l: 82.2, c: 82.3, v: 15298 },
35
+ { t: 20210616, o: 82.9, h: 83.5, l: 79.4, c: 79.9, v: 15479 },
36
+ { t: 20210617, o: 79.9, h: 81.6, l: 78.4, c: 81.5, v: 13701 },
37
+ { t: 20210618, o: 81.5, h: 81.9, l: 79.6, c: 79.6, v: 12112 },
38
+ { t: 20210621, o: 78.6, h: 81.5, l: 77.8, c: 79.9, v: 16939 },
39
+ { t: 20210622, o: 83.0, h: 83.8, l: 79.2, c: 79.2, v: 20544 },
40
+ { t: 20210623, o: 80.7, h: 82.8, l: 79.2, c: 82.4, v: 16816 },
41
+ { t: 20210624, o: 83.2, h: 84.7, l: 81.8, c: 83.5, v: 25302 },
42
+ { t: 20210625, o: 83.9, h: 86.4, l: 83.5, c: 84.3, v: 27456 },
43
+ { t: 20210628, o: 84.5, h: 86.2, l: 83.4, c: 84.9, v: 16710 },
44
+ { t: 20210629, o: 85.9, h: 86.2, l: 81.0, c: 81.1, v: 16373 },
45
+ { t: 20210630, o: 81.6, h: 82.6, l: 79.9, c: 80.3, v: 11783 },
46
+ { t: 20210701, o: 80.8, h: 81.6, l: 78.7, c: 78.9, v: 9775 },
47
+ { t: 20210702, o: 79.0, h: 86.0, l: 78.5, c: 86.0, v: 20332 },
48
+ { t: 20210705, o: 87.3, h: 90.0, l: 86.0, c: 86.2, v: 35241 },
49
+ { t: 20210706, o: 88.0, h: 89.5, l: 86.1, c: 86.9, v: 19595 },
50
+ { t: 20210707, o: 87.7, h: 95.5, l: 87.7, c: 95.5, v: 51150 },
51
+ { t: 20210708, o: 96.6, h: 98.3, l: 91.8, c: 96.2, v: 62112 },
52
+ { t: 20210709, o: 97.0, h: 105.5, l: 94.2, c: 105.5, v: 57048 },
53
+ { t: 20210712, o: 108.5, h: 115.5, l: 107.0, c: 112.0, v: 76701 },
54
+ { t: 20210713, o: 119.0, h: 123.0, l: 116.5, c: 123.0, v: 33001 },
55
+ { t: 20210714, o: 128.0, h: 131.0, l: 118.0, c: 124.5, v: 80315 },
56
+ { t: 20210715, o: 126.5, h: 130.0, l: 120.5, c: 130.0, v: 40958 },
57
+ { t: 20210716, o: 126.0, h: 142.0, l: 125.0, c: 137.0, v: 59319 },
58
+ { t: 20210719, o: 135.0, h: 142.5, l: 132.0, c: 134.0, v: 48528 },
59
+ { t: 20210720, o: 135.5, h: 140.5, l: 133.0, c: 134.5, v: 44290 },
60
+ { t: 20210721, o: 142.0, h: 147.5, l: 139.5, c: 147.5, v: 35364 },
61
+ { t: 20210722, o: 154.5, h: 159.5, l: 146.5, c: 153.0, v: 69966 },
62
+ { t: 20210723, o: 150.0, h: 158.5, l: 138.0, c: 141.0, v: 60528 },
63
+ { t: 20210726, o: 145.0, h: 155.0, l: 142.5, c: 155.0, v: 60125 },
64
+ { t: 20210727, o: 157.0, h: 162.0, l: 142.5, c: 147.0, v: 68069 },
65
+ { t: 20210728, o: 143.0, h: 144.0, l: 132.5, c: 132.5, v: 24227 },
66
+ { t: 20210729, o: 134.0, h: 139.5, l: 124.0, c: 136.5, v: 80854 },
67
+ { t: 20210730, o: 138.0, h: 145.0, l: 133.0, c: 135.0, v: 51088 },
68
+ { t: 20210802, o: 138.0, h: 141.0, l: 132.0, c: 135.0, v: 30838 },
69
+ { t: 20210803, o: 139.0, h: 145.0, l: 137.0, c: 142.0, v: 44245 },
70
+ { t: 20210804, o: 149.0, h: 155.0, l: 147.0, c: 149.5, v: 84279 },
71
+ { t: 20210805, o: 151.0, h: 152.0, l: 142.5, c: 144.5, v: 48729 },
72
+ { t: 20210806, o: 146.0, h: 151.0, l: 143.5, c: 150.0, v: 37316 },
73
+ { t: 20210809, o: 148.0, h: 150.5, l: 136.0, c: 138.5, v: 39577 },
74
+ { t: 20210810, o: 138.5, h: 138.5, l: 129.0, c: 135.0, v: 37046 },
75
+ { t: 20210811, o: 136.0, h: 140.0, l: 127.5, c: 128.0, v: 25115 },
76
+ { t: 20210812, o: 130.5, h: 139.0, l: 130.0, c: 136.5, v: 22666 },
77
+ { t: 20210813, o: 137.5, h: 141.0, l: 130.0, c: 130.5, v: 26823 },
78
+ { t: 20210816, o: 132.0, h: 139.0, l: 131.5, c: 135.5, v: 32348 },
79
+ { t: 20210817, o: 138.5, h: 145.0, l: 135.0, c: 137.5, v: 62296 },
80
+ { t: 20210818, o: 134.5, h: 151.0, l: 130.0, c: 150.0, v: 85599 },
81
+ { t: 20210819, o: 146.0, h: 154.5, l: 135.0, c: 135.0, v: 90784 },
82
+ { t: 20210820, o: 139.0, h: 148.0, l: 138.0, c: 144.0, v: 86661 },
83
+ { t: 20210823, o: 151.0, h: 153.0, l: 148.0, c: 149.0, v: 69675 },
84
+ { t: 20210824, o: 153.0, h: 163.5, l: 153.0, c: 163.5, v: 101927 },
85
+ { t: 20210825, o: 165.0, h: 172.0, l: 152.0, c: 158.5, v: 174708 },
86
+ { t: 20210826, o: 161.0, h: 164.5, l: 155.5, c: 158.0, v: 86475 },
87
+ { t: 20210827, o: 156.0, h: 157.0, l: 148.5, c: 150.0, v: 54359 },
88
+ { t: 20210830, o: 152.0, h: 154.5, l: 149.0, c: 150.0, v: 24844 },
89
+ { t: 20210831, o: 152.0, h: 155.0, l: 150.0, c: 155.0, v: 33930 },
90
+ { t: 20210901, o: 155.5, h: 170.0, l: 155.0, c: 167.0, v: 90084 },
91
+ { t: 20210902, o: 168.0, h: 175.0, l: 159.0, c: 159.0, v: 113730 },
92
+ { t: 20210903, o: 164.0, h: 169.5, l: 160.5, c: 165.5, v: 71038 },
93
+ { t: 20210906, o: 163.0, h: 163.5, l: 150.0, c: 153.5, v: 50593 },
94
+ { t: 20210907, o: 148.5, h: 149.0, l: 138.5, c: 138.5, v: 35906 },
95
+ { t: 20210908, o: 132.5, h: 136.5, l: 128.0, c: 130.5, v: 76783 },
96
+ { t: 20210909, o: 129.5, h: 136.5, l: 128.5, c: 133.0, v: 44924 },
97
+ { t: 20210910, o: 133.0, h: 135.0, l: 128.0, c: 133.0, v: 39440 },
98
+ { t: 20210913, o: 133.0, h: 137.0, l: 128.5, c: 129.0, v: 34660 },
99
+ { t: 20210914, o: 129.5, h: 131.0, l: 121.0, c: 121.5, v: 62337 },
100
+ { t: 20210915, o: 122.0, h: 125.5, l: 119.0, c: 120.0, v: 41639 },
101
+ { t: 20210916, o: 121.0, h: 123.0, l: 119.0, c: 121.5, v: 21404 },
102
+ { t: 20210917, o: 122.5, h: 126.5, l: 121.5, c: 126.5, v: 26806 },
103
+ { t: 20210922, o: 121.5, h: 125.0, l: 121.0, c: 125.0, v: 14116 },
104
+ { t: 20210923, o: 127.5, h: 128.5, l: 124.0, c: 124.5, v: 13457 },
105
+ { t: 20210924, o: 126.5, h: 136.5, l: 126.5, c: 135.0, v: 42720 },
106
+ { t: 20210927, o: 136.5, h: 138.5, l: 134.0, c: 138.0, v: 49636 },
107
+ { t: 20210928, o: 135.0, h: 139.0, l: 132.0, c: 139.0, v: 19530 },
108
+ { t: 20210929, o: 135.0, h: 137.5, l: 134.0, c: 134.0, v: 22381 },
109
+ { t: 20210930, o: 135.0, h: 136.5, l: 133.5, c: 134.0, v: 14335 },
110
+ { t: 20211001, o: 132.0, h: 132.5, l: 121.5, c: 124.0, v: 25326 },
111
+ { t: 20211004, o: 127.0, h: 129.0, l: 120.5, c: 121.5, v: 26265 },
112
+ { t: 20211005, o: 120.0, h: 128.5, l: 115.0, c: 126.5, v: 32377 },
113
+ { t: 20211006, o: 128.0, h: 130.5, l: 123.0, c: 130.5, v: 31926 },
114
+ { t: 20211007, o: 129.5, h: 134.5, l: 129.0, c: 133.5, v: 31458 },
115
+ { t: 20211008, o: 136.0, h: 140.0, l: 130.0, c: 131.0, v: 41881 },
116
+ { t: 20211012, o: 131.0, h: 132.5, l: 128.0, c: 128.5, v: 14479 },
117
+ { t: 20211013, o: 130.5, h: 131.5, l: 119.0, c: 120.5, v: 23191 },
118
+ { t: 20211014, o: 123.5, h: 124.5, l: 116.0, c: 118.0, v: 22005 },
119
+ { t: 20211015, o: 122.0, h: 125.0, l: 120.0, c: 122.0, v: 17761 },
120
+ { t: 20211018, o: 123.0, h: 125.0, l: 121.0, c: 123.0, v: 12451 },
121
+ { t: 20211019, o: 123.0, h: 130.0, l: 123.0, c: 128.5, v: 18578 },
122
+ { t: 20211020, o: 129.5, h: 136.0, l: 128.5, c: 135.0, v: 27384 },
123
+ { t: 20211021, o: 136.0, h: 144.0, l: 135.0, c: 136.0, v: 52852 },
124
+ { t: 20211022, o: 138.0, h: 144.0, l: 137.5, c: 144.0, v: 50692 },
125
+ { t: 20211025, o: 142.0, h: 142.5, l: 138.5, c: 139.5, v: 24365 },
126
+ { t: 20211026, o: 135.0, h: 135.0, l: 126.5, c: 127.0, v: 42984 },
127
+ { t: 20211027, o: 127.0, h: 133.0, l: 124.0, c: 132.0, v: 23256 },
128
+ { t: 20211028, o: 131.0, h: 133.0, l: 129.0, c: 129.0, v: 11693 },
129
+ { t: 20211029, o: 130.5, h: 131.5, l: 126.5, c: 128.0, v: 12234 },
130
+ { t: 20211101, o: 129.0, h: 133.0, l: 129.0, c: 131.0, v: 11589 },
131
+ { t: 20211102, o: 133.5, h: 136.0, l: 126.5, c: 128.0, v: 16035 },
132
+ { t: 20211103, o: 129.5, h: 131.5, l: 126.5, c: 130.0, v: 8142 },
133
+ { t: 20211104, o: 126.0, h: 129.5, l: 125.5, c: 126.0, v: 15468 },
134
+ { t: 20211105, o: 126.5, h: 128.0, l: 123.5, c: 124.0, v: 8233 },
135
+ { t: 20211108, o: 125.5, h: 125.5, l: 120.0, c: 122.0, v: 10348 },
136
+ { t: 20211109, o: 124.5, h: 131.5, l: 124.0, c: 130.0, v: 20608 },
137
+ { t: 20211110, o: 132.0, h: 135.0, l: 130.5, c: 131.0, v: 22325 },
138
+ { t: 20211111, o: 130.0, h: 134.0, l: 129.0, c: 130.5, v: 9321 },
139
+ { t: 20211112, o: 132.5, h: 136.5, l: 131.5, c: 133.0, v: 21099 },
140
+ { t: 20211115, o: 136.0, h: 140.5, l: 134.5, c: 138.5, v: 24232 },
141
+ { t: 20211116, o: 140.5, h: 143.0, l: 135.5, c: 136.0, v: 26771 },
142
+ { t: 20211117, o: 138.5, h: 143.0, l: 136.0, c: 143.0, v: 24731 },
143
+ { t: 20211118, o: 144.0, h: 145.5, l: 138.5, c: 139.5, v: 22025 },
144
+ { t: 20211119, o: 141.0, h: 142.0, l: 135.0, c: 135.5, v: 13620 },
145
+ { t: 20211122, o: 135.0, h: 140.0, l: 134.0, c: 137.5, v: 9864 },
146
+ { t: 20211123, o: 138.5, h: 148.5, l: 137.5, c: 143.0, v: 55866 },
147
+ { t: 20211124, o: 142.0, h: 143.0, l: 134.0, c: 138.0, v: 30979 },
148
+ { t: 20211125, o: 141.5, h: 146.0, l: 139.0, c: 139.0, v: 45661 },
149
+ { t: 20211126, o: 141.0, h: 145.0, l: 137.0, c: 143.5, v: 45298 },
150
+ { t: 20211129, o: 144.0, h: 157.5, l: 139.5, c: 156.0, v: 103928 },
151
+ { t: 20211130, o: 158.0, h: 164.5, l: 155.0, c: 155.5, v: 83112 },
152
+ { t: 20211201, o: 158.0, h: 162.5, l: 156.0, c: 162.5, v: 59748 },
153
+ { t: 20211202, o: 161.0, h: 161.5, l: 151.0, c: 152.0, v: 35675 },
154
+ { t: 20211203, o: 155.0, h: 158.0, l: 152.0, c: 154.0, v: 28237 },
155
+ { t: 20211206, o: 155.0, h: 156.0, l: 149.0, c: 149.0, v: 16314 },
156
+ { t: 20211207, o: 151.0, h: 151.5, l: 143.0, c: 144.0, v: 24731 },
157
+ { t: 20211208, o: 146.5, h: 147.0, l: 141.0, c: 144.5, v: 16611 },
158
+ { t: 20211209, o: 145.5, h: 145.5, l: 141.0, c: 141.0, v: 10050 },
159
+ { t: 20211210, o: 138.5, h: 142.5, l: 137.0, c: 140.0, v: 10738 },
160
+ { t: 20211213, o: 140.0, h: 140.5, l: 137.0, c: 138.0, v: 7018 },
161
+ { t: 20211214, o: 138.0, h: 143.0, l: 138.0, c: 142.0, v: 16841 },
162
+ ];
163
+ export default data;
164
+ test("", function () { return expect(true).toBe(true); });
@@ -0,0 +1,12 @@
1
+ export declare enum Mode {
2
+ NumberToString = 1,
3
+ NumberToTimeStamp = 2,
4
+ StringToTimeStamp = 3,
5
+ TimeStampToString = 4,
6
+ TimeStampToNumber = 5,
7
+ StringToNumber = 6
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;
12
+ export default dateFormat;
@@ -0,0 +1,55 @@
1
+ export var Mode;
2
+ (function (Mode) {
3
+ Mode[Mode["NumberToString"] = 1] = "NumberToString";
4
+ Mode[Mode["NumberToTimeStamp"] = 2] = "NumberToTimeStamp";
5
+ Mode[Mode["StringToTimeStamp"] = 3] = "StringToTimeStamp";
6
+ Mode[Mode["TimeStampToString"] = 4] = "TimeStampToString";
7
+ Mode[Mode["TimeStampToNumber"] = 5] = "TimeStampToNumber";
8
+ Mode[Mode["StringToNumber"] = 6] = "StringToNumber";
9
+ })(Mode || (Mode = {}));
10
+ function dateFormat(date, mode) {
11
+ switch (mode) {
12
+ case Mode.NumberToString: {
13
+ var input = date.toString();
14
+ var res = input.slice(0, 4) + "-" + input.slice(4, 6) + "-" + input.slice(6, 8);
15
+ return res;
16
+ }
17
+ case Mode.NumberToTimeStamp: {
18
+ var input = date.toString();
19
+ var stringDate = input.slice(0, 4) + "-" + input.slice(4, 6) + "-" + input.slice(6, 8);
20
+ var res = Date.parse(stringDate);
21
+ return res;
22
+ }
23
+ case Mode.StringToTimeStamp: {
24
+ var res = Date.parse(date);
25
+ return res;
26
+ }
27
+ case Mode.TimeStampToString: {
28
+ var newDate = new Date(date);
29
+ var yy = newDate.getFullYear();
30
+ var mm = newDate.getMonth() + 1 < 10
31
+ ? "0" + (newDate.getMonth() + 1)
32
+ : newDate.getMonth() + 1;
33
+ var dd = newDate.getDate() < 10 ? "0" + newDate.getDate() : newDate.getDate();
34
+ var res = yy + "-" + mm + "-" + dd;
35
+ return res;
36
+ }
37
+ case Mode.TimeStampToNumber: {
38
+ var newDate = new Date(date);
39
+ var yy = newDate.getFullYear();
40
+ var mm = newDate.getMonth() + 1 < 10
41
+ ? "0" + (newDate.getMonth() + 1)
42
+ : newDate.getMonth() + 1;
43
+ var dd = newDate.getDate() < 10 ? "0" + newDate.getDate() : newDate.getDate();
44
+ var res = "".concat(yy).concat(mm).concat(dd);
45
+ return parseInt(res);
46
+ }
47
+ case Mode.StringToNumber: {
48
+ var res = date.toString().replace("-", "").replace("-", "");
49
+ return parseInt(res);
50
+ }
51
+ default:
52
+ return "please setting mode";
53
+ }
54
+ }
55
+ export default dateFormat;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,27 @@
1
+ import dateFormat, { Mode } from "./dateFormat";
2
+ describe("test dateFormat methods", function () {
3
+ it("test NumberToString", function () {
4
+ var res = dateFormat(20211209, Mode.NumberToString);
5
+ expect(res).toBe("2021-12-09");
6
+ });
7
+ it("test NumberToTimeStamp", function () {
8
+ var res = dateFormat(20211209, Mode.NumberToTimeStamp);
9
+ expect(res).toBe(1639008000000);
10
+ });
11
+ it("test StringToNumber", function () {
12
+ var res = dateFormat("2021-12-09", Mode.StringToNumber);
13
+ expect(res).toBe(20211209);
14
+ });
15
+ it("test StringToTimeStamp", function () {
16
+ var res = dateFormat("2021-12-09", Mode.StringToTimeStamp);
17
+ expect(res).toBe(1639008000000);
18
+ });
19
+ it("test TimeStampToNumber", function () {
20
+ var res = dateFormat(1639008000000, Mode.TimeStampToNumber);
21
+ expect(res).toBe(20211209);
22
+ });
23
+ it("test TimeStampToString", function () {
24
+ var res = dateFormat(1639008000000, Mode.TimeStampToString);
25
+ expect(res).toBe("2021-12-09");
26
+ });
27
+ });
@@ -0,0 +1,17 @@
1
+ declare type ListType = {
2
+ h: number;
3
+ t: number;
4
+ o: number;
5
+ c: number;
6
+ l: number;
7
+ }[];
8
+ export declare 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[];
17
+ export {};
@@ -0,0 +1,72 @@
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
+ function addDetail(obj, list, detail) {
13
+ if (detail)
14
+ return __assign(__assign({}, obj), { detail: list });
15
+ else
16
+ return __assign({}, obj);
17
+ }
18
+ export default function getWeekLine(list, detail) {
19
+ var res = [];
20
+ var collectWeekData = [];
21
+ list.forEach(function (item, index) {
22
+ var year = item["t"]
23
+ .toString()
24
+ .replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3");
25
+ var day = new Date(year).getDay();
26
+ switch (day) {
27
+ case 0 || 6:
28
+ break;
29
+ case 5: {
30
+ collectWeekData.push(item);
31
+ var obj = {
32
+ o: collectWeekData[0]["o"],
33
+ c: collectWeekData[collectWeekData.length - 1]["c"],
34
+ t: collectWeekData[collectWeekData.length - 1]["t"],
35
+ h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
36
+ l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
37
+ };
38
+ res.push(addDetail(obj, collectWeekData, detail));
39
+ collectWeekData = [];
40
+ break;
41
+ }
42
+ case 1:
43
+ if (collectWeekData.length !== 0) {
44
+ var obj = {
45
+ o: collectWeekData[0]["o"],
46
+ c: collectWeekData[collectWeekData.length - 1]["c"],
47
+ t: collectWeekData[collectWeekData.length - 1]["t"],
48
+ h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
49
+ l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
50
+ };
51
+ res.push(addDetail(obj, collectWeekData, detail));
52
+ }
53
+ collectWeekData = [];
54
+ collectWeekData.push(item);
55
+ break;
56
+ default:
57
+ collectWeekData.push(item);
58
+ if (list.length - 1 === index) {
59
+ var obj = {
60
+ o: collectWeekData[0]["o"],
61
+ c: collectWeekData[collectWeekData.length - 1]["c"],
62
+ t: collectWeekData[collectWeekData.length - 1]["t"],
63
+ h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
64
+ l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
65
+ };
66
+ res.push(addDetail(obj, collectWeekData, detail));
67
+ }
68
+ break;
69
+ }
70
+ });
71
+ return res;
72
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ import getWeekLine from "./getWeekLine";
2
+ import data from "../test_data.test";
3
+ describe("test getWeekLine methods", function () {
4
+ it("test getWeekLine(data, false) no detail", function () {
5
+ var weekLine = getWeekLine(data, false);
6
+ expect(weekLine[weekLine.length - 2]).toEqual({
7
+ c: 140,
8
+ h: 156,
9
+ l: 137,
10
+ o: 155,
11
+ t: 20211210,
12
+ });
13
+ });
14
+ });
@@ -0,0 +1,29 @@
1
+ declare type ListType = {
2
+ h: number;
3
+ l: number;
4
+ c: number;
5
+ }[];
6
+ declare type ResWilliams9Type = {
7
+ c: number;
8
+ williams9?: number;
9
+ }[];
10
+ declare type ResWilliams18Type = {
11
+ c: number;
12
+ williams18?: number;
13
+ }[];
14
+ declare type ResAllWilliamsType = {
15
+ c: number;
16
+ williams18?: number;
17
+ williams9?: number;
18
+ }[];
19
+ interface WilliamsType {
20
+ getWilliams9: (list: ListType) => ResWilliams9Type;
21
+ getWilliams18: (list: ListType) => ResWilliams18Type;
22
+ getAllWillams(list: ListType): ResAllWilliamsType;
23
+ }
24
+ export default class Williams implements WilliamsType {
25
+ getAllWillams(list: ListType): ResAllWilliamsType;
26
+ getWilliams9(list: ListType): ResWilliams9Type;
27
+ getWilliams18(list: ListType): ResWilliams18Type;
28
+ }
29
+ export {};
@@ -0,0 +1,75 @@
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 Williams = /** @class */ (function () {
13
+ function Williams() {
14
+ }
15
+ Object.defineProperty(Williams.prototype, "getAllWillams", {
16
+ enumerable: false,
17
+ configurable: true,
18
+ writable: true,
19
+ value: function (list) {
20
+ var res = [];
21
+ var williams9 = this.getWilliams9(list);
22
+ var williams18 = this.getWilliams18(list);
23
+ for (var i = 0; i < list.length; i++) {
24
+ res[i] = Object.assign(list[i], williams9[i], williams18[i]);
25
+ }
26
+ return res;
27
+ }
28
+ });
29
+ Object.defineProperty(Williams.prototype, "getWilliams9", {
30
+ enumerable: false,
31
+ configurable: true,
32
+ writable: true,
33
+ value: function (list) {
34
+ var res = [];
35
+ for (var i = 0; i < list.length; i++) {
36
+ if (i < 9)
37
+ res[i] = __assign(__assign({}, list[i]), { williams9: undefined });
38
+ else {
39
+ var maxList = list.slice(i - 8, i).map(function (item) { return item["h"]; });
40
+ var minList = list.slice(i - 8, i).map(function (item) { return item["l"]; });
41
+ var max = Math.max.apply(Math, maxList);
42
+ var min = Math.min.apply(Math, minList);
43
+ var close_1 = list[i]["c"];
44
+ var williams9 = ((max - close_1) / (max - min)) * -100;
45
+ res[i] = __assign(__assign({}, list[i]), { williams9: Math.round(williams9 * 100) / 100 });
46
+ }
47
+ }
48
+ return res;
49
+ }
50
+ });
51
+ Object.defineProperty(Williams.prototype, "getWilliams18", {
52
+ enumerable: false,
53
+ configurable: true,
54
+ writable: true,
55
+ value: function (list) {
56
+ var res = [];
57
+ for (var i = 0; i < list.length; i++) {
58
+ if (i < 18)
59
+ res[i] = __assign(__assign({}, list[i]), { williams9: undefined });
60
+ else {
61
+ var maxList = list.slice(i - 17, i).map(function (item) { return item["h"]; });
62
+ var minList = list.slice(i - 17, i).map(function (item) { return item["l"]; });
63
+ var max = Math.max.apply(Math, maxList);
64
+ var min = Math.min.apply(Math, minList);
65
+ var close_2 = list[i]["c"];
66
+ var williams18 = ((max - close_2) / (max - min)) * -100;
67
+ res[i] = __assign(__assign({}, list[i]), { williams18: Math.round(williams18 * 100) / 100 });
68
+ }
69
+ }
70
+ return res;
71
+ }
72
+ });
73
+ return Williams;
74
+ }());
75
+ export default Williams;
@@ -0,0 +1 @@
1
+ export {};