@ch20026103/anysis 0.0.15-alpha → 0.0.16-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.
Files changed (61) hide show
  1. package/demo/main.js +12 -10
  2. package/dist/cjs/index.d.ts +1 -1
  3. package/dist/cjs/index.js +3 -3
  4. package/dist/cjs/stockSkills/boll.d.ts +25 -50
  5. package/dist/cjs/stockSkills/boll.js +9 -11
  6. package/dist/cjs/stockSkills/ema.d.ts +11 -33
  7. package/dist/cjs/stockSkills/gold.d.ts +13 -32
  8. package/dist/cjs/stockSkills/kd.d.ts +29 -72
  9. package/dist/cjs/stockSkills/kd.js +14 -11
  10. package/dist/cjs/stockSkills/kd.test.js +1 -1
  11. package/dist/cjs/stockSkills/ma.d.ts +39 -60
  12. package/dist/cjs/stockSkills/ma.js +16 -7
  13. package/dist/cjs/stockSkills/macd.d.ts +32 -63
  14. package/dist/cjs/stockSkills/macd.js +21 -24
  15. package/dist/cjs/stockSkills/obv.d.ts +18 -49
  16. package/dist/cjs/stockSkills/obv.js +3 -1
  17. package/dist/cjs/stockSkills/rsi.d.ts +10 -26
  18. package/dist/cjs/stockSkills/types.d.ts +10 -0
  19. package/dist/cjs/stockSkills/types.js +2 -0
  20. package/dist/cjs/stockSkills/utils/dateFormat.d.ts +6 -3
  21. package/dist/cjs/stockSkills/utils/dateFormat.js +2 -2
  22. package/dist/cjs/stockSkills/utils/getWeekLine.d.ts +6 -15
  23. package/dist/cjs/stockSkills/utils/getWeekLine.js +3 -0
  24. package/dist/cjs/stockSkills/utils/getWeekLine.test.js +1 -0
  25. package/dist/cjs/stockSkills/vma.d.ts +13 -26
  26. package/dist/cjs/stockSkills/week.d.ts +16 -0
  27. package/dist/cjs/stockSkills/week.js +56 -0
  28. package/dist/cjs/stockSkills/week.test.d.ts +1 -0
  29. package/dist/cjs/stockSkills/week.test.js +60 -0
  30. package/dist/cjs/stockSkills/williams.d.ts +20 -32
  31. package/dist/esm/index.d.ts +1 -1
  32. package/dist/esm/index.js +1 -1
  33. package/dist/esm/stockSkills/boll.d.ts +25 -50
  34. package/dist/esm/stockSkills/boll.js +9 -11
  35. package/dist/esm/stockSkills/ema.d.ts +11 -33
  36. package/dist/esm/stockSkills/gold.d.ts +13 -32
  37. package/dist/esm/stockSkills/kd.d.ts +29 -72
  38. package/dist/esm/stockSkills/kd.js +14 -11
  39. package/dist/esm/stockSkills/kd.test.js +1 -1
  40. package/dist/esm/stockSkills/ma.d.ts +39 -60
  41. package/dist/esm/stockSkills/ma.js +16 -7
  42. package/dist/esm/stockSkills/macd.d.ts +32 -63
  43. package/dist/esm/stockSkills/macd.js +21 -24
  44. package/dist/esm/stockSkills/obv.d.ts +18 -49
  45. package/dist/esm/stockSkills/obv.js +3 -1
  46. package/dist/esm/stockSkills/rsi.d.ts +10 -26
  47. package/dist/esm/stockSkills/types.d.ts +10 -0
  48. package/dist/esm/stockSkills/types.js +1 -0
  49. package/dist/esm/stockSkills/utils/dateFormat.d.ts +6 -3
  50. package/dist/esm/stockSkills/utils/dateFormat.js +2 -2
  51. package/dist/esm/stockSkills/utils/getWeekLine.d.ts +6 -15
  52. package/dist/esm/stockSkills/utils/getWeekLine.js +3 -0
  53. package/dist/esm/stockSkills/utils/getWeekLine.test.js +1 -0
  54. package/dist/esm/stockSkills/vma.d.ts +13 -26
  55. package/dist/esm/stockSkills/week.d.ts +16 -0
  56. package/dist/esm/stockSkills/week.js +54 -0
  57. package/dist/esm/stockSkills/week.test.d.ts +1 -0
  58. package/dist/esm/stockSkills/week.test.js +58 -0
  59. package/dist/esm/stockSkills/williams.d.ts +20 -32
  60. package/dist/umd/index.js +125 -59
  61. package/package.json +1 -1
