@ch20026103/anysis 0.0.2 → 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 (72) hide show
  1. package/dist/cjs/analyze/Month/index.d.ts +1 -1
  2. package/dist/cjs/analyze/Month/index.test.d.ts +1 -0
  3. package/dist/cjs/analyze/Month/index.test.js +22 -0
  4. package/dist/cjs/analyze/Regression/simpleRegressoinModel.d.ts +1 -1
  5. package/dist/cjs/analyze/Slope/index.d.ts +1 -0
  6. package/dist/cjs/analyze/Slope/index.js +13 -0
  7. package/dist/cjs/analyze/Slope/slope.test.d.ts +1 -0
  8. package/dist/cjs/analyze/Slope/slope.test.js +35 -0
  9. package/dist/cjs/analyze/TimeSeries/R/index.d.ts +1 -1
  10. package/dist/cjs/index.d.ts +9 -5
  11. package/dist/cjs/index.js +23 -15
  12. package/dist/cjs/stockSkills/ema.d.ts +9 -0
  13. package/dist/cjs/stockSkills/ema.js +41 -0
  14. package/dist/cjs/stockSkills/ema.test.d.ts +1 -0
  15. package/dist/cjs/stockSkills/ema.test.js +11 -0
  16. package/dist/cjs/stockSkills/gold.d.ts +4 -4
  17. package/dist/cjs/stockSkills/kd.d.ts +78 -0
  18. package/dist/cjs/stockSkills/kd.js +125 -0
  19. package/dist/cjs/stockSkills/kd.test.d.ts +1 -0
  20. package/dist/cjs/stockSkills/kd.test.js +65 -0
  21. package/dist/cjs/stockSkills/ma.d.ts +49 -7
  22. package/dist/cjs/stockSkills/ma.js +69 -1
  23. package/dist/cjs/stockSkills/ma.test.js +41 -4
  24. package/dist/cjs/stockSkills/macd.d.ts +52 -6
  25. package/dist/cjs/stockSkills/macd.js +87 -0
  26. package/dist/cjs/stockSkills/macd.test.js +24 -0
  27. package/dist/cjs/stockSkills/obv.d.ts +44 -0
  28. package/dist/cjs/stockSkills/obv.js +89 -0
  29. package/dist/cjs/stockSkills/obv.test.d.ts +1 -0
  30. package/dist/cjs/stockSkills/obv.test.js +20 -0
  31. package/dist/cjs/stockSkills/rsi.d.ts +4 -4
  32. package/dist/cjs/stockSkills/test_data.test.d.ts +8 -0
  33. package/dist/cjs/stockSkills/test_data.test.js +626 -0
  34. package/dist/cjs/stockSkills/utils/getWeekLine.d.ts +2 -2
  35. package/dist/cjs/stockSkills/williams.d.ts +4 -4
  36. package/dist/esm/analyze/Month/index.d.ts +1 -1
  37. package/dist/esm/analyze/Month/index.test.d.ts +1 -0
  38. package/dist/esm/analyze/Month/index.test.js +20 -0
  39. package/dist/esm/analyze/Regression/simpleRegressoinModel.d.ts +1 -1
  40. package/dist/esm/analyze/Slope/index.d.ts +1 -0
  41. package/dist/esm/analyze/Slope/index.js +10 -0
  42. package/dist/esm/analyze/Slope/slope.test.d.ts +1 -0
  43. package/dist/esm/analyze/Slope/slope.test.js +33 -0
  44. package/dist/esm/analyze/TimeSeries/R/index.d.ts +1 -1
  45. package/dist/esm/index.d.ts +9 -5
  46. package/dist/esm/index.js +9 -5
  47. package/dist/esm/stockSkills/ema.d.ts +9 -0
  48. package/dist/esm/stockSkills/ema.js +39 -0
  49. package/dist/esm/stockSkills/ema.test.d.ts +1 -0
  50. package/dist/esm/stockSkills/ema.test.js +9 -0
  51. package/dist/esm/stockSkills/gold.d.ts +4 -4
  52. package/dist/esm/stockSkills/kd.d.ts +78 -0
  53. package/dist/esm/stockSkills/kd.js +123 -0
  54. package/dist/esm/stockSkills/kd.test.d.ts +1 -0
  55. package/dist/esm/stockSkills/kd.test.js +63 -0
  56. package/dist/esm/stockSkills/ma.d.ts +49 -7
  57. package/dist/esm/stockSkills/ma.js +69 -1
  58. package/dist/esm/stockSkills/ma.test.js +41 -4
  59. package/dist/esm/stockSkills/macd.d.ts +52 -6
  60. package/dist/esm/stockSkills/macd.js +87 -0
  61. package/dist/esm/stockSkills/macd.test.js +24 -0
  62. package/dist/esm/stockSkills/obv.d.ts +44 -0
  63. package/dist/esm/stockSkills/obv.js +87 -0
  64. package/dist/esm/stockSkills/obv.test.d.ts +1 -0
  65. package/dist/esm/stockSkills/obv.test.js +18 -0
  66. package/dist/esm/stockSkills/rsi.d.ts +4 -4
  67. package/dist/esm/stockSkills/test_data.test.d.ts +8 -0
  68. package/dist/esm/stockSkills/test_data.test.js +625 -0
  69. package/dist/esm/stockSkills/utils/getWeekLine.d.ts +2 -2
  70. package/dist/esm/stockSkills/williams.d.ts +4 -4
  71. package/dist/umd/index.js +901 -482
  72. package/package.json +15 -17
