@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,77 @@
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 Williams = /** @class */ (function () {
15
+ function Williams() {
16
+ }
17
+ Object.defineProperty(Williams.prototype, "getAllWillams", {
18
+ enumerable: false,
19
+ configurable: true,
20
+ writable: true,
21
+ value: function (list) {
22
+ var res = [];
23
+ var williams9 = this.getWilliams9(list);
24
+ var williams18 = this.getWilliams18(list);
25
+ for (var i = 0; i < list.length; i++) {
26
+ res[i] = Object.assign(list[i], williams9[i], williams18[i]);
27
+ }
28
+ return res;
29
+ }
30
+ });
31
+ Object.defineProperty(Williams.prototype, "getWilliams9", {
32
+ enumerable: false,
33
+ configurable: true,
34
+ writable: true,
35
+ value: function (list) {
36
+ var res = [];
37
+ for (var i = 0; i < list.length; i++) {
38
+ if (i < 9)
39
+ res[i] = __assign(__assign({}, list[i]), { williams9: undefined });
40
+ else {
41
+ var maxList = list.slice(i - 8, i).map(function (item) { return item["h"]; });
42
+ var minList = list.slice(i - 8, i).map(function (item) { return item["l"]; });
43
+ var max = Math.max.apply(Math, maxList);
44
+ var min = Math.min.apply(Math, minList);
45
+ var close_1 = list[i]["c"];
46
+ var williams9 = ((max - close_1) / (max - min)) * -100;
47
+ res[i] = __assign(__assign({}, list[i]), { williams9: Math.round(williams9 * 100) / 100 });
48
+ }
49
+ }
50
+ return res;
51
+ }
52
+ });
53
+ Object.defineProperty(Williams.prototype, "getWilliams18", {
54
+ enumerable: false,
55
+ configurable: true,
56
+ writable: true,
57
+ value: function (list) {
58
+ var res = [];
59
+ for (var i = 0; i < list.length; i++) {
60
+ if (i < 18)
61
+ res[i] = __assign(__assign({}, list[i]), { williams9: undefined });
62
+ else {
63
+ var maxList = list.slice(i - 17, i).map(function (item) { return item["h"]; });
64
+ var minList = list.slice(i - 17, i).map(function (item) { return item["l"]; });
65
+ var max = Math.max.apply(Math, maxList);
66
+ var min = Math.min.apply(Math, minList);
67
+ var close_2 = list[i]["c"];
68
+ var williams18 = ((max - close_2) / (max - min)) * -100;
69
+ res[i] = __assign(__assign({}, list[i]), { williams18: Math.round(williams18 * 100) / 100 });
70
+ }
71
+ }
72
+ return res;
73
+ }
74
+ });
75
+ return Williams;
76
+ }());
77
+ exports.default = Williams;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var williams_1 = require("./williams");
4
+ var test_data_test_1 = require("./test_data.test");
5
+ describe("test williams methods", function () {
6
+ it("test getWilliams9()", function () {
7
+ var williams = new williams_1.default();
8
+ expect(williams.getWilliams9(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
+ williams9: -79.59,
16
+ });
17
+ });
18
+ it("test getWilliams18()", function () {
19
+ var williams = new williams_1.default();
20
+ expect(williams.getWilliams18(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
+ williams18: -73.77,
28
+ });
29
+ });
30
+ it("test getAllWillams()", function () {
31
+ var williams = new williams_1.default();
32
+ expect(williams.getAllWillams(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
+ williams9: -79.59,
40
+ williams18: -73.77,
41
+ });
42
+ });
43
+ });
@@ -0,0 +1 @@
1
+ export declare function add(a: number, b: number): number;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.add = void 0;
4
+ function add(a, b) {
5
+ return a + b;
6
+ }
7
+ exports.add = add;
@@ -0,0 +1 @@
1
+ export declare function minus(a: number, b: number): number;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.minus = void 0;
4
+ function minus(a, b) {
5
+ return a - b;
6
+ }
7
+ exports.minus = minus;
@@ -0,0 +1,15 @@
1
+ export declare type setStartMonthInYearType = {
2
+ January: unknown;
3
+ February: unknown;
4
+ March: unknown;
5
+ April: unknown;
6
+ May: unknown;
7
+ June: unknown;
8
+ July: unknown;
9
+ August: unknown;
10
+ September: unknown;
11
+ October: unknown;
12
+ November: unknown;
13
+ December: unknown;
14
+ };
15
+ export declare function setStartMonthInYear(startMonth: number): string[];
@@ -0,0 +1,20 @@
1
+ export function setStartMonthInYear(startMonth) {
2
+ var base = [
3
+ "January",
4
+ "February",
5
+ "March",
6
+ "April",
7
+ "May",
8
+ "June",
9
+ "July",
10
+ "August",
11
+ "September",
12
+ "October",
13
+ "November",
14
+ "December",
15
+ ];
16
+ var end = base.slice(0, startMonth - 1);
17
+ var start = base.slice(startMonth - 1);
18
+ var response = start.concat(end);
19
+ return response;
20
+ }
@@ -0,0 +1,12 @@
1
+ declare type RegressionResponseType = {
2
+ description: string;
3
+ predictModel: (xValue: number) => number;
4
+ explained: string;
5
+ };
6
+ /**
7
+ * xArray = independent
8
+ * yArray = dependent
9
+ * response: Y = b0 + b1X
10
+ */
11
+ export default function simpleRegressionModel(xArray: number[], yArray: number[]): RegressionResponseType;
12
+ export {};
@@ -0,0 +1,76 @@
1
+ function average(arr) {
2
+ var total = arr.reduce(function (prev, curr) { return prev + curr; });
3
+ var xBar = total / arr.length;
4
+ return xBar;
5
+ }
6
+ function calcB1(_a) {
7
+ var xBar = _a.xBar, yBar = _a.yBar, xArray = _a.xArray, yArray = _a.yArray;
8
+ var i = 0;
9
+ var denominator = 0;
10
+ var numerator = 0;
11
+ while (i < xArray.length) {
12
+ denominator += (xArray[i] - xBar) * (yArray[i] - yBar);
13
+ numerator += Math.pow(xArray[i] - xBar, 2);
14
+ i++;
15
+ }
16
+ return denominator / numerator;
17
+ }
18
+ function calcB0(_a) {
19
+ var xBar = _a.xBar, yBar = _a.yBar, b1 = _a.b1;
20
+ return yBar - b1 * xBar;
21
+ }
22
+ function calcSSR(_a) {
23
+ var yBar = _a.yBar, predictRegressionModel = _a.predictRegressionModel, xArray = _a.xArray;
24
+ var Sum = xArray.reduce(function (prev, curr) {
25
+ return prev + Math.pow(predictRegressionModel(curr) - yBar, 2);
26
+ }, 0);
27
+ return Sum;
28
+ }
29
+ function calcSSE(_a) {
30
+ var predictRegressionModel = _a.predictRegressionModel, yArray = _a.yArray, xArray = _a.xArray;
31
+ var Sum = 0;
32
+ for (var i = 0; i < xArray.length; i++) {
33
+ var X = xArray[i];
34
+ var Y = yArray[i];
35
+ Sum += Math.pow(Y - predictRegressionModel(X), 2);
36
+ }
37
+ return Sum;
38
+ }
39
+ /**
40
+ * xArray = independent
41
+ * yArray = dependent
42
+ * response: Y = b0 + b1X
43
+ */
44
+ export default function simpleRegressionModel(xArray, yArray) {
45
+ if (xArray.length !== yArray.length)
46
+ return {
47
+ description: "xArray length is different about yArray length",
48
+ predictModel: function () { return NaN; },
49
+ explained: "0%",
50
+ };
51
+ var xBar = average(xArray);
52
+ var yBar = average(yArray);
53
+ var b1 = calcB1({ xBar: xBar, yBar: yBar, xArray: xArray, yArray: yArray });
54
+ var b0 = calcB0({ xBar: xBar, yBar: yBar, b1: b1 });
55
+ var predictRegressionModel = function (xValue) {
56
+ return b0 + b1 * xValue;
57
+ };
58
+ var SSR = calcSSR({
59
+ yBar: yBar,
60
+ predictRegressionModel: predictRegressionModel,
61
+ xArray: xArray,
62
+ });
63
+ var SSE = calcSSE({
64
+ predictRegressionModel: predictRegressionModel,
65
+ yArray: yArray,
66
+ xArray: xArray,
67
+ });
68
+ var SST = SSR + SSE;
69
+ var rPower = (SSR / SST) * 100 + "%";
70
+ var response = {
71
+ description: "Y=".concat(b0, "+").concat(b1, "X"),
72
+ predictModel: predictRegressionModel,
73
+ explained: rPower,
74
+ };
75
+ return response;
76
+ }
@@ -0,0 +1,14 @@
1
+ import simpleRegressoinModel from "./simpleRegressoinModel";
2
+ describe("test simple regressoin model methods", function () {
3
+ it("test example", function () {
4
+ var a = [3, 4, 6, 4, 2, 5];
5
+ var b = [6, 8, 9, 5, 4.5, 9.5];
6
+ var res = simpleRegressoinModel(a, b);
7
+ expect(res).toEqual({
8
+ description: "Y=2+1.25X",
9
+ explained: "69.44444444444444%",
10
+ predictModel: expect.any(Function),
11
+ });
12
+ expect((res === null || res === void 0 ? void 0 : res.predictModel) && res.predictModel(6)).toBe(9.5);
13
+ });
14
+ });
@@ -0,0 +1,7 @@
1
+ export declare function movingAverages(arr: number[], periods: number): number[];
2
+ export declare function weightMovingAverages(arr: number[], periods: number[]): number[];
3
+ declare type ExponentialSmoothingOptions = {
4
+ initialForecast: number;
5
+ };
6
+ export declare function exponentialSmoothing(arr: number[], alpha: number, options?: Partial<ExponentialSmoothingOptions>): number[];
7
+ export {};
@@ -0,0 +1,33 @@
1
+ export function movingAverages(arr, periods) {
2
+ var response = new Array(periods).fill(0);
3
+ for (var i = periods; i < arr.length; i++) {
4
+ var Sum = 0;
5
+ for (var e = 1; e <= periods; e++) {
6
+ Sum += arr[i - e];
7
+ }
8
+ response.push(Sum / periods);
9
+ }
10
+ return response;
11
+ }
12
+ export function weightMovingAverages(arr, periods) {
13
+ var response = new Array(periods.length).fill(0);
14
+ var weightSum = periods.reduce(function (pre, curr) { return pre + curr; });
15
+ for (var i = periods.length - 1; i < arr.length; i++) {
16
+ var Sum = 0;
17
+ for (var e = 0; e < periods.length; e++) {
18
+ Sum += arr[i - e] * periods[e];
19
+ }
20
+ response.push(Sum / weightSum);
21
+ }
22
+ return response;
23
+ }
24
+ export function exponentialSmoothing(arr, alpha, options) {
25
+ var PreviousForecast = (options === null || options === void 0 ? void 0 : options.initialForecast) || arr[0];
26
+ var forecasts = [PreviousForecast];
27
+ for (var i = 1; i <= arr.length; i++) {
28
+ var Sum = PreviousForecast + alpha * (arr[i - 1] - PreviousForecast);
29
+ PreviousForecast = Sum;
30
+ forecasts.push(Sum);
31
+ }
32
+ return forecasts;
33
+ }
@@ -0,0 +1,2 @@
1
+ import { setStartMonthInYearType } from "../../Month/index.js";
2
+ export declare function calcSeasonalIndicesNoTrend(monthData: number[], annualEstimate: number, startMonth?: number): setStartMonthInYearType | "data length fail";
@@ -0,0 +1,27 @@
1
+ import { setStartMonthInYear, } from "../../Month/index.js";
2
+ export function calcSeasonalIndicesNoTrend(monthData, annualEstimate, startMonth) {
3
+ if (startMonth === void 0) { startMonth = 1; }
4
+ // error
5
+ if (monthData.length % 12 !== 0)
6
+ return "data length fail";
7
+ // calc
8
+ var loop = monthData.length / 12;
9
+ var SumArr = [];
10
+ while (SumArr.length < 12) {
11
+ var Sum = 0;
12
+ for (var i = 0; i < loop; i++) {
13
+ Sum += monthData[i * 12 + SumArr.length];
14
+ }
15
+ SumArr.push(Sum / loop);
16
+ }
17
+ var SumAverage = SumArr.reduce(function (pre, curr) { return pre + curr; }) / 12;
18
+ var seasonalIndexal = SumArr.map(function (sum) { return sum / SumAverage; });
19
+ // create Map
20
+ var perMonth = annualEstimate / 12;
21
+ var months = setStartMonthInYear(startMonth);
22
+ var nextYearForecast = {};
23
+ months.forEach(function (month, index) {
24
+ nextYearForecast[month] = perMonth * seasonalIndexal[index];
25
+ });
26
+ return nextYearForecast;
27
+ }
@@ -0,0 +1,12 @@
1
+ export { default as simpleRegressionModel } from "./analyze/Regression/simpleRegressoinModel.js";
2
+ export { movingAverages, weightMovingAverages, exponentialSmoothing, } from "./analyze/TimeSeries/R/index.js";
3
+ export { calcSeasonalIndicesNoTrend } from "./analyze/TimeSeries/RS/index.js";
4
+ export { add } from "./test/add.js";
5
+ export { minus } from "./test/minus.js";
6
+ export { default as Ma } from "./stockSkills/ma.js";
7
+ export { default as Macd } from "./stockSkills/macd.js";
8
+ export { default as Rsi } from "./stockSkills/rsi.js";
9
+ export { default as Williams } from "./stockSkills/williams.js";
10
+ export { default as Gold } from "./stockSkills/gold.js";
11
+ export { default as dateFormat } from "./stockSkills/utils/dateFormat.js";
12
+ export { default as getWeekLine } from "./stockSkills/utils/getWeekLine.js";
@@ -0,0 +1,17 @@
1
+ /*
2
+ 請注意,在 src/index.ts 中,我的導入包含文件擴展名(.js)。
3
+ 如果需要支持 Node.js 和構建工具(ex: webpack),則不需要這樣做。 **因為commonJs默認js副檔名**
4
+ 但如果要支持 ES 模塊的瀏覽器 ,則需要文件擴展名(.js)。
5
+ */
6
+ export { default as simpleRegressionModel } from "./analyze/Regression/simpleRegressoinModel.js";
7
+ export { movingAverages, weightMovingAverages, exponentialSmoothing, } from "./analyze/TimeSeries/R/index.js";
8
+ export { calcSeasonalIndicesNoTrend } from "./analyze/TimeSeries/RS/index.js";
9
+ export { add } from "./test/add.js";
10
+ export { minus } from "./test/minus.js";
11
+ export { default as Ma } from "./stockSkills/ma.js";
12
+ export { default as Macd } from "./stockSkills/macd.js";
13
+ export { default as Rsi } from "./stockSkills/rsi.js";
14
+ export { default as Williams } from "./stockSkills/williams.js";
15
+ export { default as Gold } from "./stockSkills/gold.js";
16
+ export { default as dateFormat } from "./stockSkills/utils/dateFormat.js";
17
+ export { default as getWeekLine } from "./stockSkills/utils/getWeekLine.js";
@@ -0,0 +1,47 @@
1
+ declare type ResGoldType = {
2
+ highestPointDate: number;
3
+ lowestPointDate: number;
4
+ lowestPoint: number;
5
+ highestPoint: number;
6
+ superStrong: number;
7
+ strong: number;
8
+ middle: number;
9
+ weak: number;
10
+ superWeak: number;
11
+ };
12
+ declare type ListType = {
13
+ h: number;
14
+ t: number;
15
+ o: number;
16
+ c: number;
17
+ l: number;
18
+ }[];
19
+ declare type ResHightestType = {
20
+ [key: string]: {
21
+ h: number;
22
+ t: number;
23
+ o: number;
24
+ c: number;
25
+ l: number;
26
+ };
27
+ };
28
+ declare type ResLowestType = {
29
+ [key: string]: {
30
+ h: number;
31
+ t: number;
32
+ o: number;
33
+ c: number;
34
+ l: number;
35
+ };
36
+ };
37
+ interface GoldType {
38
+ findHighPoint: (list: ListType) => ResHightestType;
39
+ findLowPoint: (list: ListType) => ResLowestType;
40
+ getGold: (list: ListType) => ResGoldType;
41
+ }
42
+ export default class Gold implements GoldType {
43
+ findHighPoint(list: ListType): ResHightestType;
44
+ findLowPoint(list: ListType): ResLowestType;
45
+ getGold(list: ListType): ResGoldType;
46
+ }
47
+ export {};
@@ -0,0 +1,214 @@
1
+ import getWeekLine from "./utils/getWeekLine.js";
2
+ var Gold = /** @class */ (function () {
3
+ function Gold() {
4
+ }
5
+ Object.defineProperty(Gold.prototype, "findHighPoint", {
6
+ enumerable: false,
7
+ configurable: true,
8
+ writable: true,
9
+ value: function (list) {
10
+ var weekLine = getWeekLine(list, true);
11
+ var hightPoints = {};
12
+ var _loop_1 = function (i) {
13
+ var hightPoint = undefined;
14
+ switch (i) {
15
+ case 0:
16
+ {
17
+ var h1 = weekLine[i].h;
18
+ var h2 = weekLine[i + 1].h;
19
+ var h3 = weekLine[i + 2].h;
20
+ if (h1 > h2 && h1 > h3)
21
+ hightPoint = weekLine[i];
22
+ }
23
+ break;
24
+ case 1:
25
+ {
26
+ var h1 = weekLine[i - 1].h;
27
+ var h2 = weekLine[i].h;
28
+ var h3 = weekLine[i + 1].h;
29
+ var h4 = weekLine[i + 2].h;
30
+ if (h2 > h1 && h2 > h3 && h2 > h4)
31
+ hightPoint = weekLine[i];
32
+ }
33
+ break;
34
+ case weekLine.length - 3:
35
+ {
36
+ var h1 = weekLine[i - 2].h;
37
+ var h2 = weekLine[i - 1].h;
38
+ var h3 = weekLine[i].h;
39
+ var h4 = weekLine[i + 1].h;
40
+ var h5 = weekLine[i + 2].h;
41
+ if (h3 > h1 && h3 > h2 && h3 > h4 && h3 > h5)
42
+ hightPoint = weekLine[i];
43
+ }
44
+ break;
45
+ case weekLine.length - 2:
46
+ {
47
+ var h1 = weekLine[i - 2].h;
48
+ var h2 = weekLine[i - 1].h;
49
+ var h3 = weekLine[i].h;
50
+ var h4 = weekLine[i + 1].h;
51
+ if (h3 > h1 && h3 > h2 && h3 > h4)
52
+ hightPoint = weekLine[i];
53
+ }
54
+ break;
55
+ case weekLine.length - 1:
56
+ {
57
+ var h1 = weekLine[i - 2].h;
58
+ var h2 = weekLine[i - 1].h;
59
+ var h3 = weekLine[i].h;
60
+ if (h3 > h2 && h3 > h1)
61
+ hightPoint = weekLine[i];
62
+ }
63
+ break;
64
+ default:
65
+ {
66
+ var h1 = weekLine[i - 2].h;
67
+ var h2 = weekLine[i - 1].h;
68
+ var h3 = weekLine[i].h;
69
+ var h4 = weekLine[i + 1].h;
70
+ var h5 = weekLine[i + 2].h;
71
+ var h6 = weekLine[i + 3].h;
72
+ if (h3 > h2 && h3 > h4 && h3 > h5 && h3 > h6)
73
+ hightPoint = weekLine[i];
74
+ if (h3 > h1 && h3 > h2 && h3 > h4 && h3 > h5)
75
+ hightPoint = weekLine[i];
76
+ }
77
+ break;
78
+ }
79
+ if (hightPoint && hightPoint["detail"]) {
80
+ var h_1 = hightPoint.h;
81
+ var theHight = hightPoint.detail.find(function (item) { return item.h === h_1; });
82
+ delete hightPoint.detail;
83
+ if (theHight)
84
+ hightPoints[theHight === null || theHight === void 0 ? void 0 : theHight.t] = theHight;
85
+ }
86
+ };
87
+ for (var i = 0; i < weekLine.length; i++) {
88
+ _loop_1(i);
89
+ }
90
+ return hightPoints;
91
+ }
92
+ });
93
+ Object.defineProperty(Gold.prototype, "findLowPoint", {
94
+ enumerable: false,
95
+ configurable: true,
96
+ writable: true,
97
+ value: function (list) {
98
+ var weekLine = getWeekLine(list, true);
99
+ var lowPoints = {};
100
+ var _loop_2 = function (i) {
101
+ var lowPoint = undefined;
102
+ switch (i) {
103
+ case 0:
104
+ {
105
+ var l1 = weekLine[i].l;
106
+ var l2 = weekLine[i + 1].l;
107
+ var l3 = weekLine[i + 2].l;
108
+ if (l1 < l2 && l1 < l3)
109
+ lowPoint = weekLine[i];
110
+ }
111
+ break;
112
+ case 1:
113
+ {
114
+ var l1 = weekLine[i - 1].l;
115
+ var l2 = weekLine[i].l;
116
+ var l3 = weekLine[i + 1].l;
117
+ var l4 = weekLine[i + 2].l;
118
+ if (l2 < l1 && l2 < l3 && l2 < l4)
119
+ lowPoint = weekLine[i];
120
+ }
121
+ break;
122
+ case weekLine.length - 3:
123
+ {
124
+ var l1 = weekLine[i - 2].l;
125
+ var l2 = weekLine[i - 1].l;
126
+ var l3 = weekLine[i].l;
127
+ var l4 = weekLine[i + 1].l;
128
+ var l5 = weekLine[i + 2].l;
129
+ if (l3 < l1 && l3 < l2 && l3 < l4 && l3 < l5)
130
+ lowPoint = weekLine[i];
131
+ }
132
+ break;
133
+ case weekLine.length - 2:
134
+ {
135
+ var l1 = weekLine[i - 2].l;
136
+ var l2 = weekLine[i - 1].l;
137
+ var l3 = weekLine[i].l;
138
+ var l4 = weekLine[i + 1].l;
139
+ if (l3 < l1 && l3 < l2 && l3 < l4)
140
+ lowPoint = weekLine[i];
141
+ }
142
+ break;
143
+ case weekLine.length - 1:
144
+ {
145
+ var l1 = weekLine[i - 2].l;
146
+ var l2 = weekLine[i - 1].l;
147
+ var l3 = weekLine[i].l;
148
+ if (l3 < l2 && l3 < l1)
149
+ lowPoint = weekLine[i];
150
+ }
151
+ break;
152
+ default:
153
+ {
154
+ var l1 = weekLine[i - 2].l;
155
+ var l2 = weekLine[i - 1].l;
156
+ var l3 = weekLine[i].l;
157
+ var l4 = weekLine[i + 1].l;
158
+ var l5 = weekLine[i + 2].l;
159
+ var l6 = weekLine[i + 3].l;
160
+ if (l3 < l2 && l3 < l4 && l3 < l5 && l3 < l6)
161
+ lowPoint = weekLine[i];
162
+ if (l3 < l1 && l3 < l2 && l3 < l4 && l3 < l5)
163
+ lowPoint = weekLine[i];
164
+ }
165
+ break;
166
+ }
167
+ if (lowPoint && lowPoint["detail"]) {
168
+ var l_1 = lowPoint.l;
169
+ var theLow = lowPoint.detail.find(function (item) { return item.l === l_1; });
170
+ delete lowPoint.detail;
171
+ if (theLow)
172
+ lowPoints[theLow === null || theLow === void 0 ? void 0 : theLow.t] = theLow;
173
+ }
174
+ };
175
+ for (var i = 0; i < weekLine.length; i++) {
176
+ _loop_2(i);
177
+ }
178
+ return lowPoints;
179
+ }
180
+ });
181
+ Object.defineProperty(Gold.prototype, "getGold", {
182
+ enumerable: false,
183
+ configurable: true,
184
+ writable: true,
185
+ value: function (list) {
186
+ var hightPoints = this.findHighPoint(list);
187
+ var lowPoints = this.findLowPoint(list);
188
+ var lastHightPointDate = Object.keys(hightPoints).slice(-1)[0] !==
189
+ list[list.length - 1].t.toString()
190
+ ? Object.keys(hightPoints).slice(-1)[0]
191
+ : Object.keys(hightPoints).slice(-2)[0];
192
+ var lastLowPointDate = Object.keys(lowPoints).slice(-1)[0] !== list[list.length - 1].t.toString()
193
+ ? Object.keys(lowPoints).slice(-1)[0]
194
+ : Object.keys(lowPoints).slice(-2)[0];
195
+ var highestPoint = hightPoints[lastHightPointDate].h;
196
+ var lowestPoint = lowPoints[lastLowPointDate].l;
197
+ var res = {
198
+ highestPointDate: parseInt(lastHightPointDate),
199
+ lowestPointDate: parseInt(lastLowPointDate),
200
+ lowestPoint: lowestPoint,
201
+ highestPoint: highestPoint,
202
+ superStrong: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.191) * 100) / 100,
203
+ strong: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.382) * 100) / 100,
204
+ middle: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.5) * 100) /
205
+ 100,
206
+ weak: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.618) * 100) / 100,
207
+ superWeak: Math.round((highestPoint - (highestPoint - lowestPoint) * 0.809) * 100) / 100,
208
+ };
209
+ return res;
210
+ }
211
+ });
212
+ return Gold;
213
+ }());
214
+ export default Gold;
@@ -0,0 +1 @@
1
+ export {};