@@ -1,36 +1,23 @@
1
- type DataType = {
2
- v: number;
3
- [key: string]: unknown;
1
+ import { StockType } from "./types";
2
+ type NewStockType = Required<Pick<StockType, 'v'>> & StockType;
3
+ type NewStockListType = NewStockType[];
4
+ export type VmaResType = {
5
+ dataset: NewStockListType;
6
+ vma: number;
7
+ type: number;
4
8
  };
5
- type ListType = DataType[];
6
9
  interface VmaType {
7
- init: (data: DataType, type: number) => {
8
- dataset: ListType;
9
- vma: number;
10
- type: number;
11
- };
12
- next: (data: DataType, preList: {
13
- dataset: ListType;
14
- vma: number;
15
- type: number;
16
- }, type: number) => {
17
- dataset: ListType;
18
- vma: number;
19
- type: number;
20
- };
10
+ init: (data: NewStockType, type: number) => VmaResType;
11
+ next: (data: NewStockType, preList: VmaResType, type: number) => VmaResType;
21
12
  }
22
13
  export default class Vma implements VmaType {
23
- init(data: DataType, type: number): {
24
- dataset: DataType[];
14
+ init(data: NewStockType, type: number): {
15
+ dataset: NewStockType[];
25
16
  vma: number;
26
17
  type: number;
27
18
  };
28
- next(data: DataType, preList: {
29
- dataset: ListType;
30
- vma: number;
31
- type: number;
32
- }, type: number): {
33
- dataset: ListType;
19
+ next(data: NewStockType, preList: VmaResType, type: number): {
20
+ dataset: NewStockListType;
34
21
  vma: number;
35
22
  type: number;
36
23
  };
@@ -0,0 +1,16 @@
1
+ import { StockType } from "./types";
2
+ type NewStockType = Required<Pick<StockType, 'v'>> & StockType;
3
+ type NewStockListType = NewStockType[];
4
+ export type WeekResType = {
5
+ dataset: NewStockListType;
6
+ week: NewStockListType;
7
+ };
8
+ interface WeekType {
9
+ init: (data: NewStockType) => WeekResType;
10
+ next: (data: NewStockType, preList: WeekResType) => WeekResType;
11
+ }
12
+ export default class Week implements WeekType {
13
+ init(data: NewStockType): WeekResType;
14
+ next(data: NewStockType, preList: WeekResType): WeekResType;
15
+ }
16
+ export {};
@@ -0,0 +1,54 @@
1
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
2
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
3
+ if (ar || !(i in from)) {
4
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
5
+ ar[i] = from[i];
6
+ }
7
+ }
8
+ return to.concat(ar || Array.prototype.slice.call(from));
9
+ };
10
+ var Week = /** @class */ (function () {
11
+ function Week() {
12
+ }
13
+ Object.defineProperty(Week.prototype, "init", {
14
+ enumerable: false,
15
+ configurable: true,
16
+ writable: true,
17
+ value: function (data) {
18
+ return { dataset: [data], week: [] };
19
+ }
20
+ });
21
+ Object.defineProperty(Week.prototype, "next", {
22
+ enumerable: false,
23
+ configurable: true,
24
+ writable: true,
25
+ value: function (data, preList) {
26
+ var year = data.t
27
+ .toString()
28
+ .replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3");
29
+ var day = new Date(year).getDay();
30
+ if (day === 6 || day === 0)
31
+ return { dataset: preList.dataset, week: preList.week };
32
+ preList.dataset.push(data);
33
+ if (day === 5) {
34
+ var week = {
35
+ o: preList.dataset[0]["o"],
36
+ c: preList.dataset[preList.dataset.length - 1]["c"],
37
+ t: preList.dataset[preList.dataset.length - 1]["t"],
38
+ h: Math.max.apply(Math, preList.dataset.map(function (item) { return item.h; })),
39
+ l: Math.min.apply(Math, preList.dataset.map(function (item) { return item.l; })),
40
+ v: preList.dataset.reduce(function (pre, current) { return pre + current.v; }, 0),
41
+ };
42
+ return { dataset: preList.dataset, week: __spreadArray(__spreadArray([], preList.week, true), [week], false) };
43
+ }
44
+ else {
45
+ if (day === 1) {
46
+ preList.dataset = [data];
47
+ }
48
+ return { dataset: preList.dataset, week: preList.week };
49
+ }
50
+ }
51
+ });
52
+ return Week;
53
+ }());
54
+ export default Week;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,58 @@
1
+ import Week from './week';
2
+ describe('Week', function () {
3
+ var week;
4
+ beforeEach(function () {
5
+ week = new Week();
6
+ });
7
+ describe('init', function () {
8
+ it('應該正確初始化數據', function () {
9
+ var data = { o: 100, c: 101, h: 102, l: 99, t: 20230501, v: 1000 };
10
+ var result = week.init(data);
11
+ expect(result).toEqual({ dataset: [data], week: [] });
12
+ });
13
+ });
14
+ describe('next', function () {
15
+ it('應該正確處理非週末的數據', function () {
16
+ var initialData = { o: 100, c: 101, h: 102, l: 99, t: 20230501, v: 1000 };
17
+ var nextData = { o: 101, c: 102, h: 103, l: 100, t: 20230502, v: 1100 };
18
+ var initialResult = week.init(initialData);
19
+ var result = week.next(nextData, initialResult);
20
+ expect(result.dataset).toHaveLength(2);
21
+ expect(result.week).toHaveLength(0);
22
+ });
23
+ it('應該在週五時生成週數據', function () {
24
+ var initialData = { o: 100, c: 101, h: 102, l: 99, t: 20230501, v: 1000 };
25
+ var result = week.init(initialData);
26
+ for (var i = 2; i <= 5; i++) {
27
+ var nextData = { o: 100 + i, c: 101 + i, h: 102 + i, l: 99 + i, t: 20230500 + i, v: 1000 + i * 100 };
28
+ result = week.next(nextData, result);
29
+ }
30
+ expect(result.dataset).toHaveLength(5);
31
+ expect(result.week).toHaveLength(1);
32
+ expect(result.week[0]).toEqual({
33
+ o: 100,
34
+ c: 106,
35
+ h: 107,
36
+ l: 99,
37
+ t: 20230505,
38
+ v: 6400
39
+ });
40
+ });
41
+ it('應該忽略週末數據', function () {
42
+ var initialData = { o: 100, c: 101, h: 102, l: 99, t: 20230505, v: 1000 };
43
+ var weekendData = { o: 101, c: 102, h: 103, l: 100, t: 20230506, v: 1100 };
44
+ var initialResult = week.init(initialData);
45
+ var result = week.next(weekendData, initialResult);
46
+ expect(result).toEqual(initialResult);
47
+ });
48
+ it('應該在新的一週開始時重置數據集', function () {
49
+ var fridayData = { o: 100, c: 101, h: 102, l: 99, t: 20230505, v: 1000 };
50
+ var mondayData = { o: 101, c: 102, h: 103, l: 100, t: 20230508, v: 1100 };
51
+ var result = week.init(fridayData);
52
+ result = week.next(fridayData, result);
53
+ result = week.next(mondayData, result);
54
+ expect(result.dataset).toHaveLength(1);
55
+ expect(result.dataset[0]).toEqual(mondayData);
56
+ });
57
+ });
58
+ });
@@ -1,9 +1,4 @@
1
- type DataType = {
2
- h: number;
3
- l: number;
4
- c: number;
5
- };
6
- type ListType = DataType[];
1
+ import { StockListType, StockType } from "./types";
7
2
  type ResWilliams9Type = {
8
3
  c: number;
9
4
  williams9: number | null;
@@ -17,42 +12,35 @@ type ResAllWilliamsType = {
17
12
  williams18: number | null;
18
13
  williams9: number | null;
19
14
  }[];
15
+ export type WilliamsResType = {
16
+ dataset: StockListType;
17
+ williams: number;
18
+ type: number;
19
+ };
20
20
  interface WilliamsType {
21
- init: (data: DataType, type: number) => {
22
- dataset: ListType;
23
- williams: number;
24
- type: number;
25
- };
26
- next: (data: DataType, preList: {
27
- dataset: ListType;
21
+ init: (data: StockType, type: number) => WilliamsResType;
22
+ next: (data: StockType, preList: {
23
+ dataset: StockListType;
28
24
  williams: number;
29
25
  type: number;
30
- }, type: number) => {
31
- dataset: ListType;
32
- williams: number;
33
- type: number;
34
- };
35
- getWilliams9: (list: ListType) => ResWilliams9Type;
36
- getWilliams18: (list: ListType) => ResWilliams18Type;
37
- getAllWillams(list: ListType): ResAllWilliamsType;
26
+ }, type: number) => WilliamsResType;
27
+ getWilliams9: (list: StockListType) => ResWilliams9Type;
28
+ getWilliams18: (list: StockListType) => ResWilliams18Type;
29
+ getAllWillams(list: StockListType): ResAllWilliamsType;
38
30
  }
39
31
  export default class Williams implements WilliamsType {
40
- init(data: DataType, type: number): {
41
- dataset: DataType[];
32
+ init(data: StockType, type: number): {
33
+ dataset: StockType[];
42
34
  williams: number;
43
35
  type: number;
44
36
  };
45
- next(data: DataType, preList: {
46
- dataset: ListType;
47
- williams: number;
48
- type: number;
49
- }, type: number): {
50
- dataset: ListType;
37
+ next(data: StockType, preList: WilliamsResType, type: number): {
38
+ dataset: StockListType;
51
39
  williams: number;
52
40
  type: number;
53
41
  };
54
- getAllWillams(list: ListType): ResAllWilliamsType;
55
- getWilliams9(list: ListType): ResWilliams9Type;
56
- getWilliams18(list: ListType): ResWilliams18Type;
42
+ getAllWillams(list: StockListType): ResAllWilliamsType;
43
+ getWilliams9(list: StockListType): ResWilliams9Type;
44
+ getWilliams18(list: StockListType): ResWilliams18Type;
57
45
  }
58
46
  export {};
package/dist/umd/index.js CHANGED
@@ -326,9 +326,9 @@
326
326
  value: function (data) {
327
327
  return {
328
328
  dataset: [data],
329
- bollMa: null,
330
- bollUb: null,
331
- bollLb: null,
329
+ bollMa: 0,
330
+ bollUb: 0,
331
+ bollLb: 0,
332
332
  };
333
333
  }
334
334
  });
@@ -342,9 +342,9 @@
342
342
  return {
343
343
  dataset: preList.dataset,
344
344
  type: type,
345
- bollMa: null,
346
- bollUb: null,
347
- bollLb: null,
345
+ bollMa: 0,
346
+ bollUb: 0,
347
+ bollLb: 0,
348
348
  };
349
349
  }
350
350
  else {
@@ -354,7 +354,7 @@
354
354
  var sum = preList.dataset.reduce(function (pre, current) { return pre + current.c; }, 0);
355
355
  var bollMa_1 = Math.round((sum / type) * 100) / 100;
356
356
  var difference = preList.dataset.reduce(function (pre, current) {
357
- return bollMa_1 !== null ? pre + Math.pow(current.c - bollMa_1, 2) : pre;
357
+ return bollMa_1 !== 0 ? pre + Math.pow(current.c - bollMa_1, 2) : pre;
358
358
  }, 0);
359
359
  var std = Math.round(Math.sqrt(difference / type) * 100) / 100;
360
360
  return {
@@ -375,7 +375,7 @@
375
375
  var res = [];
376
376
  var _loop_1 = function (i) {
377
377
  if (i < type)
378
- res[i] = __assign$7(__assign$7({}, list[i]), { bollMa: null, bollUb: null, bollLb: null });
378
+ res[i] = __assign$7(__assign$7({}, list[i]), { bollMa: 0, bollUb: 0, bollLb: 0 });
379
379
  else {
380
380
  // bollMa
381
381
  var sumMa = list
@@ -386,9 +386,7 @@
386
386
  var difference = res
387
387
  .slice(i - (type - 1), i + 1)
388
388
  .reduce(function (pre, current) {
389
- return bollMa_2 !== null
390
- ? pre + Math.pow(current.c - bollMa_2, 2)
391
- : pre;
389
+ return bollMa_2 !== 0 ? pre + Math.pow(current.c - bollMa_2, 2) : pre;
392
390
  }, 0);
393
391
  var std = Math.round(Math.sqrt(difference / type) * 100) / 100;
394
392
  res[i] = __assign$7(__assign$7({}, list[i]), { bollMa: bollMa_2, bollUb: bollMa_2 + 2 * std, bollLb: bollMa_2 - 2 * std });
@@ -516,6 +514,7 @@
516
514
  t: collectWeekData[collectWeekData.length - 1]["t"],
517
515
  h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
518
516
  l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
517
+ v: collectWeekData.reduce(function (pre, current) { return pre + current.v; }, 0),
519
518
  };
520
519
  res.push(addDetail(obj, collectWeekData, detail));
521
520
  collectWeekData = [];
@@ -529,6 +528,7 @@
529
528
  t: collectWeekData[collectWeekData.length - 1]["t"],
530
529
  h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
531
530
  l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
531
+ v: collectWeekData.reduce(function (pre, current) { return pre + current.v; }, 0),
532
532
  };
533
533
  res.push(addDetail(obj, collectWeekData, detail));
534
534
  }
@@ -544,6 +544,7 @@
544
544
  t: collectWeekData[collectWeekData.length - 1]["t"],
545
545
  h: Math.max.apply(Math, collectWeekData.map(function (item) { return item.h; })),
546
546
  l: Math.min.apply(Math, collectWeekData.map(function (item) { return item.l; })),
547
+ v: collectWeekData.reduce(function (pre, current) { return pre + current.v; }, 0),
547
548
  };
548
549
  res.push(addDetail(obj, collectWeekData, detail));
549
550
  }
@@ -771,13 +772,14 @@
771
772
  enumerable: false,
772
773
  configurable: true,
773
774
  writable: true,
774
- value: function (data) {
775
+ value: function (data, type) {
775
776
  return {
776
777
  dataset: [data],
777
- rsv: null,
778
- k: null,
779
- d: null,
780
- "k-d": null,
778
+ rsv: 0,
779
+ k: 0,
780
+ d: 0,
781
+ "k-d": 0,
782
+ type: type,
781
783
  };
782
784
  }
783
785
  });