@@ -14,6 +14,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
14
14
  var Ma = /** @class */ (function () {
15
15
  function Ma() {
16
16
  }
17
+ Object.defineProperty(Ma.prototype, "init", {
18
+ enumerable: false,
19
+ configurable: true,
20
+ writable: true,
21
+ value: function (data, type) {
22
+ return { dataset: [data], ma: 0, type: type };
23
+ }
24
+ });
25
+ Object.defineProperty(Ma.prototype, "next", {
26
+ enumerable: false,
27
+ configurable: true,
28
+ writable: true,
29
+ value: function (data, preList, type) {
30
+ preList.dataset.push(data);
31
+ if (preList.dataset.length < type) {
32
+ return { dataset: preList.dataset, ma: 0, type: type };
33
+ }
34
+ else {
35
+ if (preList.dataset.length > type) {
36
+ preList.dataset.shift();
37
+ }
38
+ var sum = preList.dataset.reduce(function (pre, current) { return pre + current.c; }, 0);
39
+ var ma = Math.round((sum / type) * 100) / 100;
40
+ return { dataset: preList.dataset, ma: ma, type: type };
41
+ }
42
+ }
43
+ });
17
44
  Object.defineProperty(Ma.prototype, "getAllMa", {
18
45
  enumerable: false,
19
46
  configurable: true,
@@ -23,9 +50,10 @@ var Ma = /** @class */ (function () {
23
50
  var responseMa5 = this.getMa5(list);
24
51
  var responseMa10 = this.getMa10(list);
25
52
  var responseMa20 = this.getMa20(list);
53
+ var responseMa60 = this.getMa60(list);
26
54
  var responseBoll = this.getBoll(list);
27
55
  for (var i = 0; i < list.length; i++) {
28
- res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseBoll[i]);
56
+ res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseMa60[i], responseBoll[i]);
29
57
  }
30
58
  return res;
31
59
  }
@@ -90,6 +118,46 @@ var Ma = /** @class */ (function () {
90
118
  return res;
91
119
  }
92
120
  });
121
+ Object.defineProperty(Ma.prototype, "getMa60", {
122
+ enumerable: false,
123
+ configurable: true,
124
+ writable: true,
125
+ value: function (list) {
126
+ var res = [];
127
+ for (var i = 0; i < list.length; i++) {
128
+ if (i < 59)
129
+ res[i] = __assign(__assign({}, list[i]), { ma60: undefined });
130
+ else {
131
+ var sum = list
132
+ .slice(i - 59, i + 1)
133
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
134
+ var ma60 = Math.round((sum / 60) * 100) / 100;
135
+ res[i] = __assign(__assign({}, list[i]), { ma60: ma60 });
136
+ }
137
+ }
138
+ return res;
139
+ }
140
+ });
141
+ Object.defineProperty(Ma.prototype, "getMaSelf", {
142
+ enumerable: false,
143
+ configurable: true,
144
+ writable: true,
145
+ value: function (list, self) {
146
+ var res = [];
147
+ for (var i = 0; i < list.length; i++) {
148
+ if (i < self - 1)
149
+ res[i] = __assign(__assign({}, list[i]), { maSelf: undefined });
150
+ else {
151
+ var sum = list
152
+ .slice(i - (self - 1), i + 1)
153
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
154
+ var maSelf = Math.round((sum / self) * 100) / 100;
155
+ res[i] = __assign(__assign({}, list[i]), { maSelf: maSelf });
156
+ }
157
+ }
158
+ return res;
159
+ }
160
+ });
93
161
  Object.defineProperty(Ma.prototype, "getBoll", {
94
162
  enumerable: false,
95
163
  configurable: true,
@@ -3,6 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var ma_1 = require("./ma");
4
4
  var test_data_test_1 = require("./test_data.test");
5
5
  describe("test ma methods", function () {
6
+ it("test init & next", function () {
7
+ var index = test_data_test_1.default.length - 1;
8
+ var ma = new ma_1.default();
9
+ var realData = ma.getMa5(test_data_test_1.default)[index];
10
+ var init = ma.init(test_data_test_1.default[0], 5);
11
+ var res = init;
12
+ for (var i = 1; i <= index; i++) {
13
+ var item = test_data_test_1.default[i];
14
+ res = ma.next(item, res, 5);
15
+ }
16
+ expect(realData.ma5).toEqual(res.ma);
17
+ });
6
18
  it("test getMa5()", function () {
7
19
  var ma = new ma_1.default();
8
20
  expect(ma.getMa5(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
@@ -39,6 +51,30 @@ describe("test ma methods", function () {
39
51
  ma20: 144.88,
40
52
  });
41
53
  });
54
+ it("test getMa60()", function () {
55
+ var ma = new ma_1.default();
56
+ expect(ma.getMa60(test_data_test_1.default)[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
+ ma60: 134.86,
64
+ });
65
+ });
66
+ it("test getMaSelf()", function () {
67
+ var ma = new ma_1.default();
68
+ expect(ma.getMaSelf(test_data_test_1.default, 20)[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
+ maSelf: 144.88,
76
+ });
77
+ });
42
78
  it("test getBoll()", function () {
43
79
  var ma = new ma_1.default();
44
80
  expect(ma.getBoll(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
@@ -56,18 +92,19 @@ describe("test ma methods", function () {
56
92
  it("test getAllMa()", function () {
57
93
  var ma = new ma_1.default();
58
94
  expect(ma.getAllMa(test_data_test_1.default)[test_data_test_1.default.length - 1]).toEqual({
59
- c: 142,
60
- o: 138,
61
95
  t: 20211214,
62
- v: 16841,
96
+ o: 138,
63
97
  h: 143,
64
98
  l: 138,
99
+ c: 142,
100
+ v: 16841,
65
101
  ma5: 141.1,
66
102
  ma10: 146.7,
67
103
  ma20: 144.88,
104
+ ma60: 134.86,
68
105
  ma25: 142.66,
69
- bollLb: 126.69999999999999,
70
106
  bollUb: 158.62,
107
+ bollLb: 126.69999999999999,
71
108
  });
72
109
  });
73
110
  });
@@ -1,34 +1,34 @@
1
- declare type ItemType = {
1
+ type ItemType = {
2
2
  h: number;
3
3
  l: number;
4
4
  c: number;
5
5
  };
6
- declare type ResEMA12Type = {
6
+ type ResEMA12Type = {
7
7
  h: number;
8
8
  l: number;
9
9
  c: number;
10
10
  EMA12?: number;
11
11
  }[];
12
- declare type ResEMA26Type = {
12
+ type ResEMA26Type = {
13
13
  h: number;
14
14
  l: number;
15
15
  c: number;
16
16
  EMA26?: number;
17
17
  }[];
18
- declare type ResDifType = {
18
+ type ResDifType = {
19
19
  h: number;
20
20
  l: number;
21
21
  c: number;
22
22
  DIF?: number;
23
23
  }[];
24
- declare type ResMacd9Type = {
24
+ type ResMacd9Type = {
25
25
  h: number;
26
26
  l: number;
27
27
  c: number;
28
28
  MACD9?: number;
29
29
  OSC?: number;
30
30
  }[];
31
- declare type ResAllMacdType = {
31
+ type ResAllMacdType = {
32
32
  h: number;
33
33
  l: number;
34
34
  c: number;
@@ -39,6 +39,29 @@ declare type ResAllMacdType = {
39
39
  OSC?: number;
40
40
  }[];
41
41
  interface MacdType {
42
+ init: (data: ItemType) => {
43
+ dataset: ItemType[];
44
+ ema12?: number;
45
+ ema26?: number;
46
+ dif: number[];
47
+ macd?: number;
48
+ osc?: number;
49
+ };
50
+ next: (data: ItemType, preList: {
51
+ dataset: ItemType[];
52
+ ema12?: number;
53
+ ema26?: number;
54
+ dif: number[];
55
+ macd?: number;
56
+ osc?: number;
57
+ }) => {
58
+ dataset: ItemType[];
59
+ ema12?: number;
60
+ ema26?: number;
61
+ dif: number[];
62
+ macd?: number;
63
+ osc?: number;
64
+ };
42
65
  getMACD: (list: ItemType[]) => ResAllMacdType;
43
66
  getDI: (item: ItemType) => number;
44
67
  getStartEMA: (list: ItemType[]) => number;
@@ -48,6 +71,29 @@ interface MacdType {
48
71
  getMACD9: (list: ItemType[], DIF: ResDifType) => ResMacd9Type;
49
72
  }
50
73
  export default class MACD implements MacdType {
74
+ init(data: ItemType): {
75
+ dataset: ItemType[];
76
+ ema12?: number;
77
+ ema26?: number;
78
+ dif: number[];
79
+ macd?: number;
80
+ osc?: number;
81
+ };
82
+ next(data: ItemType, preList: {
83
+ dataset: ItemType[];
84
+ ema12?: number;
85
+ ema26?: number;
86
+ dif: number[];
87
+ macd?: number;
88
+ osc?: number;
89
+ }): {
90
+ dataset: ItemType[];
91
+ ema12: number | undefined;
92
+ ema26: number | undefined;
93
+ dif: number[];
94
+ macd: number | undefined;
95
+ osc: number | undefined;
96
+ };
51
97
  getMACD(list: ItemType[]): ResAllMacdType;
52
98
  getDI(item: ItemType): number;
53
99
  getStartEMA(arr: ItemType[]): number;
@@ -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;
@@ -7,3 +7,11 @@ declare const data: {
7
7
  v: number;
8
8
  }[];
9
9
  export default data;
10
+ export declare const data_9904: {
11
+ o: number;
12
+ l: number;
13
+ h: number;
14
+ c: number;
15
+ v: number;
16
+ t: number;
17
+ }[];