@quantform/core 0.3.263 → 0.3.271

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 (268) hide show
  1. package/dist/adapter/adapter-aggregate.d.ts +2 -2
  2. package/dist/adapter/adapter-aggregate.js.map +1 -1
  3. package/dist/adapter/adapter.d.ts +5 -6
  4. package/dist/adapter/adapter.js.map +1 -1
  5. package/dist/adapter/backtester/backtester-adapter.d.ts +6 -6
  6. package/dist/adapter/backtester/backtester-adapter.js +5 -9
  7. package/dist/adapter/backtester/backtester-adapter.js.map +1 -1
  8. package/dist/adapter/backtester/backtester-cursor.d.ts +2 -2
  9. package/dist/adapter/backtester/backtester-cursor.spec.js +9 -9
  10. package/dist/adapter/backtester/backtester-cursor.spec.js.map +1 -1
  11. package/dist/adapter/backtester/backtester-streamer.d.ts +6 -4
  12. package/dist/adapter/backtester/backtester-streamer.js +5 -5
  13. package/dist/adapter/backtester/backtester-streamer.js.map +1 -1
  14. package/dist/adapter/backtester/backtester-streamer.spec.js +9 -11
  15. package/dist/adapter/backtester/backtester-streamer.spec.js.map +1 -1
  16. package/dist/adapter/index.d.ts +2 -0
  17. package/dist/adapter/index.js +2 -0
  18. package/dist/adapter/index.js.map +1 -1
  19. package/dist/adapter/paper/index.d.ts +2 -2
  20. package/dist/adapter/paper/index.js +2 -2
  21. package/dist/adapter/paper/index.js.map +1 -1
  22. package/dist/adapter/paper/paper-adapter.d.ts +5 -5
  23. package/dist/adapter/paper/paper-adapter.js +9 -12
  24. package/dist/adapter/paper/paper-adapter.js.map +1 -1
  25. package/dist/adapter/paper/paper-adapter.spec.js +5 -7
  26. package/dist/adapter/paper/paper-adapter.spec.js.map +1 -1
  27. package/dist/adapter/paper/{executor/paper-margin-executor.d.ts → simulator/paper-margin-simulator.d.ts} +3 -3
  28. package/dist/adapter/paper/{executor/paper-margin-executor.js → simulator/paper-margin-simulator.js} +11 -11
  29. package/dist/adapter/paper/simulator/paper-margin-simulator.js.map +1 -0
  30. package/dist/adapter/paper/{executor/paper-executor.d.ts → simulator/paper-simulator.d.ts} +2 -2
  31. package/dist/adapter/paper/{executor/paper-executor.js → simulator/paper-simulator.js} +7 -7
  32. package/dist/adapter/paper/simulator/paper-simulator.js.map +1 -0
  33. package/dist/adapter/paper/{executor/paper-spot-executor.d.ts → simulator/paper-spot-simulator.d.ts} +3 -3
  34. package/dist/adapter/paper/{executor/paper-spot-executor.js → simulator/paper-spot-simulator.js} +17 -17
  35. package/dist/adapter/paper/simulator/paper-spot-simulator.js.map +1 -0
  36. package/dist/{session/session-optimizer.spec.d.ts → adapter/paper/simulator/paper-spot-simulator.spec.d.ts} +0 -0
  37. package/dist/adapter/paper/simulator/paper-spot-simulator.spec.js +49 -0
  38. package/dist/adapter/paper/simulator/paper-spot-simulator.spec.js.map +1 -0
  39. package/dist/bootstrap.d.ts +2 -2
  40. package/dist/bootstrap.js +7 -9
  41. package/dist/bootstrap.js.map +1 -1
  42. package/dist/domain/balance.d.ts +1 -1
  43. package/dist/domain/candle.d.ts +14 -0
  44. package/dist/domain/candle.js +65 -1
  45. package/dist/domain/candle.js.map +1 -1
  46. package/dist/domain/candle.spec.js +11 -13
  47. package/dist/domain/candle.spec.js.map +1 -1
  48. package/dist/domain/index.d.ts +7 -6
  49. package/dist/domain/index.js +7 -6
  50. package/dist/domain/index.js.map +1 -1
  51. package/dist/domain/order.d.ts +1 -1
  52. package/dist/domain/order.js.map +1 -1
  53. package/dist/domain/orderbook.d.ts +1 -1
  54. package/dist/domain/position.d.ts +2 -2
  55. package/dist/domain/position.js +3 -3
  56. package/dist/domain/position.js.map +1 -1
  57. package/dist/{session → domain}/session.d.ts +14 -3
  58. package/dist/{session → domain}/session.js +17 -18
  59. package/dist/domain/session.js.map +1 -0
  60. package/dist/{session → domain}/session.spec.d.ts +0 -0
  61. package/dist/{session → domain}/session.spec.js +3 -3
  62. package/dist/domain/session.spec.js.map +1 -0
  63. package/dist/{session/session-statement.d.ts → domain/statement.d.ts} +2 -3
  64. package/dist/{session/session-statement.js → domain/statement.js} +1 -1
  65. package/dist/domain/statement.js.map +1 -0
  66. package/dist/domain/trade.d.ts +1 -1
  67. package/dist/index.d.ts +4 -8
  68. package/dist/index.js +4 -8
  69. package/dist/index.js.map +1 -1
  70. package/dist/indicator/atr.js +3 -3
  71. package/dist/indicator/atr.js.map +1 -1
  72. package/dist/indicator/cross.js +3 -3
  73. package/dist/indicator/cross.js.map +1 -1
  74. package/dist/indicator/donchian.js +3 -4
  75. package/dist/indicator/donchian.js.map +1 -1
  76. package/dist/indicator/drawdown.js +3 -3
  77. package/dist/indicator/drawdown.js.map +1 -1
  78. package/dist/indicator/ema.js +3 -3
  79. package/dist/indicator/ema.js.map +1 -1
  80. package/dist/indicator/envelope.js +3 -3
  81. package/dist/indicator/envelope.js.map +1 -1
  82. package/dist/indicator/index.d.ts +3 -3
  83. package/dist/indicator/index.js +3 -3
  84. package/dist/indicator/index.js.map +1 -1
  85. package/dist/indicator/macd.js +2 -3
  86. package/dist/indicator/macd.js.map +1 -1
  87. package/dist/indicator/min-max.js +3 -3
  88. package/dist/indicator/min-max.js.map +1 -1
  89. package/dist/indicator/rma.js +3 -3
  90. package/dist/indicator/rma.js.map +1 -1
  91. package/dist/indicator/sma.js +2 -3
  92. package/dist/indicator/sma.js.map +1 -1
  93. package/dist/indicator/swma.js +3 -3
  94. package/dist/indicator/swma.js.map +1 -1
  95. package/dist/indicator/tma.js +3 -3
  96. package/dist/indicator/tma.js.map +1 -1
  97. package/dist/indicator/trailing.js +3 -3
  98. package/dist/indicator/trailing.js.map +1 -1
  99. package/dist/indicator/truerange.js +3 -3
  100. package/dist/indicator/truerange.js.map +1 -1
  101. package/dist/indicator/truerange.spec.js +2 -2
  102. package/dist/indicator/truerange.spec.js.map +1 -1
  103. package/dist/indicator/wma.js +3 -3
  104. package/dist/indicator/wma.js.map +1 -1
  105. package/dist/ipc.d.ts +1 -1
  106. package/dist/ipc.js +3 -3
  107. package/dist/ipc.js.map +1 -1
  108. package/dist/ipc.spec.js +4 -5
  109. package/dist/ipc.spec.js.map +1 -1
  110. package/dist/shared/index.d.ts +4 -4
  111. package/dist/shared/index.js +4 -4
  112. package/dist/shared/index.js.map +1 -1
  113. package/dist/shared/policy.js +1 -1
  114. package/dist/shared/policy.js.map +1 -1
  115. package/dist/shared/task.d.ts +1 -1
  116. package/dist/storage/feed.d.ts +1 -1
  117. package/dist/storage/feed.js.map +1 -1
  118. package/dist/storage/index.d.ts +1 -1
  119. package/dist/storage/index.js +1 -1
  120. package/dist/storage/index.js.map +1 -1
  121. package/dist/storage/measurement.js.map +1 -1
  122. package/dist/storage/storage.js.map +1 -1
  123. package/dist/store/event/index.d.ts +4 -4
  124. package/dist/store/event/index.js +4 -4
  125. package/dist/store/event/index.js.map +1 -1
  126. package/dist/store/event/store-balance.event.d.ts +1 -1
  127. package/dist/store/event/store-balance.event.js +1 -1
  128. package/dist/store/event/store-balance.event.js.map +1 -1
  129. package/dist/store/event/store-balance.event.spec.js +3 -3
  130. package/dist/store/event/store-balance.event.spec.js.map +1 -1
  131. package/dist/store/event/store-candle.event.d.ts +2 -2
  132. package/dist/store/event/store-candle.event.js +2 -2
  133. package/dist/store/event/store-candle.event.js.map +1 -1
  134. package/dist/store/event/store-candle.event.spec.js +1 -1
  135. package/dist/store/event/store-candle.event.spec.js.map +1 -1
  136. package/dist/store/event/store-instrument.event.d.ts +1 -1
  137. package/dist/store/event/store-instrument.event.js +1 -1
  138. package/dist/store/event/store-instrument.event.js.map +1 -1
  139. package/dist/store/event/store-instrument.event.spec.js +1 -1
  140. package/dist/store/event/store-instrument.event.spec.js.map +1 -1
  141. package/dist/store/event/store-order.event.d.ts +1 -1
  142. package/dist/store/event/store-order.event.js +6 -6
  143. package/dist/store/event/store-order.event.js.map +1 -1
  144. package/dist/store/event/store-order.event.spec.js +2 -2
  145. package/dist/store/event/store-order.event.spec.js.map +1 -1
  146. package/dist/store/event/store-orderbook.event.d.ts +1 -1
  147. package/dist/store/event/store-orderbook.event.js +1 -1
  148. package/dist/store/event/store-orderbook.event.js.map +1 -1
  149. package/dist/store/event/store-position.event.d.ts +1 -1
  150. package/dist/store/event/store-position.event.js +1 -1
  151. package/dist/store/event/store-position.event.js.map +1 -1
  152. package/dist/store/event/store-trade.event.d.ts +1 -1
  153. package/dist/store/event/store-trade.event.js +1 -1
  154. package/dist/store/event/store-trade.event.js.map +1 -1
  155. package/dist/store/event/store-trade.event.spec.js +2 -2
  156. package/dist/store/event/store-trade.event.spec.js.map +1 -1
  157. package/dist/store/index.d.ts +1 -0
  158. package/dist/store/index.js +1 -0
  159. package/dist/store/index.js.map +1 -1
  160. package/dist/store/store.d.ts +2 -5
  161. package/dist/store/store.js +4 -8
  162. package/dist/store/store.js.map +1 -1
  163. package/dist/store/store.state.d.ts +1 -1
  164. package/dist/tests/backtester-adapter.spec.js +8 -15
  165. package/dist/tests/backtester-adapter.spec.js.map +1 -1
  166. package/dist/tests/session.spec.d.ts +0 -1
  167. package/dist/tests/session.spec.js +0 -2
  168. package/dist/tsconfig.tsbuildinfo +1 -1
  169. package/package.json +1 -1
  170. package/src/adapter/adapter-aggregate.ts +2 -3
  171. package/src/adapter/adapter.ts +5 -6
  172. package/src/adapter/backtester/backtester-adapter.ts +8 -8
  173. package/src/adapter/backtester/backtester-cursor.spec.ts +1 -1
  174. package/src/adapter/backtester/backtester-cursor.ts +2 -2
  175. package/src/adapter/backtester/backtester-streamer.spec.ts +1 -3
  176. package/src/adapter/backtester/backtester-streamer.ts +7 -8
  177. package/src/adapter/index.ts +2 -0
  178. package/src/adapter/paper/index.ts +2 -2
  179. package/src/adapter/paper/paper-adapter.spec.ts +6 -8
  180. package/src/adapter/paper/paper-adapter.ts +9 -11
  181. package/src/adapter/paper/{executor/paper-margin-executor.ts → simulator/paper-margin-simulator.ts} +5 -5
  182. package/src/adapter/paper/{executor/paper-executor.ts → simulator/paper-simulator.ts} +4 -4
  183. package/src/adapter/paper/simulator/paper-spot-simulator.spec.ts +87 -0
  184. package/src/adapter/paper/{executor/paper-spot-executor.ts → simulator/paper-spot-simulator.ts} +6 -6
  185. package/src/bootstrap.ts +5 -5
  186. package/src/domain/balance.ts +1 -1
  187. package/src/domain/candle.spec.ts +3 -5
  188. package/src/domain/candle.ts +103 -0
  189. package/src/domain/index.ts +7 -6
  190. package/src/domain/order.ts +2 -2
  191. package/src/domain/orderbook.ts +1 -1
  192. package/src/domain/position.ts +2 -3
  193. package/src/{session → domain}/session.spec.ts +3 -3
  194. package/src/{session → domain}/session.ts +61 -8
  195. package/src/{session/session-statement.ts → domain/statement.ts} +1 -2
  196. package/src/domain/trade.ts +1 -1
  197. package/src/index.ts +4 -8
  198. package/src/indicator/atr.ts +1 -2
  199. package/src/indicator/cross.ts +3 -4
  200. package/src/indicator/donchian.ts +2 -3
  201. package/src/indicator/drawdown.ts +2 -3
  202. package/src/indicator/ema.ts +1 -2
  203. package/src/indicator/envelope.ts +1 -2
  204. package/src/indicator/index.ts +3 -3
  205. package/src/indicator/macd.ts +1 -2
  206. package/src/indicator/min-max.ts +1 -2
  207. package/src/indicator/rma.ts +1 -2
  208. package/src/indicator/sma.ts +1 -2
  209. package/src/indicator/swma.ts +1 -2
  210. package/src/indicator/tma.ts +1 -2
  211. package/src/indicator/trailing.ts +3 -4
  212. package/src/indicator/truerange.spec.ts +2 -2
  213. package/src/indicator/truerange.ts +1 -2
  214. package/src/indicator/window.ts +1 -1
  215. package/src/indicator/wma.ts +1 -2
  216. package/src/ipc.spec.ts +6 -7
  217. package/src/ipc.ts +6 -7
  218. package/src/shared/index.ts +4 -4
  219. package/src/shared/policy.ts +1 -1
  220. package/src/shared/task.ts +1 -1
  221. package/src/shared/topic.spec.ts +1 -1
  222. package/src/storage/feed.ts +20 -1
  223. package/src/storage/index.ts +1 -1
  224. package/src/storage/measurement.ts +19 -0
  225. package/src/storage/storage.ts +37 -0
  226. package/src/store/event/index.ts +4 -4
  227. package/src/store/event/store-balance.event.spec.ts +3 -3
  228. package/src/store/event/store-balance.event.ts +2 -2
  229. package/src/store/event/store-candle.event.spec.ts +1 -1
  230. package/src/store/event/store-candle.event.ts +5 -5
  231. package/src/store/event/store-instrument.event.spec.ts +1 -1
  232. package/src/store/event/store-instrument.event.ts +2 -2
  233. package/src/store/event/store-order.event.spec.ts +2 -2
  234. package/src/store/event/store-order.event.ts +7 -7
  235. package/src/store/event/store-orderbook.event.ts +2 -2
  236. package/src/store/event/store-position.event.ts +2 -2
  237. package/src/store/event/store-trade.event.spec.ts +2 -2
  238. package/src/store/event/store-trade.event.ts +2 -2
  239. package/src/store/index.ts +1 -0
  240. package/src/store/store.state.ts +7 -7
  241. package/src/store/store.ts +6 -9
  242. package/src/tests/backtester-adapter.spec.ts +8 -15
  243. package/src/tests/session.spec.ts +0 -3
  244. package/dist/adapter/paper/executor/paper-executor.js.map +0 -1
  245. package/dist/adapter/paper/executor/paper-margin-executor.js.map +0 -1
  246. package/dist/adapter/paper/executor/paper-spot-executor.js.map +0 -1
  247. package/dist/domain/candle-builder.d.ts +0 -16
  248. package/dist/domain/candle-builder.js +0 -70
  249. package/dist/domain/candle-builder.js.map +0 -1
  250. package/dist/session/index.d.ts +0 -4
  251. package/dist/session/index.js +0 -17
  252. package/dist/session/index.js.map +0 -1
  253. package/dist/session/session-descriptor.d.ts +0 -15
  254. package/dist/session/session-descriptor.js +0 -3
  255. package/dist/session/session-descriptor.js.map +0 -1
  256. package/dist/session/session-optimizer.d.ts +0 -10
  257. package/dist/session/session-optimizer.js +0 -62
  258. package/dist/session/session-optimizer.js.map +0 -1
  259. package/dist/session/session-optimizer.spec.js +0 -103
  260. package/dist/session/session-optimizer.spec.js.map +0 -1
  261. package/dist/session/session-statement.js.map +0 -1
  262. package/dist/session/session.js.map +0 -1
  263. package/dist/session/session.spec.js.map +0 -1
  264. package/src/domain/candle-builder.ts +0 -104
  265. package/src/session/index.ts +0 -4
  266. package/src/session/session-descriptor.ts +0 -53
  267. package/src/session/session-optimizer.spec.ts +0 -86
  268. package/src/session/session-optimizer.ts +0 -81