@@ -790,10 +792,11 @@
790
792
  if (preList.dataset.length < type) {
791
793
  return {
792
794
  dataset: preList.dataset,
793
- rsv: null,
794
- k: null,
795
- d: null,
796
- "k-d": null,
795
+ rsv: 0,
796
+ k: 0,
797
+ d: 0,
798
+ "k-d": 0,
799
+ type: type,
797
800
  };
798
801
  }
799
802
  else {
@@ -817,6 +820,7 @@
817
820
  k: k,
818
821
  d: d,
819
822
  "k-d": k_d,
823
+ type: type,
820
824
  };
821
825
  }
822
826
  }
@@ -829,7 +833,7 @@
829
833
  var res = [];
830
834
  for (var i = 0; i < list.length; i++) {
831
835
  if (i < 8)
832
- res[i] = __assign$5(__assign$5({}, list[i]), { rsv: null });
836
+ res[i] = __assign$5(__assign$5({}, list[i]), { rsv: 0 });
833
837
  else {
834
838
  var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
835
839
  var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
@@ -852,7 +856,7 @@
852
856
  var yesterdayD = 50;
853
857
  for (var i = 0; i < list.length; i++) {
854
858
  if (i < 8)
855
- res[i] = __assign$5(__assign$5({}, list[i]), { rsv: null, k: null, d: null, "k-d": null });
859
+ res[i] = __assign$5(__assign$5({}, list[i]), { rsv: 0, k: 0, d: 0, "k-d": 0 });
856
860
  else {
857
861
  var low = Math.min.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.l; }));
858
862
  var hight = Math.max.apply(Math, list.slice(i - 8, i + 1).map(function (item) { return item.h; }));
@@ -895,7 +899,12 @@
895
899
  configurable: true,
896
900
  writable: true,
897
901
  value: function (data, type) {
898
- return { dataset: [data], ma: 0, type: type, exclusionValue: { "d+1": 0, d: 0, "d-1": 0 } };
902
+ return {
903
+ dataset: [data],
904
+ ma: 0,
905
+ type: type,
906
+ exclusionValue: { "d+1": 0, d: 0, "d-1": 0 },
907
+ };
899
908
  }
900
909
  });
