@ch20026103/anysis 0.0.3-alpha → 0.0.5-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 (60) 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 +2 -0
  8. package/dist/cjs/index.js +5 -1
  9. package/dist/cjs/stockSkills/ema.d.ts +9 -0
  10. package/dist/cjs/stockSkills/ema.js +41 -0
  11. package/dist/cjs/stockSkills/ema.test.d.ts +1 -0
  12. package/dist/cjs/stockSkills/ema.test.js +11 -0
  13. package/dist/cjs/stockSkills/gold.d.ts +4 -4
  14. package/dist/cjs/stockSkills/kd.d.ts +31 -4
  15. package/dist/cjs/stockSkills/kd.js +58 -4
  16. package/dist/cjs/stockSkills/kd.test.js +34 -2
  17. package/dist/cjs/stockSkills/ma.d.ts +38 -9
  18. package/dist/cjs/stockSkills/ma.js +28 -1
  19. package/dist/cjs/stockSkills/ma.test.js +12 -0
  20. package/dist/cjs/stockSkills/macd.d.ts +52 -6
  21. package/dist/cjs/stockSkills/macd.js +87 -0
  22. package/dist/cjs/stockSkills/macd.test.js +24 -0
  23. package/dist/cjs/stockSkills/obv.d.ts +44 -0
  24. package/dist/cjs/stockSkills/obv.js +89 -0
  25. package/dist/cjs/stockSkills/obv.test.d.ts +1 -0
  26. package/dist/cjs/stockSkills/obv.test.js +20 -0
  27. package/dist/cjs/stockSkills/rsi.d.ts +4 -4
  28. package/dist/cjs/stockSkills/utils/getWeekLine.d.ts +2 -2
  29. package/dist/cjs/stockSkills/williams.d.ts +4 -4
  30. package/dist/esm/analyze/Month/index.d.ts +1 -1
  31. package/dist/esm/analyze/Month/index.test.d.ts +1 -0
  32. package/dist/esm/analyze/Month/index.test.js +20 -0
  33. package/dist/esm/analyze/Regression/simpleRegressoinModel.d.ts +1 -1
  34. package/dist/esm/analyze/Slope/slope.test.js +6 -0
  35. package/dist/esm/analyze/TimeSeries/R/index.d.ts +1 -1
  36. package/dist/esm/index.d.ts +2 -0
  37. package/dist/esm/index.js +2 -0
  38. package/dist/esm/stockSkills/ema.d.ts +9 -0
  39. package/dist/esm/stockSkills/ema.js +39 -0
  40. package/dist/esm/stockSkills/ema.test.d.ts +1 -0
  41. package/dist/esm/stockSkills/ema.test.js +9 -0
  42. package/dist/esm/stockSkills/gold.d.ts +4 -4
  43. package/dist/esm/stockSkills/kd.d.ts +31 -4
  44. package/dist/esm/stockSkills/kd.js +58 -4
  45. package/dist/esm/stockSkills/kd.test.js +34 -2
  46. package/dist/esm/stockSkills/ma.d.ts +38 -9
  47. package/dist/esm/stockSkills/ma.js +28 -1
  48. package/dist/esm/stockSkills/ma.test.js +12 -0
  49. package/dist/esm/stockSkills/macd.d.ts +52 -6
  50. package/dist/esm/stockSkills/macd.js +87 -0
  51. package/dist/esm/stockSkills/macd.test.js +24 -0
  52. package/dist/esm/stockSkills/obv.d.ts +44 -0
  53. package/dist/esm/stockSkills/obv.js +87 -0
  54. package/dist/esm/stockSkills/obv.test.d.ts +1 -0
  55. package/dist/esm/stockSkills/obv.test.js +18 -0
  56. package/dist/esm/stockSkills/rsi.d.ts +4 -4
  57. package/dist/esm/stockSkills/utils/getWeekLine.d.ts +2 -2
  58. package/dist/esm/stockSkills/williams.d.ts +4 -4
  59. package/dist/umd/index.js +349 -53
  60. package/package.json +15 -17
