@ch20026103/anysis 0.0.2-alpha → 0.0.2-release

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/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, exponentialSmoothing, } from "./analyze/TimeSeries/R/index.js";
7
+ export { exponentialSmoothing, movingAverages, weightMovingAverages, } from "./analyze/TimeSeries/R/index.js";
8
8
  export { calcSeasonalIndicesNoTrend } from "./analyze/TimeSeries/RS/index.js";
9
- export { add } from "./test/add.js";
10
- export { minus } from "./test/minus.js";
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,51 @@
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
+ "k-d"?: 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
+ "k-d": undefined;
38
+ c: number;
39
+ h: number;
40
+ l: number;
41
+ } | {
42
+ rsv: number;
43
+ k: number;
44
+ d: number;
45
+ "k-d": number;
46
+ c: number;
47
+ h: number;
48
+ l: number;
49
+ })[];
50
+ }
51
+ export {};
@@ -0,0 +1,69 @@
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 - 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;
29
+ rsv = Math.round(rsv * 100) / 100;
30
+ res[i] = __assign(__assign({}, list[i]), { rsv: rsv });
31
+ }
32
+ }
33
+ return res;
34
+ }
35
+ });
36
+ Object.defineProperty(Kd.prototype, "getKD", {
37
+ enumerable: false,
38
+ configurable: true,
39
+ writable: true,
40
+ value: function (list) {
41
+ var res = [];
42
+ var yesterdayK = 50;
43
+ var yesterdayD = 50;
44
+ for (var i = 0; i < list.length; i++) {
45
+ if (i < 8)
46
+ res[i] = __assign(__assign({}, list[i]), { rsv: undefined, k: undefined, d: undefined, "k-d": undefined });
47
+ else {
48
+ var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
49
+ 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;
52
+ rsv = Math.round(rsv * 100) / 100;
53
+ var k = (2 / 3) * yesterdayK + (1 / 3) * rsv;
54
+ var d = (2 / 3) * yesterdayD + (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
+ res[i] = __assign(__assign({}, list[i]), { rsv: rsv, k: k, d: d, "k-d": k_d });
60
+ yesterdayK = k;
61
+ yesterdayD = d;
62
+ }
63
+ }
64
+ return res;
65
+ }
66
+ });
67
+ return Kd;
68
+ }());
69
+ export default Kd;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,31 @@
1
+ import Kd from "./kd";
2
+ import { data_9904 as 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
+ o: 26.4,
8
+ l: 34.3,
9
+ h: 34.8,
10
+ c: 34.65,
11
+ v: 12765,
12
+ t: 20230216,
13
+ rsv: 90.63,
14
+ });
15
+ });
16
+ it("test getRSV()", function () {
17
+ var kd = new Kd();
18
+ expect(kd.getKD(data)[data.length - 1]).toEqual({
19
+ o: 26.4,
20
+ l: 34.3,
21
+ h: 34.8,
22
+ c: 34.65,
23
+ v: 12765,
24
+ t: 20230216,
25
+ rsv: 90.63,
26
+ k: 64.41,
27
+ d: 45.25,
28
+ 'k-d': 19.16
29
+ });
30
+ });
31
+ });
@@ -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
+ }[];