@quantform/core 0.7.21 → 0.7.24

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 (194) hide show
  1. package/lib/app.d.ts +12 -0
  2. package/lib/app.d.ts.map +1 -0
  3. package/lib/app.js +35 -0
  4. package/lib/cli/build.d.ts.map +1 -1
  5. package/lib/cli/build.js +8 -18
  6. package/lib/cli/index.js +3 -12
  7. package/lib/cli/internal/script.d.ts +1 -1
  8. package/lib/cli/internal/script.d.ts.map +1 -1
  9. package/lib/cli/internal/script.js +8 -28
  10. package/lib/cli/live.js +10 -22
  11. package/lib/cli/paper.js +10 -22
  12. package/lib/cli/replay.d.ts.map +1 -1
  13. package/lib/cli/replay.js +15 -26
  14. package/lib/index.d.ts +1 -6
  15. package/lib/index.d.ts.map +1 -1
  16. package/lib/index.js +1 -6
  17. package/lib/make-test-module.d.ts.map +1 -1
  18. package/lib/make-test-module.js +18 -20
  19. package/lib/module.d.ts.map +1 -1
  20. package/lib/module.js +9 -24
  21. package/lib/module.spec.js +8 -17
  22. package/lib/replay/use-replay-options.d.ts +5 -4
  23. package/lib/replay/use-replay-options.d.ts.map +1 -1
  24. package/lib/replay/use-replay-options.js +5 -1
  25. package/lib/replay/use-replay-scheduler.d.ts +7 -6
  26. package/lib/replay/use-replay-scheduler.d.ts.map +1 -1
  27. package/lib/replay/use-replay-scheduler.js +64 -70
  28. package/lib/replay/use-replay-storage-buffer.d.ts +3 -2
  29. package/lib/replay/use-replay-storage-buffer.d.ts.map +1 -1
  30. package/lib/replay/use-replay-storage-buffer.js +12 -23
  31. package/lib/replay/use-replay-storage-cursor.d.ts +9 -8
  32. package/lib/replay/use-replay-storage-cursor.d.ts.map +1 -1
  33. package/lib/replay/use-replay-storage-cursor.js +17 -25
  34. package/lib/replay/use-replay-storage.d.ts +5 -4
  35. package/lib/replay/use-replay-storage.d.ts.map +1 -1
  36. package/lib/replay/use-replay-storage.js +32 -39
  37. package/lib/session/use-session-storage.d.ts +1 -1
  38. package/lib/session/use-session-storage.d.ts.map +1 -1
  39. package/lib/session/use-session-storage.js +8 -5
  40. package/lib/shared/environment.js +1 -1
  41. package/lib/shared/index.d.ts +0 -1
  42. package/lib/shared/index.d.ts.map +1 -1
  43. package/lib/shared/index.js +0 -1
  44. package/lib/simulator/use-simulator.spec.js +17 -30
  45. package/lib/storage/in-memory/in-memory-storage.d.ts.map +1 -1
  46. package/lib/storage/in-memory/in-memory-storage.factory.js +2 -2
  47. package/lib/storage/in-memory/in-memory-storage.js +56 -55
  48. package/lib/storage/in-memory/in-memory-storage.spec.js +90 -100
  49. package/lib/storage/storage.d.ts +9 -8
  50. package/lib/storage/storage.d.ts.map +1 -1
  51. package/lib/storage/storage.js +8 -2
  52. package/lib/storage/use-cache.d.ts +1 -1
  53. package/lib/storage/use-cache.d.ts.map +1 -1
  54. package/lib/storage/use-cache.js +5 -5
  55. package/lib/storage/use-cache.spec.js +14 -25
  56. package/lib/storage/use-storage.d.ts +1 -1
  57. package/lib/storage/use-storage.d.ts.map +1 -1
  58. package/lib/storage/use-storage.js +9 -6
  59. package/lib/use-execution-mode.js +2 -2
  60. package/lib/use-hash.spec.js +3 -6
  61. package/lib/use-logger.d.ts +1 -1
  62. package/lib/use-logger.d.ts.map +1 -1
  63. package/lib/use-logger.js +10 -7
  64. package/lib/use-memo.spec.js +14 -25
  65. package/lib/use-socket.d.ts +3 -2
  66. package/lib/use-socket.d.ts.map +1 -1
  67. package/lib/use-socket.js +2 -2
  68. package/lib/use-timestamp.d.ts +14 -1
  69. package/lib/use-timestamp.d.ts.map +1 -1
  70. package/lib/use-timestamp.js +30 -3
  71. package/lib/with-request.d.ts +2 -1
  72. package/lib/with-request.d.ts.map +1 -1
  73. package/lib/with-request.js +4 -13
  74. package/package.json +6 -10
  75. package/src/app.ts +52 -0
  76. package/src/cli/build.ts +11 -6
  77. package/src/cli/internal/script.ts +25 -54
  78. package/src/cli/replay.ts +13 -2
  79. package/src/index.ts +1 -6
  80. package/src/make-test-module.ts +12 -2
  81. package/src/module.ts +0 -3
  82. package/src/replay/use-replay-options.ts +7 -3
  83. package/src/replay/use-replay-scheduler.ts +75 -67
  84. package/src/replay/use-replay-storage-buffer.ts +2 -1
  85. package/src/replay/use-replay-storage-cursor.ts +33 -28
  86. package/src/replay/use-replay-storage.ts +36 -27
  87. package/src/session/use-session-storage.ts +7 -5
  88. package/src/shared/index.ts +0 -1
  89. package/src/storage/in-memory/in-memory-storage.spec.ts +55 -54
  90. package/src/storage/in-memory/in-memory-storage.ts +24 -7
  91. package/src/storage/storage.ts +16 -7
  92. package/src/storage/use-cache.ts +4 -4
  93. package/src/storage/use-storage.ts +8 -6
  94. package/src/use-hash.spec.ts +3 -6
  95. package/src/use-logger.ts +9 -6
  96. package/src/use-socket.ts +5 -5
  97. package/src/use-timestamp.ts +41 -3
  98. package/src/with-request.ts +3 -3
  99. package/lib/asset/asset.d.ts +0 -41
  100. package/lib/asset/asset.d.ts.map +0 -1
  101. package/lib/asset/asset.js +0 -76
  102. package/lib/asset/asset.spec.d.ts +0 -2
  103. package/lib/asset/asset.spec.d.ts.map +0 -1
  104. package/lib/asset/asset.spec.js +0 -54
  105. package/lib/asset/index.d.ts +0 -2
  106. package/lib/asset/index.d.ts.map +0 -1
  107. package/lib/asset/index.js +0 -17
  108. package/lib/component/distinct-until-timesamp-changed.d.ts +0 -5
  109. package/lib/component/distinct-until-timesamp-changed.d.ts.map +0 -1
  110. package/lib/component/distinct-until-timesamp-changed.js +0 -9
  111. package/lib/component/error.d.ts +0 -17
  112. package/lib/component/error.d.ts.map +0 -1
  113. package/lib/component/error.js +0 -33
  114. package/lib/component/index.d.ts +0 -8
  115. package/lib/component/index.d.ts.map +0 -1
  116. package/lib/component/index.js +0 -23
  117. package/lib/component/ohlc-operator.d.ts +0 -11
  118. package/lib/component/ohlc-operator.d.ts.map +0 -1
  119. package/lib/component/ohlc-operator.js +0 -69
  120. package/lib/component/ohlc-operator.spec.d.ts +0 -2
  121. package/lib/component/ohlc-operator.spec.d.ts.map +0 -1
  122. package/lib/component/ohlc-operator.spec.js +0 -110
  123. package/lib/component/ohlc.d.ts +0 -12
  124. package/lib/component/ohlc.d.ts.map +0 -1
  125. package/lib/component/ohlc.js +0 -20
  126. package/lib/component/ohlc.spec.d.ts +0 -2
  127. package/lib/component/ohlc.spec.d.ts.map +0 -1
  128. package/lib/component/ohlc.spec.js +0 -25
  129. package/lib/component/timeframe.d.ts +0 -15
  130. package/lib/component/timeframe.d.ts.map +0 -1
  131. package/lib/component/timeframe.js +0 -21
  132. package/lib/core.d.ts +0 -3
  133. package/lib/core.d.ts.map +0 -1
  134. package/lib/core.js +0 -17
  135. package/lib/instrument/commission/commission.d.ts +0 -16
  136. package/lib/instrument/commission/commission.d.ts.map +0 -1
  137. package/lib/instrument/commission/commission.js +0 -28
  138. package/lib/instrument/commission/commission.spec.d.ts +0 -2
  139. package/lib/instrument/commission/commission.spec.d.ts.map +0 -1
  140. package/lib/instrument/commission/commission.spec.js +0 -30
  141. package/lib/instrument/index.d.ts +0 -3
  142. package/lib/instrument/index.d.ts.map +0 -1
  143. package/lib/instrument/index.js +0 -18
  144. package/lib/instrument/instrument.d.ts +0 -28
  145. package/lib/instrument/instrument.d.ts.map +0 -1
  146. package/lib/instrument/instrument.js +0 -53
  147. package/lib/instrument/instrument.spec.d.ts +0 -2
  148. package/lib/instrument/instrument.spec.d.ts.map +0 -1
  149. package/lib/instrument/instrument.spec.js +0 -51
  150. package/lib/operators.d.ts +0 -5
  151. package/lib/operators.d.ts.map +0 -1
  152. package/lib/operators.js +0 -16
  153. package/lib/shared/datetime.d.ts +0 -3
  154. package/lib/shared/datetime.d.ts.map +0 -1
  155. package/lib/shared/datetime.js +0 -7
  156. package/lib/strategy.d.ts +0 -15
  157. package/lib/strategy.d.ts.map +0 -1
  158. package/lib/strategy.js +0 -26
  159. package/lib/strategy.spec.d.ts +0 -2
  160. package/lib/strategy.spec.d.ts.map +0 -1
  161. package/lib/strategy.spec.js +0 -34
  162. package/lib/when-socket.d.ts +0 -8
  163. package/lib/when-socket.d.ts.map +0 -1
  164. package/lib/when-socket.js +0 -53
  165. package/lib/with-memo.d.ts +0 -5
  166. package/lib/with-memo.d.ts.map +0 -1
  167. package/lib/with-memo.js +0 -20
  168. package/lib/with-memo.spec.d.ts +0 -2
  169. package/lib/with-memo.spec.d.ts.map +0 -1
  170. package/lib/with-memo.spec.js +0 -47
  171. package/src/asset/asset.spec.ts +0 -70
  172. package/src/asset/asset.ts +0 -89
  173. package/src/asset/index.ts +0 -1
  174. package/src/component/distinct-until-timesamp-changed.ts +0 -11
  175. package/src/component/error.ts +0 -32
  176. package/src/component/index.ts +0 -7
  177. package/src/component/ohlc-operator.spec.ts +0 -125
  178. package/src/component/ohlc-operator.ts +0 -122
  179. package/src/component/ohlc.spec.ts +0 -30
  180. package/src/component/ohlc.ts +0 -18
  181. package/src/component/timeframe.ts +0 -17
  182. package/src/core.ts +0 -16
  183. package/src/instrument/commission/commission.spec.ts +0 -35
  184. package/src/instrument/commission/commission.ts +0 -27
  185. package/src/instrument/index.ts +0 -2
  186. package/src/instrument/instrument.spec.ts +0 -76
  187. package/src/instrument/instrument.ts +0 -65
  188. package/src/operators.ts +0 -18
  189. package/src/shared/datetime.ts +0 -5
  190. package/src/strategy.spec.ts +0 -42
  191. package/src/strategy.ts +0 -36
  192. package/src/when-socket.ts +0 -61
  193. package/src/with-memo.spec.ts +0 -46
  194. package/src/with-memo.ts +0 -33