@@ -14,6 +14,93 @@ Object.defineProperty(exports, "__esModule", { value: true });
14
14
  var MACD = /** @class */ (function () {
15
15
  function MACD() {
16
16
  }
17
+ Object.defineProperty(MACD.prototype, "init", {
18
+ enumerable: false,
19
+ configurable: true,
20
+ writable: true,
21
+ value: function (data) {
22
+ return {
23
+ dataset: [data],
24
+ ema12: undefined,
25
+ ema26: undefined,
26
+ dif: [],
27
+ macd: undefined,
28
+ osc: undefined,
29
+ };
30
+ }
31
+ });
32
+ Object.defineProperty(MACD.prototype, "next", {
33
+ enumerable: false,
34
+ configurable: true,
35
+ writable: true,
36
+ value: function (data, preList) {
37
+ var _a, _b;
38
+ preList.dataset.push(data);
39
+ if (preList.dataset.length > 34)
40
+ preList.dataset.shift();
41
+ // EMA12
42
+ var ema12 = undefined;
43
+ if (preList.dataset.length === 12) {
44
+ ema12 = this.getStartEMA(preList.dataset);
45
+ ema12 = (ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
46
+ ema12 = Math.round(ema12 * 100) / 100;
47
+ }
48
+ else if (preList.dataset.length > 12 && preList.ema12) {
49
+ ema12 = (preList.ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
50
+ ema12 = Math.round(ema12 * 100) / 100;
51
+ }
52
+ // EMA26
53
+ var ema26 = undefined;
54
+ if (preList.dataset.length === 26) {
55
+ ema26 = this.getStartEMA(preList.dataset);
56
+ ema26 = (ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
57
+ ema26 = Math.round(ema26 * 100) / 100;
58
+ }
59
+ else if (preList.dataset.length > 26 && preList.ema26) {
60
+ ema26 = (preList.ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
61
+ ema26 = Math.round(ema26 * 100) / 100;
62
+ }
63
+ // DIF
64
+ var dif = undefined;
65
+ if (ema12 && ema26) {
66
+ dif = ema12 - ema26;
67
+ dif = Math.round(dif * 100) / 100;
68
+ (_a = preList.dif) === null || _a === void 0 ? void 0 : _a.push(dif);
69
+ if (preList.dif.length > 9)
70
+ (_b = preList.dif) === null || _b === void 0 ? void 0 : _b.shift();
71
+ }
72
+ // MACD & OSC
73
+ var macd = undefined;
74
+ var osc = undefined;
75
+ if (preList.dif.length === 9) {
76
+ if (preList.macd === undefined) {
77
+ macd = preList.dif.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
78
+ for (var i = 0; i < 9; i++) {
79
+ var item = preList.dif[i];
80
+ macd = macd + ((item - macd) * 2) / 10;
81
+ macd = Math.round(macd * 100) / 100;
82
+ osc = item - macd;
83
+ osc = Math.round(osc * 100) / 100;
84
+ }
85
+ }
86
+ else {
87
+ macd = preList.macd + ((dif - preList.macd) * 2) / 10;
88
+ macd = Math.round(macd * 100) / 100;
89
+ var item = preList.dif[preList.dif.length - 1];
90
+ osc = item - macd;
91
+ osc = Math.round(osc * 100) / 100;
92
+ }
93
+ }
94
+ return {
95
+ dataset: preList.dataset,
96
+ ema12: ema12,
97
+ ema26: ema26,
98
+ dif: preList.dif,
99
+ macd: macd,
100
+ osc: osc,
101
+ };
102
+ }
103
+ });
17
104
  Object.defineProperty(MACD.prototype, "getMACD", {
18
105
  enumerable: false,
19
106
  configurable: true,
@@ -3,6 +3,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var macd_1 = require("./macd");
4
4
  var test_data_test_1 = require("./test_data.test");
5
5
  describe("test macd methods", function () {
6
+ it("test init & next", function () {
7
+ var _a, _b;
8
+ var index = test_data_test_1.default.length - 1;
9
+ var macd = new macd_1.default();
10
+ var init = macd.init(test_data_test_1.default[0]);
11
+ var res = init;
12
+ for (var i = 1; i <= index; i++) {
13
+ var item = test_data_test_1.default[i];
14
+ res = macd.next(item, res);
15
+ }
16
+ expect({
17
+ ema12: 144.02,
18
+ ema26: 142.23,
19
+ dif: 1.79,
20
+ macd: 3.46,
21
+ osc: -1.67,
22
+ }).toEqual({
23
+ ema12: res.ema12,
24
+ ema26: res.ema26,
25
+ dif: (_a = res.dif) === null || _a === void 0 ? void 0 : _a[((_b = res.dif) === null || _b === void 0 ? void 0 : _b.length) - 1],
26
+ macd: res.macd,
27
+ osc: res.osc,
28
+ });
29
+ });
6
30
  it("test getEMA12()", function () {
7
31
  var macd = new macd_1.default();
8
32
  expect(macd.getEMA12(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
@@ -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,89 @@
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
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
15
+ if (ar || !(i in from)) {
16
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
17
+ ar[i] = from[i];
18
+ }
19
+ }
20
+ return to.concat(ar || Array.prototype.slice.call(from));
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ var Obv = /** @class */ (function () {
24
+ function Obv() {
25
+ }
26
+ Object.defineProperty(Obv.prototype, "init", {
27
+ enumerable: false,
28
+ configurable: true,
29
+ writable: true,
30
+ value: function (data) {
31
+ return {
32
+ dataset: [data],
33
+ obv: data.v,
34
+ preClose: data.c,
35
+ };
36
+ }
37
+ });
38
+ Object.defineProperty(Obv.prototype, "next", {
39
+ enumerable: false,
40
+ configurable: true,
41
+ writable: true,
42
+ value: function (data, preList) {
43
+ var currentVolume = data.v;
44
+ var currentClose = data.c;
45
+ // obv
46
+ var obv = preList.obv;
47
+ if (currentClose > preList.preClose) {
48
+ obv += currentVolume;
49
+ }
50
+ else if (currentClose < preList.preClose) {
51
+ obv -= currentVolume;
52
+ }
53
+ return {
54
+ dataset: __spreadArray(__spreadArray([], preList.dataset, true), [data], false),
55
+ obv: obv,
56
+ preClose: currentClose,
57
+ };
58
+ }
59
+ });
60
+ Object.defineProperty(Obv.prototype, "getObv", {
61
+ enumerable: false,
62
+ configurable: true,
63
+ writable: true,
64
+ value: function (list) {
65
+ var res = [];
66
+ var obv = 0;
67
+ for (var i = 0; i < list.length; i++) {
68
+ var currentVolume = list[i].v;
69
+ var currentClose = list[i].c;
70
+ if (i > 0) {
71
+ // obv
72
+ if (currentClose > list[i - 1].c) {
73
+ obv += currentVolume;
74
+ }
75
+ else if (currentClose < list[i - 1].c) {
76
+ obv -= currentVolume;
77
+ }
78
+ }
79
+ else {
80
+ obv = currentVolume;
81
+ }
82
+ res[i] = __assign(__assign({}, list[i]), { obv: obv });
83
+ }
84
+ return res;
85
+ }
86
+ });
87
+ return Obv;
88
+ }());
89
+ exports.default = Obv;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var obv_1 = require("./obv");
4
+ var test_data_test_1 = require("./test_data.test");
5
+ describe("test obv methods", function () {
6
+ it("test init", function () {
7
+ var obv = new obv_1.default();
8
+ var init = obv.init(test_data_test_1.data_9904[0]);
9
+ var res = init;
10
+ for (var i = 1; i < test_data_test_1.data_9904.length; i++) {
11
+ var item = test_data_test_1.data_9904[i];
12
+ res = obv.next(item, res);
13
+ }
14
+ expect(res.obv).toEqual(504538);
15
+ });
16
+ it("test getObv()", function () {
17
+ var kd = new obv_1.default();
18
+ expect(kd.getObv(test_data_test_1.data_9904)[test_data_test_1.data_9904.length - 1].obv).toEqual(504538);
19
+ });
20
+ });
@@ -1,15 +1,15 @@
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
6
  rsi6?: number;
7
7
  }[];
8
- declare type ResRsi12Type = {
8
+ type ResRsi12Type = {
9
9
  c: number;
10
10
  rsi12?: number;
11
11
  }[];
12
- declare type ResAllRsiType = {
12
+ type ResAllRsiType = {
13
13
  c: number;
14
14
  rsi6?: number;
15
15
  rsi12?: number;
@@ -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,17 +1,17 @@
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
8
  williams9?: number;
9
9
  }[];
10
- declare type ResWilliams18Type = {
10
+ type ResWilliams18Type = {
11
11
  c: number;
12
12
  williams18?: number;
13
13
  }[];
14
- declare type ResAllWilliamsType = {
14
+ type ResAllWilliamsType = {
15
15
  c: number;
16
16
  williams18?: number;
17
17
  williams9?: number;
@@ -1,4 +1,4 @@
1
- export declare type setStartMonthInYearType = {
1
+ export type setStartMonthInYearType = {
2
2
  January: unknown;
3
3
  February: unknown;
4
4
  March: unknown;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ import { setStartMonthInYear } from "./index";
2
+ describe("test setStartMonthInYear", function () {
3
+ it("test 3", function () {
4
+ var res = setStartMonthInYear(3);
5
+ expect(res).toEqual([
6
+ "March",
7
+ "April",
8
+ "May",
9
+ "June",
10
+ "July",
11
+ "August",
12
+ "September",
13
+ "October",
14
+ "November",
15
+ "December",
16
+ "January",
17
+ "February",
18
+ ]);
19
+ });
20
+ });
@@ -1,4 +1,4 @@
1
- declare type RegressionResponseType = {
1
+ type RegressionResponseType = {
2
2
  description: string;
3
3
  predictModel: (xValue: number) => number;
4
4
  explained: string;
@@ -24,4 +24,10 @@ describe("test Slope methods", function () {
24
24
  var slope = Slope(x, y);
25
25
  expect(slope).toEqual(0);
26
26
  });
27
+ it("test 1,4,6,8,10,12", function () {
28
+ var x = [1, 2, 3, 4, 5, 6];
29
+ var y = [1, 4, 6, 8, 10, 12];
30
+ var slope = Slope(x, y);
31
+ expect(slope).toEqual(2.142857142857143);
32
+ });
27
33
  });
@@ -1,6 +1,6 @@
1
1
  export declare function movingAverages(arr: number[], periods: number): number[];
2
2
  export declare function weightMovingAverages(arr: number[], periods: number[]): number[];
3
- declare type ExponentialSmoothingOptions = {
3
+ type ExponentialSmoothingOptions = {
4
4
  initialForecast: number;
5
5
  };
6
6
  export declare function exponentialSmoothing(arr: number[], alpha: number, options?: Partial<ExponentialSmoothingOptions>): number[];
@@ -7,6 +7,8 @@ export { default as Kd } from "./stockSkills/kd.js";
7
7
  export { default as Ma } from "./stockSkills/ma.js";
8
8
  export { default as Macd } from "./stockSkills/macd.js";
9
9
  export { default as Rsi } from "./stockSkills/rsi.js";
10
+ export { default as Obv } from "./stockSkills/obv.js";
11
+ export { default as Ema } from "./stockSkills/ema.js";
10
12
  export { default as dateFormat } from "./stockSkills/utils/dateFormat.js";
11
13
  export { default as getWeekLine } from "./stockSkills/utils/getWeekLine.js";
12
14
  export { default as Williams } from "./stockSkills/williams.js";
package/dist/esm/index.js CHANGED
@@ -12,6 +12,8 @@ export { default as Kd } from "./stockSkills/kd.js";
12
12
  export { default as Ma } from "./stockSkills/ma.js";
13
13
  export { default as Macd } from "./stockSkills/macd.js";
14
14
  export { default as Rsi } from "./stockSkills/rsi.js";
15
+ export { default as Obv } from "./stockSkills/obv.js";
16
+ export { default as Ema } from "./stockSkills/ema.js";
15
17
  export { default as dateFormat } from "./stockSkills/utils/dateFormat.js";
16
18
  export { default as getWeekLine } from "./stockSkills/utils/getWeekLine.js";
17
19
  export { default as Williams } from "./stockSkills/williams.js";
@@ -0,0 +1,9 @@
1
+ interface EmaType {
2
+ getStartEma: (list: number[], period: number) => number;
3
+ getEma: (list: number[], period: number) => (number | undefined)[];
4
+ }
5
+ export default class Ema implements EmaType {
6
+ getStartEma(list: number[], period: number): number;
7
+ getEma(list: number[], period: number): (number | undefined)[];
8
+ }
9
+ export {};
@@ -0,0 +1,39 @@
1
+ var Ema = /** @class */ (function () {
2
+ function Ema() {
3
+ }
4
+ Object.defineProperty(Ema.prototype, "getStartEma", {
5
+ enumerable: false,
6
+ configurable: true,
7
+ writable: true,
8
+ value: function (list, period) {
9
+ if (list.length < period)
10
+ throw new Error("list.length < period");
11
+ var sum = 0;
12
+ for (var i = 0; i < period; i++) {
13
+ sum += list[i];
14
+ }
15
+ var initialEMA = sum / period;
16
+ return initialEMA;
17
+ }
18
+ });
19
+ Object.defineProperty(Ema.prototype, "getEma", {
20
+ enumerable: false,
21
+ configurable: true,
22
+ writable: true,
23
+ value: function (list, period) {
24
+ var res = [];
25
+ var ema = this.getStartEma(list.slice(0, period), period);
26
+ for (var i = 0; i < list.length; i++) {
27
+ if (i < period) {
28
+ res.push(undefined);
29
+ continue;
30
+ }
31
+ ema = (list[i] * 2 + (period - 1) * ema) / (period + 1);
32
+ res.push(ema);
33
+ }
34
+ return res;
35
+ }
36
+ });
37
+ return Ema;
38
+ }());
39
+ export default Ema;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import Ema from "./ema";
2
+ import data from "./test_data.test";
3
+ describe("test ema methods", function () {
4
+ it("test getEma5()", function () {
5
+ var ema = new Ema();
6
+ var res = ema.getEma(data.map(function (item) { return item.c; }), 5);
7
+ expect(res[data.length - 1]).toEqual(141.83482746491333);
8
+ });
9
+ });
@@ -1,4 +1,4 @@
1
- declare type ResGoldType = {
1
+ type ResGoldType = {
2
2
  highestPointDate: number;
3
3
  lowestPointDate: number;
4
4
  lowestPoint: number;
@@ -9,14 +9,14 @@ declare type ResGoldType = {
9
9
  weak: number;
10
10
  superWeak: number;
11
11
  };
12
- declare type ListType = {
12
+ type ListType = {
13
13
  h: number;
14
14
  t: number;
15
15
  o: number;
16
16
  c: number;
17
17
  l: number;
18
18
  }[];
19
- declare type ResHightestType = {
19
+ type ResHightestType = {
20
20
  [key: string]: {
21
21
  h: number;
22
22
  t: number;
@@ -25,7 +25,7 @@ declare type ResHightestType = {
25
25
  l: number;
26
26
  };
27
27
  };
28
- declare type ResLowestType = {
28
+ type ResLowestType = {
29
29
  [key: string]: {
30
30
  h: number;
31
31
  t: number;
@@ -2,16 +2,17 @@ interface KdType {
2
2
  getRSV: (list: ListType) => ResRSV;
3
3
  getKD: (list: ListType) => ResKD;
4
4
  }
5
- declare type ListType = {
5
+ type DataType = {
6
6
  c: number;
7
7
  h: number;
8
8
  l: number;
9
- }[];
10
- declare type ResRSV = {
9
+ };
10
+ type ListType = DataType[];
11
+ type ResRSV = {
11
12
  c: number;
12
13
  rsv?: number;
13
14
  }[];
14
- declare type ResKD = {
15
+ type ResKD = {
15
16
  c: number;
16
17
  rsv?: number;
17
18
  k?: number;
@@ -19,6 +20,32 @@ declare type ResKD = {
19
20
  "k-d"?: number;
20
21
  }[];
21
22
  export default class Kd implements KdType {
23
+ init(data: DataType): {
24
+ dataset: ListType;
25
+ rsv?: number;
26
+ k?: number;
27
+ d?: number;
28
+ "k-d"?: number;
29
+ };
30
+ next(data: DataType, preList: {
31
+ dataset: ListType;
32
+ rsv?: number;
33
+ k?: number;
34
+ d?: number;
35
+ "k-d"?: number;
36
+ }, type: number): {
37
+ dataset: ListType;
38
+ rsv: undefined;
39
+ k: undefined;
40
+ d: undefined;
41
+ "k-d": undefined;
42
+ } | {
43
+ dataset: ListType;
44
+ rsv: number;
45
+ k: number;
46
+ d: number;
47
+ "k-d": number;
48
+ };
22
49
  getRSV(list: ListType): ({
23
50
  rsv: undefined;
24
51
  c: number;
@@ -12,6 +12,60 @@ var __assign = (this && this.__assign) || function () {
12
12
  var Kd = /** @class */ (function () {
13
13
  function Kd() {
14
14
  }
15
+ Object.defineProperty(Kd.prototype, "init", {
16
+ enumerable: false,
17
+ configurable: true,
18
+ writable: true,
19
+ value: function (data) {
20
+ return {
21
+ dataset: [data],
22
+ rsv: undefined,
23
+ k: undefined,
24
+ d: undefined,
25
+ "k-d": undefined,
26
+ };
27
+ }
28
+ });
29
+ Object.defineProperty(Kd.prototype, "next", {
30
+ enumerable: false,
31
+ configurable: true,
32
+ writable: true,
33
+ value: function (data, preList, type) {
34
+ preList.dataset.push(data);
35
+ if (preList.dataset.length < type) {
36
+ return {
37
+ dataset: preList.dataset,
38
+ rsv: undefined,
39
+ k: undefined,
40
+ d: undefined,
41
+ "k-d": undefined,
42
+ };
43
+ }
44
+ else {
45
+ if (preList.dataset.length > type) {
46
+ preList.dataset.shift();
47
+ }
48
+ var low = Math.min.apply(Math, preList.dataset.map(function (item) { return item.l; }));
49
+ var hight = Math.max.apply(Math, preList.dataset.map(function (item) { return item.h; }));
50
+ var close_1 = data.c;
51
+ var rsv = ((close_1 - low) / (hight - low)) * 100;
52
+ rsv = Math.round(rsv * 100) / 100;
53
+ var k = (2 / 3) * (preList.k ? preList.k : 50) + (1 / 3) * rsv;
54
+ var d = (2 / 3) * (preList.d ? preList.d : 50) + (1 / 3) * k;
55
+ var k_d = k - d;
56
+ k = Math.round(k * 100) / 100;
57
+ d = Math.round(d * 100) / 100;
58
+ k_d = Math.round(k_d * 100) / 100;
59
+ return {
60
+ dataset: preList.dataset,
61
+ rsv: rsv,
62
+ k: k,
63
+ d: d,
64
+ "k-d": k_d,
65
+ };
66
+ }
67
+ }
68
+ });
15
69
  Object.defineProperty(Kd.prototype, "getRSV", {
16
70
  enumerable: false,
17
71
  configurable: true,
@@ -24,8 +78,8 @@ var Kd = /** @class */ (function () {
24
78
  else {
25
79
  var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
26
80
  var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
27
- var close_1 = list[i].c;
28
- var rsv = ((close_1 - low) / (hight - low)) * 100;
81
+ var close_2 = list[i].c;
82
+ var rsv = ((close_2 - low) / (hight - low)) * 100;
29
83
  rsv = Math.round(rsv * 100) / 100;
30
84
  res[i] = __assign(__assign({}, list[i]), { rsv: rsv });
31
85
  }
@@ -47,8 +101,8 @@ var Kd = /** @class */ (function () {
47
101
  else {
48
102
  var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
49
103
  var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
50
- var close_2 = list[i].c;
51
- var rsv = ((close_2 - low) / (hight - low)) * 100;
104
+ var close_3 = list[i].c;
105
+ var rsv = ((close_3 - low) / (hight - low)) * 100;
52
106
  rsv = Math.round(rsv * 100) / 100;
53
107
  var k = (2 / 3) * yesterdayK + (1 / 3) * rsv;
54
108
  var d = (2 / 3) * yesterdayD + (1 / 3) * k;