901
910
  Object.defineProperty(Ma.prototype, "next", {
@@ -913,7 +922,11 @@
913
922
  };
914
923
  }
915
924
  else {
916
- var exclusionValue = { "d+1": preList.dataset[1].c, d: preList.dataset[0].c, "d-1": 0 };
925
+ var exclusionValue = {
926
+ "d+1": preList.dataset[1].c,
927
+ d: preList.dataset[0].c,
928
+ "d-1": 0,
929
+ };
917
930
  if (preList.dataset.length > type) {
918
931
  exclusionValue["d-1"] = exclusionValue.d;
919
932
  preList.dataset.shift();
@@ -950,7 +963,7 @@
950
963
  var res = [];
951
964
  for (var i = 0; i < list.length; i++) {
952
965
  if (i < 4)
953
- res[i] = __assign$4(__assign$4({}, list[i]), { ma5: null });
966
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma5: 0 });
954
967
  else {
955
968
  var sum = list
956
969
  .slice(i - 4, i + 1)
@@ -970,7 +983,7 @@
970
983
  var res = [];
971
984
  for (var i = 0; i < list.length; i++) {
972
985
  if (i < 9)
973
- res[i] = __assign$4(__assign$4({}, list[i]), { ma10: null });
986
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma10: 0 });
974
987
  else {
975
988
  var sum = list
976
989
  .slice(i - 9, i + 1)
@@ -990,7 +1003,7 @@
990
1003
  var res = [];
991
1004
  for (var i = 0; i < list.length; i++) {
992
1005
  if (i < 19)
993
- res[i] = __assign$4(__assign$4({}, list[i]), { ma20: null });
1006
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma20: 0 });
994
1007
  else {
995
1008
  var sum = list
996
1009
  .slice(i - 19, i + 1)
@@ -1010,7 +1023,7 @@
1010
1023
  var res = [];
1011
1024
  for (var i = 0; i < list.length; i++) {
1012
1025
  if (i < 59)
1013
- res[i] = __assign$4(__assign$4({}, list[i]), { ma60: null });
1026
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma60: 0 });
1014
1027
  else {
1015
1028
  var sum = list
1016
1029
  .slice(i - 59, i + 1)
@@ -1030,7 +1043,7 @@
1030
1043
  var res = [];
1031
1044
  for (var i = 0; i < list.length; i++) {
1032
1045
  if (i < self - 1)
1033
- res[i] = __assign$4(__assign$4({}, list[i]), { ma: null });
1046
+ res[i] = __assign$4(__assign$4({}, list[i]), { ma: 0 });
1034
1047
  else {
1035
1048
  var sum = list
1036
1049
  .slice(i - (self - 1), i + 1)
@@ -1066,11 +1079,11 @@
1066
1079
  value: function (data) {
1067
1080
  return {
1068
1081
  dataset: [data],
1069
- ema12: null,
1070
- ema26: null,
1082
+ ema12: 0,
1083
+ ema26: 0,
1071
1084
  dif: [],
1072
- macd: null,
1073
- osc: null,
1085
+ macd: 0,
1086
+ osc: 0,
1074
1087
  };
1075
1088
  }
1076
1089
  });
@@ -1084,7 +1097,7 @@
1084
1097
  if (preList.dataset.length > 34)
1085
1098
  preList.dataset.shift();
1086
1099
  // EMA12
1087
- var ema12 = null;
1100
+ var ema12 = 0;
1088
1101
  if (preList.dataset.length === 12) {
1089
1102
  ema12 = this.getStartEMA(preList.dataset);
1090
1103
  ema12 = (ema12 * 11) / 13 + (this.getDI(data) * 2) / 13;
@@ -1095,7 +1108,7 @@
1095
1108
  ema12 = Math.round(ema12 * 100) / 100;
1096
1109
  }
1097
1110
  // EMA26
1098
- var ema26 = null;
1111
+ var ema26 = 0;
1099
1112
  if (preList.dataset.length === 26) {
1100
1113
  ema26 = this.getStartEMA(preList.dataset);
1101
1114
  ema26 = (ema26 * 25) / 27 + (this.getDI(data) * 2) / 27;
@@ -1106,36 +1119,33 @@
1106
1119
  ema26 = Math.round(ema26 * 100) / 100;
1107
1120
  }
1108
1121
  // DIF
1109
- var dif = null;
1122
+ var dif = 0;
1110
1123
  if (ema12 && ema26) {
1111
1124
  dif = ema12 - ema26;
1112
1125
  dif = Math.round(dif * 100) / 100;
1113
1126
  (_a = preList.dif) === null || _a === void 0 ? void 0 : _a.push(dif);
1114
- if (preList.dif.length > 9)
1115
- (_b = preList.dif) === null || _b === void 0 ? void 0 : _b.shift();
1116
1127
  }
1117
1128
  // MACD & OSC
1118
- var macd = null;
1119
- var osc = null;
1129
+ var macd = 0;
1130
+ var osc = 0;
1120
1131
  if (preList.dif.length === 9) {
1121
- if (preList.macd === null) {
1122
- macd = preList.dif.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
1123
- for (var i = 0; i < 9; i++) {
1124
- var item = preList.dif[i];
1125
- macd = macd + ((item - macd) * 2) / 10;
1126
- macd = Math.round(macd * 100) / 100;
1127
- osc = item - macd;
1128
- osc = Math.round(osc * 100) / 100;
1129
- }
1130
- }
1131
- else {
1132
- macd = preList.macd + ((dif - preList.macd) * 2) / 10;
1132
+ macd = preList.dif.reduce(function (accumulator, currentValue) { return accumulator + currentValue; });
1133
+ for (var i = 0; i < 9; i++) {
1134
+ var item = preList.dif[i];
1135
+ macd = macd + ((item - macd) * 2) / 10;
1133
1136
  macd = Math.round(macd * 100) / 100;
1134
- var item = preList.dif[preList.dif.length - 1];
1135
1137
  osc = item - macd;
1136
1138
  osc = Math.round(osc * 100) / 100;
1137
1139
  }
1138
1140
  }
1141
+ else if (preList.dif.length > 9) {
1142
+ macd = preList.macd + ((dif - preList.macd) * 2) / 10;
1143
+ macd = Math.round(macd * 100) / 100;
1144
+ var item = preList.dif[preList.dif.length - 1];
1145
+ osc = item - macd;
1146
+ osc = Math.round(osc * 100) / 100;
1147
+ (_b = preList.dif) === null || _b === void 0 ? void 0 : _b.shift();
1148
+ }
1139
1149
  return {
1140
1150
  dataset: preList.dataset,
1141
1151
  ema12: ema12,
@@ -1285,7 +1295,7 @@
1285
1295
  };
1286
1296
  return __assign$2.apply(this, arguments);
1287
1297
  };
1288
- var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {
1298
+ var __spreadArray$1 = (undefined && undefined.__spreadArray) || function (to, from, pack) {
1289
1299
  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
1290
1300
  if (ar || !(i in from)) {
1291
1301
  if (!ar) ar = Array.prototype.slice.call(from, 0, i);
@@ -1308,6 +1318,7 @@
1308
1318
  obvList: [data.v],
1309
1319
  preClose: data.c,
1310
1320
  obvMa: 0,
1321
+ type: type,
1311
1322
  };
1312
1323
  }
1313
1324
  });
@@ -1334,11 +1345,12 @@
1334
1345
  var sum = obvList.reduce(function (pre, current) { return pre + current; }, 0);
1335
1346
  var vma = Math.round((sum / type) * 100) / 100;
1336
1347
  return {
1337
- dataset: __spreadArray(__spreadArray([], preList.dataset, true), [data], false),
1348
+ dataset: __spreadArray$1(__spreadArray$1([], preList.dataset, true), [data], false),
1338
1349
  obv: obv,
1339
1350
  preClose: currentClose,
1340
1351
  obvList: obvList,
1341
- obvMa: vma
1352
+ obvMa: vma,
1353
+ type: type,
1342
1354
  };
1343
1355
  }