@@ -1,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ohlcCompleted = exports.mergeOhlc = exports.ohlc = void 0;
4
- const rxjs_1 = require("rxjs");
5
- const component_1 = require("../component");
6
- function aggregate(candle, timeframe, value, timestamp) {
7
- const frame = (0, component_1.tf)(timestamp, timeframe);
8
- if (!candle) {
9
- return new component_1.Ohlc(frame, value, value, value, value);
10
- }
11
- if (candle.timestamp === frame) {
12
- candle.apply(value);
13
- return undefined;
14
- }
15
- else {
16
- return new component_1.Ohlc(frame, candle.close, value, value, value);
17
- }
18
- }
19
- function ohlc(timeframe, fn, candleToStartWith) {
20
- return function (source) {
21
- let candle = candleToStartWith;
22
- return source.pipe((0, rxjs_1.map)(it => {
23
- const newCandle = aggregate(candle, timeframe, fn(it), it.timestamp);
24
- if (newCandle) {
25
- const prevCandle = candle;
26
- candle = newCandle;
27
- if (candleToStartWith && candleToStartWith.timestamp < newCandle.timestamp) {
28
- candleToStartWith = undefined;
29
- if (prevCandle) {
30
- return [prevCandle, candle];
31
- }
32
- return [candle];
33
- }
34
- }
35
- if (candleToStartWith) {
36
- candleToStartWith = undefined;
37
- }
38
- if (candle) {
39
- return [candle];
40
- }
41
- return [];
42
- }), (0, rxjs_1.mergeMap)(it => it), (0, rxjs_1.share)());
43
- };
44
- }
45
- exports.ohlc = ohlc;
46
- function mergeOhlc(timeframe, fn, history$) {
47
- return function (source$) {
48
- return (0, rxjs_1.concat)(history$.pipe((0, rxjs_1.skipLast)(1)), history$.pipe((0, rxjs_1.last)(), (0, rxjs_1.switchMap)(lastHistoricalCandle => source$.pipe(ohlc(timeframe, fn, lastHistoricalCandle))), (0, rxjs_1.share)()));
49
- };
50
- }
51
- exports.mergeOhlc = mergeOhlc;
52
- function ohlcCompleted() {
53
- let currCandle;
54
- return (source) => source.pipe((0, rxjs_1.map)(it => {
55
- if (!currCandle) {
56
- currCandle = it;
57
- return undefined;
58
- }
59
- else {
60
- if (currCandle.timestamp !== it.timestamp) {
61
- const prevCandle = currCandle;
62
- currCandle = it;
63
- return prevCandle;
64
- }
65
- return undefined;
66
- }
67
- }), (0, rxjs_1.filter)(it => it !== undefined), (0, rxjs_1.share)());
68
- }
69
- exports.ohlcCompleted = ohlcCompleted;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ohlc-operator.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ohlc-operator.spec.d.ts","sourceRoot":"","sources":["../../src/component/ohlc-operator.spec.ts"],"names":[],"mappings":""}
@@ -1,110 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const rxjs_1 = require("rxjs");
4
- const component_1 = require("../component");
5
- const shared_1 = require("../shared");
6
- describe(component_1.ohlc.name, () => {
7
- test('should aggregate and pipe ohlc updates', done => {
8
- const input$ = (0, rxjs_1.from)([
9
- { timestamp: 1, rate: (0, shared_1.d)(1) },
10
- { timestamp: 2, rate: (0, shared_1.d)(2) },
11
- { timestamp: 3, rate: (0, shared_1.d)(3) },
12
- { timestamp: 4, rate: shared_1.d.Zero },
13
- { timestamp: 5, rate: (0, shared_1.d)(7) },
14
- { timestamp: 6, rate: (0, shared_1.d)(8) }
15
- ]);
16
- const output = [
17
- new component_1.Ohlc(0, (0, shared_1.d)(1), (0, shared_1.d)(1), (0, shared_1.d)(1), (0, shared_1.d)(1)),
18
- new component_1.Ohlc(0, (0, shared_1.d)(1), (0, shared_1.d)(2), (0, shared_1.d)(1), (0, shared_1.d)(2)),
19
- new component_1.Ohlc(0, (0, shared_1.d)(1), (0, shared_1.d)(3), (0, shared_1.d)(1), (0, shared_1.d)(3)),
20
- new component_1.Ohlc(0, (0, shared_1.d)(1), (0, shared_1.d)(3), shared_1.d.Zero, shared_1.d.Zero),
21
- new component_1.Ohlc(5, shared_1.d.Zero, (0, shared_1.d)(7), (0, shared_1.d)(7), (0, shared_1.d)(7)),
22
- new component_1.Ohlc(5, shared_1.d.Zero, (0, shared_1.d)(8), (0, shared_1.d)(7), (0, shared_1.d)(8))
23
- ].reverse();
24
- input$.pipe((0, component_1.ohlc)(5, it => it.rate)).subscribe({
25
- next: it => {
26
- expect(it).toEqual(output.pop());
27
- if (output.length === 0) {
28
- done();
29
- }
30
- }
31
- });
32
- });
33
- });
34
- describe(component_1.ohlcCompleted.name, () => {
35
- test('should aggregate and pipe distinct completed ohlc', done => {
36
- const input$ = (0, rxjs_1.from)([
37
- { timestamp: 1, rate: (0, shared_1.d)(1) },
38
- { timestamp: 2, rate: (0, shared_1.d)(2) },
39
- { timestamp: 3, rate: (0, shared_1.d)(3) },
40
- { timestamp: 4, rate: shared_1.d.Zero },
41
- { timestamp: 5, rate: (0, shared_1.d)(7) },
42
- { timestamp: 6, rate: (0, shared_1.d)(8) }
43
- ]);
44
- input$
45
- .pipe((0, component_1.ohlc)(5, it => it.rate), (0, component_1.ohlcCompleted)())
46
- .subscribe({
47
- next: it => {
48
- expect(it).toEqual(new component_1.Ohlc(0, (0, shared_1.d)(1), (0, shared_1.d)(3), shared_1.d.Zero, shared_1.d.Zero));
49
- done();
50
- }
51
- });
52
- });
53
- });
54
- describe(component_1.mergeOhlc.name, () => {
55
- test('should pipe and merge ohlc from history', done => {
56
- const history$ = (0, rxjs_1.from)([
57
- new component_1.Ohlc(1, (0, shared_1.d)(1), (0, shared_1.d)(1.5), (0, shared_1.d)(0.5), (0, shared_1.d)(2)),
58
- new component_1.Ohlc(2, (0, shared_1.d)(2), (0, shared_1.d)(2.5), (0, shared_1.d)(1.5), (0, shared_1.d)(3)),
59
- new component_1.Ohlc(3, (0, shared_1.d)(3), (0, shared_1.d)(3.5), (0, shared_1.d)(2.5), (0, shared_1.d)(4))
60
- ]);
61
- const input$ = (0, rxjs_1.from)([
62
- { timestamp: 3, rate: (0, shared_1.d)(5) },
63
- { timestamp: 4, rate: (0, shared_1.d)(3) },
64
- { timestamp: 5, rate: (0, shared_1.d)(4) }
65
- ]);
66
- const output = [
67
- new component_1.Ohlc(1, (0, shared_1.d)(1), (0, shared_1.d)(1.5), (0, shared_1.d)(0.5), (0, shared_1.d)(2)),
68
- new component_1.Ohlc(2, (0, shared_1.d)(2), (0, shared_1.d)(2.5), (0, shared_1.d)(1.5), (0, shared_1.d)(3)),
69
- new component_1.Ohlc(3, (0, shared_1.d)(3), (0, shared_1.d)(5), (0, shared_1.d)(2.5), (0, shared_1.d)(5)),
70
- new component_1.Ohlc(4, (0, shared_1.d)(5), (0, shared_1.d)(3), (0, shared_1.d)(3), (0, shared_1.d)(3)),
71
- new component_1.Ohlc(5, (0, shared_1.d)(3), (0, shared_1.d)(4), (0, shared_1.d)(4), (0, shared_1.d)(4))
72
- ].reverse();
73
- input$.pipe((0, component_1.mergeOhlc)(1, it => it.rate, history$)).subscribe({
74
- next: it => {
75
- expect(it).toEqual(output.pop());
76
- if (output.length === 0) {
77
- done();
78
- }
79
- }
80
- });
81
- });
82
- test('should pipe and not merge ohlc from history', done => {
83
- const history$ = (0, rxjs_1.from)([
84
- new component_1.Ohlc(1, (0, shared_1.d)(1), (0, shared_1.d)(1.5), (0, shared_1.d)(0.5), (0, shared_1.d)(2)),
85
- new component_1.Ohlc(2, (0, shared_1.d)(2), (0, shared_1.d)(2.5), (0, shared_1.d)(1.5), (0, shared_1.d)(3)),
86
- new component_1.Ohlc(3, (0, shared_1.d)(3), (0, shared_1.d)(3.5), (0, shared_1.d)(2.5), (0, shared_1.d)(4))
87
- ]);
88
- const input$ = (0, rxjs_1.from)([
89
- { timestamp: 4, rate: (0, shared_1.d)(5) },
90
- { timestamp: 5, rate: (0, shared_1.d)(3) },
91
- { timestamp: 6, rate: (0, shared_1.d)(4) }
92
- ]);
93
- const output = [
94
- new component_1.Ohlc(1, (0, shared_1.d)(1), (0, shared_1.d)(1.5), (0, shared_1.d)(0.5), (0, shared_1.d)(2)),
95
- new component_1.Ohlc(2, (0, shared_1.d)(2), (0, shared_1.d)(2.5), (0, shared_1.d)(1.5), (0, shared_1.d)(3)),
96
- new component_1.Ohlc(3, (0, shared_1.d)(3), (0, shared_1.d)(3.5), (0, shared_1.d)(2.5), (0, shared_1.d)(4)),
97
- new component_1.Ohlc(4, (0, shared_1.d)(4), (0, shared_1.d)(5), (0, shared_1.d)(5), (0, shared_1.d)(5)),
98
- new component_1.Ohlc(5, (0, shared_1.d)(5), (0, shared_1.d)(3), (0, shared_1.d)(3), (0, shared_1.d)(3)),
99
- new component_1.Ohlc(6, (0, shared_1.d)(3), (0, shared_1.d)(4), (0, shared_1.d)(4), (0, shared_1.d)(4))
100
- ].reverse();
101
- input$.pipe((0, component_1.mergeOhlc)(1, it => it.rate, history$)).subscribe({
102
- next: it => {
103
- expect(it).toEqual(output.pop());
104
- if (output.length === 0) {
105
- done();
106
- }
107
- }
108
- });
109
- });
110
- });
@@ -1,12 +0,0 @@
1
- import { decimal, timestamp } from '../shared';
2
- export declare class Ohlc {
3
- timestamp: timestamp;
4
- open: decimal;
5
- high: decimal;
6
- low: decimal;
7
- close: decimal;
8
- volume?: decimal | undefined;
9
- constructor(timestamp: timestamp, open: decimal, high: decimal, low: decimal, close: decimal, volume?: decimal | undefined);
10
- apply(value: decimal): void;
11
- }
12
- //# sourceMappingURL=ohlc.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ohlc.d.ts","sourceRoot":"","sources":["../../src/component/ohlc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEjD,qBAAa,IAAI;IAEN,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,OAAO;IACd,MAAM,CAAC;gBALP,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,OAAO,EACd,MAAM,CAAC,qBAAS;IAGzB,KAAK,CAAC,KAAK,EAAE,OAAO;CAKrB"}
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Ohlc = void 0;
4
- const shared_1 = require("../shared");
5
- class Ohlc {
6
- constructor(timestamp, open, high, low, close, volume) {
7
- this.timestamp = timestamp;
8
- this.open = open;
9
- this.high = high;
10
- this.low = low;
11
- this.close = close;
12
- this.volume = volume;
13
- }
14
- apply(value) {
15
- this.high = shared_1.decimal.max(this.high, value);
16
- this.low = shared_1.decimal.min(this.low, value);
17
- this.close = value;
18
- }
19
- }
20
- exports.Ohlc = Ohlc;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ohlc.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ohlc.spec.d.ts","sourceRoot":"","sources":["../../src/component/ohlc.spec.ts"],"names":[],"mappings":""}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const component_1 = require("../component");
4
- const shared_1 = require("../shared");
5
- describe('Ohlc', () => {
6
- test('should construct a ohlc', () => {
7
- const timestamp = (0, shared_1.now)();
8
- const sut = new component_1.Ohlc(timestamp, (0, shared_1.d)(2), (0, shared_1.d)(4), (0, shared_1.d)(1), (0, shared_1.d)(3));
9
- expect(sut.timestamp).toEqual(timestamp);
10
- expect(sut.open).toEqual((0, shared_1.d)(2));
11
- expect(sut.high).toEqual((0, shared_1.d)(4));
12
- expect(sut.low).toEqual((0, shared_1.d)(1));
13
- expect(sut.close).toEqual((0, shared_1.d)(3));
14
- });
15
- test('should modify a ohlc', () => {
16
- const timestamp = (0, shared_1.now)();
17
- const sut = new component_1.Ohlc(timestamp, (0, shared_1.d)(2), (0, shared_1.d)(4), (0, shared_1.d)(1), (0, shared_1.d)(3));
18
- sut.apply((0, shared_1.d)(10));
19
- expect(sut.timestamp).toEqual(timestamp);
20
- expect(sut.open).toEqual((0, shared_1.d)(2));
21
- expect(sut.high).toEqual((0, shared_1.d)(10));
22
- expect(sut.low).toEqual((0, shared_1.d)(1));
23
- expect(sut.close).toEqual((0, shared_1.d)(10));
24
- });
25
- });
@@ -1,15 +0,0 @@
1
- export declare class Timeframe {
2
- static S1: number;
3
- static M1: number;
4
- static M5: number;
5
- static M15: number;
6
- static M30: number;
7
- static H1: number;
8
- static H4: number;
9
- static H6: number;
10
- static H12: number;
11
- static D1: number;
12
- static W1: number;
13
- }
14
- export declare function tf(timestamp: number, timeframe: number): number;
15
- //# sourceMappingURL=timeframe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timeframe.d.ts","sourceRoot":"","sources":["../../src/component/timeframe.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS;IACpB,MAAM,CAAC,EAAE,SAAQ;IACjB,MAAM,CAAC,EAAE,SAAqB;IAC9B,MAAM,CAAC,EAAE,SAAoB;IAC7B,MAAM,CAAC,GAAG,SAAoB;IAC9B,MAAM,CAAC,GAAG,SAAqB;IAC/B,MAAM,CAAC,EAAE,SAAqB;IAC9B,MAAM,CAAC,EAAE,SAAoB;IAC7B,MAAM,CAAC,EAAE,SAAoB;IAC7B,MAAM,CAAC,GAAG,SAAoB;IAC9B,MAAM,CAAC,EAAE,SAAqB;IAC9B,MAAM,CAAC,EAAE,SAAoB;CAC9B;AAED,wBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D"}
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tf = exports.Timeframe = void 0;
4
- class Timeframe {
5
- }
6
- Timeframe.S1 = 1000;
7
- Timeframe.M1 = Timeframe.S1 * 60;
8
- Timeframe.M5 = Timeframe.M1 * 5;
9
- Timeframe.M15 = Timeframe.M5 * 3;
10
- Timeframe.M30 = Timeframe.M15 * 2;
11
- Timeframe.H1 = Timeframe.M30 * 2;
12
- Timeframe.H4 = Timeframe.H1 * 4;
13
- Timeframe.H6 = Timeframe.H1 * 6;
14
- Timeframe.H12 = Timeframe.H6 * 2;
15
- Timeframe.D1 = Timeframe.H12 * 2;
16
- Timeframe.W1 = Timeframe.D1 * 7;
17
- exports.Timeframe = Timeframe;
18
- function tf(timestamp, timeframe) {
19
- return timestamp - (timestamp % timeframe);
20
- }
21
- exports.tf = tf;
package/lib/core.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { Dependency } from './module';
2
- export declare function core(): Dependency[];
3
- //# sourceMappingURL=core.d.ts.map
package/lib/core.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQzC,wBAAgB,IAAI,IAAI,UAAU,EAAE,CAOnC"}
package/lib/core.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.core = void 0;
4
- const use_memo_1 = require("./use-memo");
5
- const storage_1 = require("./storage");
6
- const use_storage_factory_1 = require("./storage/use-storage-factory");
7
- const use_execution_mode_1 = require("./use-execution-mode");
8
- const use_logger_1 = require("./use-logger");
9
- function core() {
10
- return [
11
- use_memo_1.useMemo.options(),
12
- (0, use_logger_1.logger)(new use_logger_1.ConsoleLoggerFactory()),
13
- use_execution_mode_1.useExecutionMode.paperOptions({ recording: false }),
14
- use_storage_factory_1.useStorageFactory.options(new storage_1.InMemoryStorageFactory())
15
- ];
16
- }
17
- exports.core = core;
@@ -1,16 +0,0 @@
1
- import { decimal } from '../../shared';
2
- export declare class Commission {
3
- readonly makerRate: decimal;
4
- readonly takerRate: decimal;
5
- static readonly Zero: Commission;
6
- constructor(makerRate: decimal, takerRate: decimal);
7
- calculateMakerFee(value: decimal): import("decimal.js").default;
8
- calculateTakerFee(value: decimal): import("decimal.js").default;
9
- applyMakerFee(value: decimal): decimal;
10
- applyTakerFee(value: decimal): decimal;
11
- }
12
- export declare function commissionPercentOf(fees: {
13
- maker: decimal;
14
- taker: decimal;
15
- }): Commission;
16
- //# sourceMappingURL=commission.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commission.d.ts","sourceRoot":"","sources":["../../../src/instrument/commission/commission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEzC,qBAAa,UAAU;IAGT,QAAQ,CAAC,SAAS,EAAE,OAAO;IAAE,QAAQ,CAAC,SAAS,EAAE,OAAO;IAFpE,MAAM,CAAC,QAAQ,CAAC,IAAI,aAAyD;gBAExD,SAAS,EAAE,OAAO,EAAW,SAAS,EAAE,OAAO;IAEpE,iBAAiB,CAAC,KAAK,EAAE,OAAO;IAIhC,iBAAiB,CAAC,KAAK,EAAE,OAAO;IAIhC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAItC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAGvC;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,cAE3E"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.commissionPercentOf = exports.Commission = void 0;
4
- const shared_1 = require("../../shared");
5
- class Commission {
6
- constructor(makerRate, takerRate) {
7
- this.makerRate = makerRate;
8
- this.takerRate = takerRate;
9
- }
10
- calculateMakerFee(value) {
11
- return value.mul(this.makerRate);
12
- }
13
- calculateTakerFee(value) {
14
- return value.mul(this.takerRate);
15
- }
16
- applyMakerFee(value) {
17
- return value.minus(this.calculateMakerFee(value));
18
- }
19
- applyTakerFee(value) {
20
- return value.minus(this.calculateTakerFee(value));
21
- }
22
- }
23
- Commission.Zero = commissionPercentOf({ maker: shared_1.d.Zero, taker: shared_1.d.Zero });
24
- exports.Commission = Commission;
25
- function commissionPercentOf(fees) {
26
- return new Commission(fees.maker.div(100.0), fees.taker.div(100.0));
27
- }
28
- exports.commissionPercentOf = commissionPercentOf;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=commission.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commission.spec.d.ts","sourceRoot":"","sources":["../../../src/instrument/commission/commission.spec.ts"],"names":[],"mappings":""}
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const shared_1 = require("../../shared");
4
- const commission_1 = require("./commission");
5
- describe(commission_1.Commission.name, () => {
6
- test('should construct a Commission', () => {
7
- const sut = (0, commission_1.commissionPercentOf)({
8
- maker: (0, shared_1.d)(0.1),
9
- taker: (0, shared_1.d)(0.2)
10
- });
11
- expect(sut.makerRate).toEqual((0, shared_1.d)(0.001));
12
- expect(sut.takerRate).toEqual((0, shared_1.d)(0.002));
13
- });
14
- test('should calculate a maker fee', () => {
15
- const sut = (0, commission_1.commissionPercentOf)({
16
- maker: (0, shared_1.d)(0.1),
17
- taker: (0, shared_1.d)(0.2)
18
- });
19
- expect(sut.calculateMakerFee((0, shared_1.d)(2000))).toEqual((0, shared_1.d)(2));
20
- expect(sut.applyMakerFee((0, shared_1.d)(2000))).toEqual((0, shared_1.d)(1998));
21
- });
22
- test('should calculate a taker fee', () => {
23
- const sut = (0, commission_1.commissionPercentOf)({
24
- maker: (0, shared_1.d)(0.1),
25
- taker: (0, shared_1.d)(0.2)
26
- });
27
- expect(sut.calculateTakerFee((0, shared_1.d)(2000))).toEqual((0, shared_1.d)(4));
28
- expect(sut.applyTakerFee((0, shared_1.d)(2000))).toEqual((0, shared_1.d)(1996));
29
- });
30
- });
@@ -1,3 +0,0 @@
1
- export * from '../instrument/instrument';
2
- export * from '../instrument/commission/commission';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/instrument/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uCAAuC,CAAC"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("../instrument/instrument"), exports);
18
- __exportStar(require("../instrument/commission/commission"), exports);
@@ -1,28 +0,0 @@
1
- import { Asset, AssetSelector } from '../asset';
2
- import { Commission } from './commission/commission';
3
- export declare const InstrumentSelectorSeparator = "-";
4
- export declare class MissingInstrumentError extends Error {
5
- constructor(instrument: InstrumentSelector);
6
- }
7
- export declare class InstrumentSelector {
8
- readonly id: string;
9
- readonly base: AssetSelector;
10
- readonly quote: AssetSelector;
11
- constructor(base: string, quote: string, adapter: string);
12
- toString(): string;
13
- }
14
- /**
15
- * Represents trading market which is made up by two trading assets (base and quoted).
16
- */
17
- export declare class Instrument extends InstrumentSelector {
18
- timestamp: number;
19
- readonly base: Asset;
20
- readonly quote: Asset;
21
- readonly raw: string;
22
- commission: Commission;
23
- readonly cross: Instrument | undefined;
24
- leverage: number | undefined;
25
- constructor(timestamp: number, base: Asset, quote: Asset, raw: string, commission: Commission);
26
- }
27
- export declare function instrumentOf(selector: string): InstrumentSelector;
28
- //# sourceMappingURL=instrument.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrument.d.ts","sourceRoot":"","sources":["../../src/instrument/instrument.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAA0B,MAAM,YAAY,CAAC;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAE/C,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,UAAU,EAAE,kBAAkB;CAG3C;AAED,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;gBAElB,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAOxD,QAAQ;CAGT;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,kBAAkB;IAKvC,SAAS,EAAE,MAAM;aACN,IAAI,EAAE,KAAK;aACX,KAAK,EAAE,KAAK;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM;IACb,UAAU,EAAE,UAAU;IAR/B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,CAAC;IACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAa;gBAGhC,SAAS,EAAE,MAAM,EACN,IAAI,EAAE,KAAK,EACX,KAAK,EAAE,KAAK,EACrB,GAAG,EAAE,MAAM,EACb,UAAU,EAAE,UAAU;CAQhC;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAYjE"}
@@ -1,53 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.instrumentOf = exports.Instrument = exports.InstrumentSelector = exports.MissingInstrumentError = exports.InstrumentSelectorSeparator = void 0;
4
- const asset_1 = require("../asset");
5
- const component_1 = require("../component");
6
- exports.InstrumentSelectorSeparator = '-';
7
- class MissingInstrumentError extends Error {
8
- constructor(instrument) {
9
- super(`Missing instrument: ${instrument}`);
10
- }
11
- }
12
- exports.MissingInstrumentError = MissingInstrumentError;
13
- class InstrumentSelector {
14
- constructor(base, quote, adapter) {
15
- this.base = new asset_1.AssetSelector(base.toLowerCase(), adapter.toLowerCase());
16
- this.quote = new asset_1.AssetSelector(quote.toLowerCase(), adapter.toLowerCase());
17
- this.id = `${this.base.id}${exports.InstrumentSelectorSeparator}${this.quote.name}`;
18
- }
19
- toString() {
20
- return this.id;
21
- }
22
- }
23
- exports.InstrumentSelector = InstrumentSelector;
24
- /**
25
- * Represents trading market which is made up by two trading assets (base and quoted).
26
- */
27
- class Instrument extends InstrumentSelector {
28
- constructor(timestamp, base, quote, raw, commission) {
29
- super(base.name, quote.name, base.adapterName);
30
- this.timestamp = timestamp;
31
- this.base = base;
32
- this.quote = quote;
33
- this.raw = raw;
34
- this.commission = commission;
35
- this.leverage = undefined;
36
- if (base.adapterName != quote.adapterName) {
37
- throw new component_1.AdapterMismatchError();
38
- }
39
- }
40
- }
41
- exports.Instrument = Instrument;
42
- function instrumentOf(selector) {
43
- const [adapterName, asset, ...rest] = selector.split(asset_1.AssetSelectorSeparator);
44
- if (!adapterName || !asset || rest.length) {
45
- throw new component_1.InvalidInstrumentSelectorError(selector);
46
- }
47
- const [baseAssetName, quoteAssetName] = asset.split(exports.InstrumentSelectorSeparator);
48
- if (!baseAssetName || !quoteAssetName) {
49
- throw new component_1.InvalidInstrumentSelectorError(selector);
50
- }
51
- return new InstrumentSelector(baseAssetName, quoteAssetName, adapterName);
52
- }
53
- exports.instrumentOf = instrumentOf;
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=instrument.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instrument.spec.d.ts","sourceRoot":"","sources":["../../src/instrument/instrument.spec.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const component_1 = require("../component");
4
- const shared_1 = require("../shared");
5
- describe(component_1.Instrument.name, () => {
6
- test('should construct a instrument', () => {
7
- const sut = new component_1.Instrument(0, new component_1.Asset('abc', 'xyz', 4), new component_1.Asset('def', 'xyz', 4), 'abc-def', (0, component_1.commissionPercentOf)({
8
- maker: shared_1.d.Zero,
9
- taker: shared_1.d.Zero
10
- }));
11
- expect(sut.base.name).toEqual('abc');
12
- expect(sut.base.adapterName).toEqual('xyz');
13
- expect(sut.quote.name).toEqual('def');
14
- expect(sut.quote.adapterName).toEqual('xyz');
15
- expect(sut.id).toEqual('xyz:abc-def');
16
- });
17
- });
18
- describe(component_1.InstrumentSelector.name, () => {
19
- test('should construct a instrument selector', () => {
20
- const sut = (0, component_1.instrumentOf)('xyz:abc-def');
21
- expect(sut.base.name).toEqual('abc');
22
- expect(sut.base.adapterName).toEqual('xyz');
23
- expect(sut.quote.name).toEqual('def');
24
- expect(sut.quote.adapterName).toEqual('xyz');
25
- expect(sut.id).toEqual('xyz:abc-def');
26
- });
27
- test('should construct a instrument selector capital case', () => {
28
- const sut = (0, component_1.instrumentOf)('XYZ:ABC-DEF');
29
- expect(sut.base.name).toEqual('abc');
30
- expect(sut.base.adapterName).toEqual('xyz');
31
- expect(sut.quote.name).toEqual('def');
32
- expect(sut.quote.adapterName).toEqual('xyz');
33
- expect(sut.id).toEqual('xyz:abc-def');
34
- });
35
- test('should throw invalid format message for missing separator', () => {
36
- const fn = () => (0, component_1.instrumentOf)('xyzabc-def');
37
- expect(fn).toThrowError();
38
- });
39
- test('should throw invalid format message for multiple separators', () => {
40
- const fn = () => (0, component_1.instrumentOf)('xyz:abc:-def');
41
- expect(fn).toThrowError();
42
- });
43
- test('should throw invalid format message for missing pair name', () => {
44
- const fn = () => (0, component_1.instrumentOf)('xyz:');
45
- expect(fn).toThrowError();
46
- });
47
- test('should throw invalid format message for missing adapter name', () => {
48
- const fn = () => (0, component_1.assetOf)(':abc-def');
49
- expect(fn).toThrowError();
50
- });
51
- });
@@ -1,5 +0,0 @@
1
- import { Observable } from 'rxjs';
2
- export declare function asReadonly<T>(): (input: Observable<T>) => Observable<Readonly<T>>;
3
- export declare function defined<T>(): (observable: Observable<T | undefined | null>) => Observable<T | null | undefined>;
4
- export declare function exclude<T, S extends symbol>(s: S): (observable: Observable<T | S>) => Observable<Exclude<T, S>>;
5
- //# sourceMappingURL=operators.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../src/operators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAE,MAAM,MAAM,CAAC;AAE/C,wBAAgB,UAAU,CAAC,CAAC,aACX,WAAW,CAAC,CAAC,6BAC7B;AAED,wBAAgB,OAAO,CAAC,CAAC,kBACH,WAAW,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC,sCAErD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC,gBAC3B,WAAW,CAAC,GAAG,CAAC,CAAC,+BAKtC"}
package/lib/operators.js DELETED
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.exclude = exports.defined = exports.asReadonly = void 0;
4
- const rxjs_1 = require("rxjs");
5
- function asReadonly() {
6
- return (input) => input.pipe((0, rxjs_1.map)(it => it));
7
- }
8
- exports.asReadonly = asReadonly;
9
- function defined() {
10
- return (observable) => observable.pipe((0, rxjs_1.filter)(it => it !== undefined && it !== null));
11
- }
12
- exports.defined = defined;
13
- function exclude(s) {
14
- return (observable) => observable.pipe((0, rxjs_1.filter)(it => it !== s), (0, rxjs_1.map)(it => it));
15
- }
16
- exports.exclude = exclude;
@@ -1,3 +0,0 @@
1
- export type timestamp = number;
2
- export declare function now(): timestamp;
3
- //# sourceMappingURL=datetime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"datetime.d.ts","sourceRoot":"","sources":["../../src/shared/datetime.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,wBAAgB,GAAG,IAAI,SAAS,CAE/B"}
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.now = void 0;
4
- function now() {
5
- return new Date().getTime();
6
- }
7
- exports.now = now;