@ch20026103/anysis 0.0.2-alpha → 0.0.2-beta
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.
- package/dist/cjs/index.d.ts +6 -5
- package/dist/cjs/index.js +12 -10
- package/dist/cjs/stockSkills/kd.d.ts +50 -0
- package/dist/cjs/stockSkills/kd.js +76 -0
- package/dist/cjs/stockSkills/kd.test.d.ts +1 -0
- package/dist/cjs/stockSkills/kd.test.js +33 -0
- package/dist/esm/index.d.ts +6 -5
- package/dist/esm/index.js +6 -5
- package/dist/esm/stockSkills/kd.d.ts +50 -0
- package/dist/esm/stockSkills/kd.js +74 -0
- package/dist/esm/stockSkills/kd.test.d.ts +1 -0
- package/dist/esm/stockSkills/kd.test.js +31 -0
- package/dist/umd/index.js +611 -536
- package/package.json +1 -1
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export { default as simpleRegressionModel } from "./analyze/Regression/simpleRegressoinModel.js";
|
|
2
|
-
export { movingAverages, weightMovingAverages,
|
|
2
|
+
export { exponentialSmoothing, movingAverages, weightMovingAverages, } from "./analyze/TimeSeries/R/index.js";
|
|
3
3
|
export { calcSeasonalIndicesNoTrend } from "./analyze/TimeSeries/RS/index.js";
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
4
|
+
export { default as Gold } from "./stockSkills/gold.js";
|
|
5
|
+
export { default as Kd } from "./stockSkills/kd.js";
|
|
6
6
|
export { default as Ma } from "./stockSkills/ma.js";
|
|
7
7
|
export { default as Macd } from "./stockSkills/macd.js";
|
|
8
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
9
|
export { default as dateFormat } from "./stockSkills/utils/dateFormat.js";
|
|
12
10
|
export { default as getWeekLine } from "./stockSkills/utils/getWeekLine.js";
|
|
11
|
+
export { default as Williams } from "./stockSkills/williams.js";
|
|
12
|
+
export { add } from "./test/add.js";
|
|
13
|
+
export { minus } from "./test/minus.js";
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.minus = exports.add = exports.Williams = exports.getWeekLine = exports.dateFormat = exports.Rsi = exports.Macd = exports.Ma = exports.Kd = exports.Gold = exports.calcSeasonalIndicesNoTrend = exports.weightMovingAverages = exports.movingAverages = exports.exponentialSmoothing = exports.simpleRegressionModel = void 0;
|
|
4
4
|
/*
|
|
5
5
|
請注意,在 src/index.ts 中,我的導入包含文件擴展名(.js)。
|
|
6
6
|
如果需要支持 Node.js 和構建工具(ex: webpack),則不需要這樣做。 **因為commonJs默認js副檔名**
|
|
@@ -9,26 +9,28 @@ exports.getWeekLine = exports.dateFormat = exports.Gold = exports.Williams = exp
|
|
|
9
9
|
var simpleRegressoinModel_js_1 = require("./analyze/Regression/simpleRegressoinModel.js");
|
|
10
10
|
Object.defineProperty(exports, "simpleRegressionModel", { enumerable: true, get: function () { return simpleRegressoinModel_js_1.default; } });
|
|
11
11
|
var index_js_1 = require("./analyze/TimeSeries/R/index.js");
|
|
12
|
+
Object.defineProperty(exports, "exponentialSmoothing", { enumerable: true, get: function () { return index_js_1.exponentialSmoothing; } });
|
|
12
13
|
Object.defineProperty(exports, "movingAverages", { enumerable: true, get: function () { return index_js_1.movingAverages; } });
|
|
13
14
|
Object.defineProperty(exports, "weightMovingAverages", { enumerable: true, get: function () { return index_js_1.weightMovingAverages; } });
|
|
14
|
-
Object.defineProperty(exports, "exponentialSmoothing", { enumerable: true, get: function () { return index_js_1.exponentialSmoothing; } });
|
|
15
15
|
var index_js_2 = require("./analyze/TimeSeries/RS/index.js");
|
|
16
16
|
Object.defineProperty(exports, "calcSeasonalIndicesNoTrend", { enumerable: true, get: function () { return index_js_2.calcSeasonalIndicesNoTrend; } });
|
|
17
|
-
var
|
|
18
|
-
Object.defineProperty(exports, "
|
|
19
|
-
var
|
|
20
|
-
Object.defineProperty(exports, "
|
|
17
|
+
var gold_js_1 = require("./stockSkills/gold.js");
|
|
18
|
+
Object.defineProperty(exports, "Gold", { enumerable: true, get: function () { return gold_js_1.default; } });
|
|
19
|
+
var kd_js_1 = require("./stockSkills/kd.js");
|
|
20
|
+
Object.defineProperty(exports, "Kd", { enumerable: true, get: function () { return kd_js_1.default; } });
|
|
21
21
|
var ma_js_1 = require("./stockSkills/ma.js");
|
|
22
22
|
Object.defineProperty(exports, "Ma", { enumerable: true, get: function () { return ma_js_1.default; } });
|
|
23
23
|
var macd_js_1 = require("./stockSkills/macd.js");
|
|
24
24
|
Object.defineProperty(exports, "Macd", { enumerable: true, get: function () { return macd_js_1.default; } });
|
|
25
25
|
var rsi_js_1 = require("./stockSkills/rsi.js");
|
|
26
26
|
Object.defineProperty(exports, "Rsi", { enumerable: true, get: function () { return rsi_js_1.default; } });
|
|
27
|
-
var williams_js_1 = require("./stockSkills/williams.js");
|
|
28
|
-
Object.defineProperty(exports, "Williams", { enumerable: true, get: function () { return williams_js_1.default; } });
|
|
29
|
-
var gold_js_1 = require("./stockSkills/gold.js");
|
|
30
|
-
Object.defineProperty(exports, "Gold", { enumerable: true, get: function () { return gold_js_1.default; } });
|
|
31
27
|
var dateFormat_js_1 = require("./stockSkills/utils/dateFormat.js");
|
|
32
28
|
Object.defineProperty(exports, "dateFormat", { enumerable: true, get: function () { return dateFormat_js_1.default; } });
|
|
33
29
|
var getWeekLine_js_1 = require("./stockSkills/utils/getWeekLine.js");
|
|
34
30
|
Object.defineProperty(exports, "getWeekLine", { enumerable: true, get: function () { return getWeekLine_js_1.default; } });
|
|
31
|
+
var williams_js_1 = require("./stockSkills/williams.js");
|
|
32
|
+
Object.defineProperty(exports, "Williams", { enumerable: true, get: function () { return williams_js_1.default; } });
|
|
33
|
+
var add_js_1 = require("./test/add.js");
|
|
34
|
+
Object.defineProperty(exports, "add", { enumerable: true, get: function () { return add_js_1.add; } });
|
|
35
|
+
var minus_js_1 = require("./test/minus.js");
|
|
36
|
+
Object.defineProperty(exports, "minus", { enumerable: true, get: function () { return minus_js_1.minus; } });
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
interface KdType {
|
|
2
|
+
getRSV: (list: ListType) => ResRSV;
|
|
3
|
+
getKD: (list: ListType) => ResKD;
|
|
4
|
+
}
|
|
5
|
+
declare type ListType = {
|
|
6
|
+
c: number;
|
|
7
|
+
h: number;
|
|
8
|
+
l: number;
|
|
9
|
+
}[];
|
|
10
|
+
declare type ResRSV = {
|
|
11
|
+
c: number;
|
|
12
|
+
rsv?: number;
|
|
13
|
+
}[];
|
|
14
|
+
declare type ResKD = {
|
|
15
|
+
c: number;
|
|
16
|
+
rsv?: number;
|
|
17
|
+
k?: number;
|
|
18
|
+
d?: number;
|
|
19
|
+
j?: number;
|
|
20
|
+
}[];
|
|
21
|
+
export default class Kd implements KdType {
|
|
22
|
+
getRSV(list: ListType): ({
|
|
23
|
+
rsv: undefined;
|
|
24
|
+
c: number;
|
|
25
|
+
h: number;
|
|
26
|
+
l: number;
|
|
27
|
+
} | {
|
|
28
|
+
rsv: number;
|
|
29
|
+
c: number;
|
|
30
|
+
h: number;
|
|
31
|
+
l: number;
|
|
32
|
+
})[];
|
|
33
|
+
getKD(list: ListType): ({
|
|
34
|
+
rsv: undefined;
|
|
35
|
+
k: undefined;
|
|
36
|
+
d: undefined;
|
|
37
|
+
c: number;
|
|
38
|
+
h: number;
|
|
39
|
+
l: number;
|
|
40
|
+
} | {
|
|
41
|
+
rsv: number;
|
|
42
|
+
k: number;
|
|
43
|
+
d: number;
|
|
44
|
+
j: number;
|
|
45
|
+
c: number;
|
|
46
|
+
h: number;
|
|
47
|
+
l: number;
|
|
48
|
+
})[];
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
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 Kd = /** @class */ (function () {
|
|
15
|
+
function Kd() {
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(Kd.prototype, "getRSV", {
|
|
18
|
+
enumerable: false,
|
|
19
|
+
configurable: true,
|
|
20
|
+
writable: true,
|
|
21
|
+
value: function (list) {
|
|
22
|
+
var res = [];
|
|
23
|
+
for (var i = 0; i < list.length; i++) {
|
|
24
|
+
if (i < 8)
|
|
25
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: undefined });
|
|
26
|
+
else {
|
|
27
|
+
var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
|
|
28
|
+
var hight = Math.max.apply(Math, list.slice(i - 9, i + 1).map(function (item) { return item.h; }));
|
|
29
|
+
var close_1 = list[i].c;
|
|
30
|
+
var rsv = ((close_1 - low) / (hight - low)) * 100;
|
|
31
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: rsv });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return res;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(Kd.prototype, "getKD", {
|
|
38
|
+
enumerable: false,
|
|
39
|
+
configurable: true,
|
|
40
|
+
writable: true,
|
|
41
|
+
value: function (list) {
|
|
42
|
+
var res = [];
|
|
43
|
+
var yesterdayK = 0;
|
|
44
|
+
var yesterdayD = 0;
|
|
45
|
+
for (var i = 0; i < list.length; i++) {
|
|
46
|
+
if (i < 8)
|
|
47
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: undefined, k: undefined, d: undefined });
|
|
48
|
+
else {
|
|
49
|
+
var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
|
|
50
|
+
var hight = Math.max.apply(Math, list.slice(i - 9, i + 1).map(function (item) { return item.h; }));
|
|
51
|
+
var close_2 = list[i].c;
|
|
52
|
+
var rsv = ((close_2 - low) / (hight - low)) * 100;
|
|
53
|
+
if (i === 8) {
|
|
54
|
+
var k = (2 / 3) * 50 + (1 / 3) * rsv;
|
|
55
|
+
var d = (2 / 3) * 50 + (1 / 3) * k;
|
|
56
|
+
var j = 3 * k - 2 * d;
|
|
57
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: rsv, k: k, d: d, j: j });
|
|
58
|
+
yesterdayK = k;
|
|
59
|
+
yesterdayD = d;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
var k = (2 / 3) * yesterdayK + (1 / 3) * rsv;
|
|
63
|
+
var d = (2 / 3) * yesterdayD + (1 / 3) * k;
|
|
64
|
+
var j = 3 * k - 2 * d;
|
|
65
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: rsv, k: k, d: d, j: j });
|
|
66
|
+
yesterdayK = k;
|
|
67
|
+
yesterdayD = d;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return res;
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return Kd;
|
|
75
|
+
}());
|
|
76
|
+
exports.default = Kd;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var kd_1 = require("./kd");
|
|
4
|
+
var test_data_test_1 = require("./test_data.test");
|
|
5
|
+
describe("test kd methods", function () {
|
|
6
|
+
it("test getRSV()", function () {
|
|
7
|
+
var kd = new kd_1.default();
|
|
8
|
+
expect(kd.getRSV(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
|
+
rsv: 19.607843137254903,
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
it("test getRSV()", function () {
|
|
19
|
+
var kd = new kd_1.default();
|
|
20
|
+
expect(kd.getKD(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
|
+
rsv: 19.607843137254903,
|
|
28
|
+
k: 17.953685125345164,
|
|
29
|
+
d: 27.200715022358978,
|
|
30
|
+
j: -0.5403746686824604,
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
export { default as simpleRegressionModel } from "./analyze/Regression/simpleRegressoinModel.js";
|
|
2
|
-
export { movingAverages, weightMovingAverages,
|
|
2
|
+
export { exponentialSmoothing, movingAverages, weightMovingAverages, } from "./analyze/TimeSeries/R/index.js";
|
|
3
3
|
export { calcSeasonalIndicesNoTrend } from "./analyze/TimeSeries/RS/index.js";
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
4
|
+
export { default as Gold } from "./stockSkills/gold.js";
|
|
5
|
+
export { default as Kd } from "./stockSkills/kd.js";
|
|
6
6
|
export { default as Ma } from "./stockSkills/ma.js";
|
|
7
7
|
export { default as Macd } from "./stockSkills/macd.js";
|
|
8
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
9
|
export { default as dateFormat } from "./stockSkills/utils/dateFormat.js";
|
|
12
10
|
export { default as getWeekLine } from "./stockSkills/utils/getWeekLine.js";
|
|
11
|
+
export { default as Williams } from "./stockSkills/williams.js";
|
|
12
|
+
export { add } from "./test/add.js";
|
|
13
|
+
export { minus } from "./test/minus.js";
|
package/dist/esm/index.js
CHANGED
|
@@ -4,14 +4,15 @@
|
|
|
4
4
|
但如果要支持 ES 模塊的瀏覽器 ,則需要文件擴展名(.js)。
|
|
5
5
|
*/
|
|
6
6
|
export { default as simpleRegressionModel } from "./analyze/Regression/simpleRegressoinModel.js";
|
|
7
|
-
export { movingAverages, weightMovingAverages,
|
|
7
|
+
export { exponentialSmoothing, movingAverages, weightMovingAverages, } from "./analyze/TimeSeries/R/index.js";
|
|
8
8
|
export { calcSeasonalIndicesNoTrend } from "./analyze/TimeSeries/RS/index.js";
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
9
|
+
export { default as Gold } from "./stockSkills/gold.js";
|
|
10
|
+
export { default as Kd } from "./stockSkills/kd.js";
|
|
11
11
|
export { default as Ma } from "./stockSkills/ma.js";
|
|
12
12
|
export { default as Macd } from "./stockSkills/macd.js";
|
|
13
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
14
|
export { default as dateFormat } from "./stockSkills/utils/dateFormat.js";
|
|
17
15
|
export { default as getWeekLine } from "./stockSkills/utils/getWeekLine.js";
|
|
16
|
+
export { default as Williams } from "./stockSkills/williams.js";
|
|
17
|
+
export { add } from "./test/add.js";
|
|
18
|
+
export { minus } from "./test/minus.js";
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
interface KdType {
|
|
2
|
+
getRSV: (list: ListType) => ResRSV;
|
|
3
|
+
getKD: (list: ListType) => ResKD;
|
|
4
|
+
}
|
|
5
|
+
declare type ListType = {
|
|
6
|
+
c: number;
|
|
7
|
+
h: number;
|
|
8
|
+
l: number;
|
|
9
|
+
}[];
|
|
10
|
+
declare type ResRSV = {
|
|
11
|
+
c: number;
|
|
12
|
+
rsv?: number;
|
|
13
|
+
}[];
|
|
14
|
+
declare type ResKD = {
|
|
15
|
+
c: number;
|
|
16
|
+
rsv?: number;
|
|
17
|
+
k?: number;
|
|
18
|
+
d?: number;
|
|
19
|
+
j?: number;
|
|
20
|
+
}[];
|
|
21
|
+
export default class Kd implements KdType {
|
|
22
|
+
getRSV(list: ListType): ({
|
|
23
|
+
rsv: undefined;
|
|
24
|
+
c: number;
|
|
25
|
+
h: number;
|
|
26
|
+
l: number;
|
|
27
|
+
} | {
|
|
28
|
+
rsv: number;
|
|
29
|
+
c: number;
|
|
30
|
+
h: number;
|
|
31
|
+
l: number;
|
|
32
|
+
})[];
|
|
33
|
+
getKD(list: ListType): ({
|
|
34
|
+
rsv: undefined;
|
|
35
|
+
k: undefined;
|
|
36
|
+
d: undefined;
|
|
37
|
+
c: number;
|
|
38
|
+
h: number;
|
|
39
|
+
l: number;
|
|
40
|
+
} | {
|
|
41
|
+
rsv: number;
|
|
42
|
+
k: number;
|
|
43
|
+
d: number;
|
|
44
|
+
j: number;
|
|
45
|
+
c: number;
|
|
46
|
+
h: number;
|
|
47
|
+
l: number;
|
|
48
|
+
})[];
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
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 Kd = /** @class */ (function () {
|
|
13
|
+
function Kd() {
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(Kd.prototype, "getRSV", {
|
|
16
|
+
enumerable: false,
|
|
17
|
+
configurable: true,
|
|
18
|
+
writable: true,
|
|
19
|
+
value: function (list) {
|
|
20
|
+
var res = [];
|
|
21
|
+
for (var i = 0; i < list.length; i++) {
|
|
22
|
+
if (i < 8)
|
|
23
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: undefined });
|
|
24
|
+
else {
|
|
25
|
+
var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
|
|
26
|
+
var hight = Math.max.apply(Math, list.slice(i - 9, i + 1).map(function (item) { return item.h; }));
|
|
27
|
+
var close_1 = list[i].c;
|
|
28
|
+
var rsv = ((close_1 - low) / (hight - low)) * 100;
|
|
29
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: rsv });
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return res;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
Object.defineProperty(Kd.prototype, "getKD", {
|
|
36
|
+
enumerable: false,
|
|
37
|
+
configurable: true,
|
|
38
|
+
writable: true,
|
|
39
|
+
value: function (list) {
|
|
40
|
+
var res = [];
|
|
41
|
+
var yesterdayK = 0;
|
|
42
|
+
var yesterdayD = 0;
|
|
43
|
+
for (var i = 0; i < list.length; i++) {
|
|
44
|
+
if (i < 8)
|
|
45
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: undefined, k: undefined, d: undefined });
|
|
46
|
+
else {
|
|
47
|
+
var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
|
|
48
|
+
var hight = Math.max.apply(Math, list.slice(i - 9, i + 1).map(function (item) { return item.h; }));
|
|
49
|
+
var close_2 = list[i].c;
|
|
50
|
+
var rsv = ((close_2 - low) / (hight - low)) * 100;
|
|
51
|
+
if (i === 8) {
|
|
52
|
+
var k = (2 / 3) * 50 + (1 / 3) * rsv;
|
|
53
|
+
var d = (2 / 3) * 50 + (1 / 3) * k;
|
|
54
|
+
var j = 3 * k - 2 * d;
|
|
55
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: rsv, k: k, d: d, j: j });
|
|
56
|
+
yesterdayK = k;
|
|
57
|
+
yesterdayD = d;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
var k = (2 / 3) * yesterdayK + (1 / 3) * rsv;
|
|
61
|
+
var d = (2 / 3) * yesterdayD + (1 / 3) * k;
|
|
62
|
+
var j = 3 * k - 2 * d;
|
|
63
|
+
res[i] = __assign(__assign({}, list[i]), { rsv: rsv, k: k, d: d, j: j });
|
|
64
|
+
yesterdayK = k;
|
|
65
|
+
yesterdayD = d;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return res;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return Kd;
|
|
73
|
+
}());
|
|
74
|
+
export default Kd;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import Kd from "./kd";
|
|
2
|
+
import data from "./test_data.test";
|
|
3
|
+
describe("test kd methods", function () {
|
|
4
|
+
it("test getRSV()", function () {
|
|
5
|
+
var kd = new Kd();
|
|
6
|
+
expect(kd.getRSV(data)[data.length - 1]).toEqual({
|
|
7
|
+
c: 142,
|
|
8
|
+
o: 138,
|
|
9
|
+
t: 20211214,
|
|
10
|
+
v: 16841,
|
|
11
|
+
h: 143,
|
|
12
|
+
l: 138,
|
|
13
|
+
rsv: 19.607843137254903,
|
|
14
|
+
});
|
|
15
|
+
});
|
|
16
|
+
it("test getRSV()", function () {
|
|
17
|
+
var kd = new Kd();
|
|
18
|
+
expect(kd.getKD(data)[data.length - 1]).toEqual({
|
|
19
|
+
c: 142,
|
|
20
|
+
o: 138,
|
|
21
|
+
t: 20211214,
|
|
22
|
+
v: 16841,
|
|
23
|
+
h: 143,
|
|
24
|
+
l: 138,
|
|
25
|
+
rsv: 19.607843137254903,
|
|
26
|
+
k: 17.953685125345164,
|
|
27
|
+
d: 27.200715022358978,
|
|
28
|
+
j: -0.5403746686824604,
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|