@ch20026103/anysis 0.0.2 → 0.0.3-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.
@@ -0,0 +1,27 @@
1
+ import Slope from "./index";
2
+ describe("test Slope methods", function () {
3
+ it("test 123456", function () {
4
+ var x = [1, 2, 3, 4, 5, 6];
5
+ var y = [1, 2, 3, 4, 5, 6];
6
+ var slope = Slope(x, y);
7
+ expect(slope).toEqual(1);
8
+ });
9
+ it("test -123456", function () {
10
+ var x = [1, 2, 3, 4, 5, 6];
11
+ var y = [-1, -2, -3, -4, -5, -6];
12
+ var slope = Slope(x, y);
13
+ expect(slope).toEqual(-1);
14
+ });
15
+ it("test 654321", function () {
16
+ var x = [1, 2, 3, 4, 5, 6];
17
+ var y = [6, 5, 4, 3, 2, 1];
18
+ var slope = Slope(x, y);
19
+ expect(slope).toEqual(-1);
20
+ });
21
+ it("test 222222", function () {
22
+ var x = [1, 2, 3, 4, 5, 6];
23
+ var y = [2, 2, 2, 2, 2, 2];
24
+ var slope = Slope(x, y);
25
+ expect(slope).toEqual(0);
26
+ });
27
+ });
@@ -1,12 +1,14 @@
1
1
  export { default as simpleRegressionModel } from "./analyze/Regression/simpleRegressoinModel.js";
2
- export { movingAverages, weightMovingAverages, exponentialSmoothing, } from "./analyze/TimeSeries/R/index.js";
2
+ export { default as slope } from "./analyze/Slope/index.js";
3
+ export { exponentialSmoothing, movingAverages, weightMovingAverages, } from "./analyze/TimeSeries/R/index.js";
3
4
  export { calcSeasonalIndicesNoTrend } from "./analyze/TimeSeries/RS/index.js";
4
- export { add } from "./test/add.js";
5
- export { minus } from "./test/minus.js";
5
+ export { default as Gold } from "./stockSkills/gold.js";
6
+ export { default as Kd } from "./stockSkills/kd.js";
6
7
  export { default as Ma } from "./stockSkills/ma.js";
7
8
  export { default as Macd } from "./stockSkills/macd.js";
8
9
  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
10
  export { default as dateFormat } from "./stockSkills/utils/dateFormat.js";
12
11
  export { default as getWeekLine } from "./stockSkills/utils/getWeekLine.js";
12
+ export { default as Williams } from "./stockSkills/williams.js";
13
+ export { add } from "./test/add.js";
14
+ export { minus } from "./test/minus.js";
package/dist/esm/index.js CHANGED
@@ -4,14 +4,16 @@
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 { default as slope } from "./analyze/Slope/index.js";
8
+ export { exponentialSmoothing, movingAverages, weightMovingAverages, } from "./analyze/TimeSeries/R/index.js";
8
9
  export { calcSeasonalIndicesNoTrend } from "./analyze/TimeSeries/RS/index.js";
9
- export { add } from "./test/add.js";
10
- export { minus } from "./test/minus.js";
10
+ export { default as Gold } from "./stockSkills/gold.js";
11
+ export { default as Kd } from "./stockSkills/kd.js";
11
12
  export { default as Ma } from "./stockSkills/ma.js";
12
13
  export { default as Macd } from "./stockSkills/macd.js";
13
14
  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
15
  export { default as dateFormat } from "./stockSkills/utils/dateFormat.js";
17
16
  export { default as getWeekLine } from "./stockSkills/utils/getWeekLine.js";
17
+ export { default as Williams } from "./stockSkills/williams.js";
18
+ export { add } from "./test/add.js";
19
+ 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
+ });
@@ -13,6 +13,14 @@ declare type ResMa20 = {
13
13
  c: number;
14
14
  ma20?: number;
15
15
  }[];