@@ -1,86 +0,0 @@
1
- import { Timeframe } from '../domain';
2
- import { SessionOptimizer, fit, SessionOptimizerGenerator } from './session-optimizer';
3
-
4
- describe('session optimizer tests', () => {
5
- test('should ignore not provided value for property', () => {
6
- class Target {
7
- @fit('timeframe')
8
- timeframe = Timeframe.H1;
9
- }
10
-
11
- const sut = new Target();
12
-
13
- expect(sut.timeframe).toBe(Timeframe.H1);
14
- });
15
-
16
- test('should ignore not provided descendant value for property', () => {
17
- class Target {
18
- @fit('timeframe.daily')
19
- timeframe = Timeframe.H1;
20
- }
21
-
22
- const sut = new Target();
23
-
24
- expect(sut.timeframe).toBe(Timeframe.H1);
25
- });
26
-
27
- test('should set provided value for property', () => {
28
- class Target {
29
- @fit('timeframe')
30
- timeframe = Timeframe.H1;
31
- }
32
-
33
- SessionOptimizer.source = {
34
- timeframe: Timeframe.D1
35
- };
36
-
37
- const sut = new Target();
38
-
39
- expect(sut.timeframe).toBe(Timeframe.D1);
40
- });
41
-
42
- test('should set provided descendant value for property', () => {
43
- class Target {
44
- @fit('timeframe.daily')
45
- timeframe = Timeframe.H1;
46
- }
47
-
48
- SessionOptimizer.source = {
49
- timeframe: {
50
- daily: Timeframe.D1
51
- }
52
- };
53
-
54
- const sut = new Target();
55
-
56
- expect(sut.timeframe).toBe(Timeframe.D1);
57
- });
58
- });
59
-
60
- describe('optimizer generator tests', () => {
61
- test('should generate optimized input', () => {
62
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
63
- class Target {
64
- @fit('target.timeframe', [Timeframe.D1, Timeframe.H1])
65
- timeframe;
66
- @fit('target.length', [7, 14, 21])
67
- length;
68
- @fit('target.size', [0.1, 0.2, 0.3, 0.4])
69
- size;
70
- }
71
-
72
- expect(SessionOptimizerGenerator.count).toBe(24);
73
-
74
- const product = SessionOptimizerGenerator.product();
75
-
76
- expect(product.length).toBe(24);
77
-
78
- expect(product[0].target.timeframe).toBe(Timeframe.D1);
79
- expect(product[0].target.length).toBe(7);
80
- expect(product[0].target.size).toBe(0.1);
81
-
82
- expect(product[23].target.timeframe).toBe(Timeframe.H1);
83
- expect(product[23].target.length).toBe(21);
84
- expect(product[23].target.size).toBe(0.4);
85
- });
86
- });
@@ -1,81 +0,0 @@
1
- export function fit(key: string, generator?: any[]) {
2
- return function (target: any, propertyKey: string) {
3
- let defaultSetterValue;
4
-
5
- if (generator) {
6
- SessionOptimizerGenerator.values[key] = generator;
7
- }
8
-
9
- Object.defineProperty(target, propertyKey, {
10
- get: () => SessionOptimizer.provide(key) ?? defaultSetterValue,
11
- set: (newValue: any) => {
12
- if (!defaultSetterValue) {
13
- defaultSetterValue = newValue;
14
- return;
15
- }
16
-
17
- if (defaultSetterValue == newValue) {
18
- return;
19
- }
20
-
21
- throw new Error('can not set a value of optimized property.');
22
- }
23
- });
24
- };
25
- }
26
-
27
- export class SessionOptimizer {
28
- static source: any = {};
29
-
30
- static provide(key: string): any {
31
- return key
32
- .split('.')
33
- .reduce(
34
- (aggregate, propertyName) => (aggregate ? aggregate[propertyName] : null),
35
- this.source
36
- );
37
- }
38
- }
39
-
40
- export class SessionOptimizerGenerator {
41
- static values: Record<string, any[]> = {};
42
-
43
- static get count(): number {
44
- return Object.values(this.values).reduce(
45
- (aggregate, value) => (aggregate *= value.length),
46
- 1
47
- );
48
- }
49
-
50
- static product(): any[] {
51
- const matrix = [];
52
- const keys = Object.keys(this.values);
53
- const values = Object.values(this.values).reduce(
54
- (a, b) => a.map(x => b.map(y => x.concat(y))).reduce((a, b) => a.concat(b), []),
55
- [[]]
56
- );
57
-
58
- for (const value of values) {
59
- const result = {};
60
-
61
- for (let i = 0; i < keys.length; i++) {
62
- const path = keys[i];
63
- const parts = path.split('.');
64
-
65
- let it = result;
66
-
67
- while (parts.length > 1) {
68
- const part = parts.shift();
69
-
70
- it = it[part] = it[part] || {};
71
- }
72
-
73
- it[parts[0]] = value[i];
74
- }
75
-
76
- matrix.push(result);
77
- }
78
-
79
- return matrix;
80
- }
81
- }