1344
1356
  });
@@ -1540,14 +1552,68 @@
1540
1552
  return parseInt(res);
1541
1553
  }
1542
1554
  case Mode.StringToNumber: {
1543
- var res = date.toString().replace("-", "").replace("-", "");
1555
+ var res = date.replace(/-/g, '');
1544
1556
  return parseInt(res);
1545
1557
  }
1546
1558
  default:
1547
- return "please setting mode";
1559
+ throw new Error("请设置正确的模式");
1548
1560
  }
1549
1561
  }
1550
1562
 
1563
+ var __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {
1564
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
1565
+ if (ar || !(i in from)) {
1566
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
1567
+ ar[i] = from[i];
1568
+ }
1569
+ }
1570
+ return to.concat(ar || Array.prototype.slice.call(from));
1571
+ };
1572
+ var Week = /** @class */ (function () {
1573
+ function Week() {
1574
+ }
1575
+ Object.defineProperty(Week.prototype, "init", {
1576
+ enumerable: false,
1577
+ configurable: true,
1578
+ writable: true,
1579
+ value: function (data) {
1580
+ return { dataset: [data], week: [] };
1581
+ }
1582
+ });
1583
+ Object.defineProperty(Week.prototype, "next", {
1584
+ enumerable: false,
1585
+ configurable: true,
1586
+ writable: true,
1587
+ value: function (data, preList) {
1588
+ var year = data.t
1589
+ .toString()
1590
+ .replace(/^(\d{4})(\d{2})(\d{2})$/, "$1-$2-$3");
1591
+ var day = new Date(year).getDay();
1592
+ if (day === 6 || day === 0)
1593
+ return { dataset: preList.dataset, week: preList.week };
1594
+ preList.dataset.push(data);
1595
+ if (day === 5) {
1596
+ var week = {
1597
+ o: preList.dataset[0]["o"],
1598
+ c: preList.dataset[preList.dataset.length - 1]["c"],
1599
+ t: preList.dataset[preList.dataset.length - 1]["t"],
1600
+ h: Math.max.apply(Math, preList.dataset.map(function (item) { return item.h; })),
1601
+ l: Math.min.apply(Math, preList.dataset.map(function (item) { return item.l; })),
1602
+ v: preList.dataset.reduce(function (pre, current) { return pre + current.v; }, 0),
1603
+ };
1604
+ return { dataset: preList.dataset, week: __spreadArray(__spreadArray([], preList.week, true), [week], false) };
1605
+ }
1606
+ else {
1607
+ if (day === 1) {
1608
+ preList.dataset = [data];
1609
+ }
1610
+ return { dataset: preList.dataset, week: preList.week };
1611
+ }
1612
+ }
1613
+ });
1614
+ return Week;
1615
+ }());
1616
+
1551
1617
  var Vma = /** @class */ (function () {
1552
1618
  function Vma() {
1553
1619
  }
@@ -1739,6 +1805,7 @@
1739
1805
  exports.Rsi = Rsi;
1740
1806
  exports.SwingExtremes = SwingExtremes;
1741
1807
  exports.Vma = Vma;
1808
+ exports.Week = Week;
1742
1809
  exports.Williams = Williams;
1743
1810
  exports.add = add;
1744
1811
  exports.calcSeasonalIndicesNoTrend = calcSeasonalIndicesNoTrend;
@@ -1747,7 +1814,6 @@
1747
1814
  exports.exponentialSmoothing = exponentialSmoothing;
1748
1815
  exports.findPeaksByGradient = findPeaksByGradient;
1749
1816
  exports.findTroughByGradient = findTroughByGradient;
1750
- exports.getWeekLine = getWeekLine;
1751
1817
  exports.isJSON = isJSON;
1752
1818
  exports.minus = minus;
1753
1819
  exports.movingAverages = movingAverages;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ch20026103/anysis",
3
- "version": "0.0.15-alpha",
3
+ "version": "0.0.16-beta",
4
4
  "description": "provide many analyze methods in the library.",
5
5
  "keywords": [],
6
6
  "bugs": "git@github.com:cosmic1330/anysis/issues",