16
+ declare type ResMa60 = {
17
+ c: number;
18
+ ma60?: number;
19
+ }[];
20
+ declare type ResMaSelf = {
21
+ c: number;
22
+ maSelf?: number;
23
+ }[];
16
24
  declare type ResBoll = {
17
25
  c: number;
18
26
  ma25?: number;
@@ -25,6 +33,7 @@ declare type ResAllMa = {
25
33
  ma10?: number;
26
34
  ma20?: number;
27
35
  ma25?: number;
36
+ ma60?: number;
28
37
  bollUb?: number;
29
38
  bollLb?: number;
30
39
  }[];
@@ -33,6 +42,8 @@ interface MaType {
33
42
  getMa5: (list: ListType) => ResMa5;
34
43
  getMa10: (list: ListType) => ResMa10;
35
44
  getMa20: (list: ListType) => ResMa20;
45
+ getMa60: (list: ListType) => ResMa60;
46
+ getMaSelf: (list: ListType, self: number) => ResMaSelf;
36
47
  getBoll: (list: ListType) => ResBoll;
37
48
  }
38
49
  export default class Ma implements MaType {
@@ -40,6 +51,8 @@ export default class Ma implements MaType {
40
51
  getMa5(list: ListType): ResMa5;
41
52
  getMa10(list: ListType): ResMa10;
42
53
  getMa20(list: ListType): ResMa20;
54
+ getMa60(list: ListType): ResMa60;
55
+ getMaSelf(list: ListType, self: number): ResMaSelf;
43
56
  getBoll(list: ListType): ResBoll;
44
57
  }
45
58
  export {};
@@ -21,9 +21,10 @@ var Ma = /** @class */ (function () {
21
21
  var responseMa5 = this.getMa5(list);
22
22
  var responseMa10 = this.getMa10(list);
23
23
  var responseMa20 = this.getMa20(list);
24
+ var responseMa60 = this.getMa60(list);
24
25
  var responseBoll = this.getBoll(list);
25
26
  for (var i = 0; i < list.length; i++) {
26
- res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseBoll[i]);
27
+ res[i] = Object.assign(list[i], responseMa5[i], responseMa10[i], responseMa20[i], responseMa60[i], responseBoll[i]);
27
28
  }
28
29
  return res;
29
30
  }
@@ -88,6 +89,46 @@ var Ma = /** @class */ (function () {
88
89
  return res;
89
90
  }
90
91
  });
92
+ Object.defineProperty(Ma.prototype, "getMa60", {
93
+ enumerable: false,
94
+ configurable: true,
95
+ writable: true,
96
+ value: function (list) {
97
+ var res = [];
98
+ for (var i = 0; i < list.length; i++) {
99
+ if (i < 59)
100
+ res[i] = __assign(__assign({}, list[i]), { ma60: undefined });
101
+ else {
102
+ var sum = list
103
+ .slice(i - 59, i + 1)
104
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
105
+ var ma60 = Math.round((sum / 60) * 100) / 100;
106
+ res[i] = __assign(__assign({}, list[i]), { ma60: ma60 });
107
+ }
108
+ }
109
+ return res;
110
+ }
111
+ });
112
+ Object.defineProperty(Ma.prototype, "getMaSelf", {
113
+ enumerable: false,
114
+ configurable: true,
115
+ writable: true,
116
+ value: function (list, self) {
117
+ var res = [];
118
+ for (var i = 0; i < list.length; i++) {
119
+ if (i < (self - 1))
120
+ res[i] = __assign(__assign({}, list[i]), { maSelf: undefined });
121
+ else {
122
+ var sum = list
123
+ .slice(i - (self - 1), i + 1)
124
+ .reduce(function (pre, current) { return pre + current.c; }, 0);
125
+ var maSelf = Math.round((sum / self) * 100) / 100;
126
+ res[i] = __assign(__assign({}, list[i]), { maSelf: maSelf });
127
+ }
128
+ }
129
+ return res;
130
+ }
131
+ });
91
132
  Object.defineProperty(Ma.prototype, "getBoll", {
92
133
  enumerable: false,
93
134
  configurable: true,
@@ -37,6 +37,30 @@ describe("test ma methods", function () {
37
37
  ma20: 144.88,
38
38
  });
39
39
  });
40
+ it("test getMa60()", function () {
41
+ var ma = new Ma();
42
+ expect(ma.getMa60(data)[data.length - 1]).toEqual({
43
+ c: 142,
44
+ o: 138,
45
+ t: 20211214,
46
+ v: 16841,
47
+ h: 143,
48
+ l: 138,
49
+ ma60: 134.86,
50
+ });
51
+ });
52
+ it("test getMaSelf()", function () {
53
+ var ma = new Ma();
54
+ expect(ma.getMaSelf(data, 20)[data.length - 1]).toEqual({
55
+ c: 142,
56
+ o: 138,
57
+ t: 20211214,
58
+ v: 16841,
59
+ h: 143,
60
+ l: 138,
61
+ maSelf: 144.88,
62
+ });
63
+ });
40
64
  it("test getBoll()", function () {
41
65
  var ma = new Ma();
42
66
  expect(ma.getBoll(data)[data.length - 1]).toEqual({
@@ -54,18 +78,19 @@ describe("test ma methods", function () {
54
78
  it("test getAllMa()", function () {
55
79
  var ma = new Ma();
56
80
  expect(ma.getAllMa(data)[data.length - 1]).toEqual({
57
- c: 142,
58
- o: 138,
59
81
  t: 20211214,
60
- v: 16841,
82
+ o: 138,
61
83
  h: 143,
62
84
  l: 138,
85
+ c: 142,
86
+ v: 16841,
63
87
  ma5: 141.1,
64
88
  ma10: 146.7,
65
89
  ma20: 144.88,
90
+ ma60: 134.86,
66
91
  ma25: 142.66,
67
- bollLb: 126.69999999999999,
68
92
  bollUb: 158.62,
93
+ bollLb: 126.69999999999999,
69
94
  });
70
95
  });
71
96
  });
@@ -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
+ }[];