@quantform/core 0.4.11 → 0.5.13

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 (222) hide show
  1. package/dist/adapter/adapter-aggregate.d.ts +4 -2
  2. package/dist/adapter/adapter-aggregate.js +4 -3
  3. package/dist/adapter/adapter-aggregate.js.map +1 -1
  4. package/dist/adapter/adapter.d.ts +3 -2
  5. package/dist/adapter/adapter.js +5 -2
  6. package/dist/adapter/adapter.js.map +1 -1
  7. package/dist/adapter/backtester/backtester-adapter.d.ts +1 -1
  8. package/dist/adapter/backtester/backtester-adapter.js +2 -1
  9. package/dist/adapter/backtester/backtester-adapter.js.map +1 -1
  10. package/dist/adapter/backtester/index.js +5 -1
  11. package/dist/adapter/backtester/index.js.map +1 -1
  12. package/dist/adapter/index.js +5 -1
  13. package/dist/adapter/index.js.map +1 -1
  14. package/dist/adapter/paper/index.js +5 -1
  15. package/dist/adapter/paper/index.js.map +1 -1
  16. package/dist/adapter/paper/paper-adapter.d.ts +1 -1
  17. package/dist/adapter/paper/paper-adapter.js +1 -1
  18. package/dist/adapter/paper/paper-adapter.js.map +1 -1
  19. package/dist/adapter/paper/paper-adapter.spec.js +5 -3
  20. package/dist/adapter/paper/paper-adapter.spec.js.map +1 -1
  21. package/dist/adapter/paper/simulator/paper-margin-simulator.d.ts +1 -1
  22. package/dist/adapter/paper/simulator/paper-margin-simulator.js.map +1 -1
  23. package/dist/adapter/paper/simulator/paper-simulator.d.ts +1 -1
  24. package/dist/adapter/paper/simulator/paper-simulator.js.map +1 -1
  25. package/dist/adapter/paper/simulator/paper-spot-simulator.d.ts +1 -1
  26. package/dist/adapter/paper/simulator/paper-spot-simulator.js +1 -1
  27. package/dist/adapter/paper/simulator/paper-spot-simulator.js.map +1 -1
  28. package/dist/bootstrap.js +31 -15
  29. package/dist/bootstrap.js.map +1 -1
  30. package/dist/cli/build.d.ts +1 -0
  31. package/dist/cli/build.js +16 -0
  32. package/dist/cli/build.js.map +1 -0
  33. package/dist/cli/dev.d.ts +1 -0
  34. package/dist/cli/dev.js +17 -0
  35. package/dist/cli/dev.js.map +1 -0
  36. package/dist/cli/index.d.ts +2 -0
  37. package/dist/cli/index.js +72 -0
  38. package/dist/cli/index.js.map +1 -0
  39. package/dist/cli/internal/workspace.d.ts +8 -0
  40. package/dist/cli/internal/workspace.js +14 -0
  41. package/dist/cli/internal/workspace.js.map +1 -0
  42. package/dist/cli/pull.d.ts +1 -0
  43. package/dist/cli/pull.js +50 -0
  44. package/dist/cli/pull.js.map +1 -0
  45. package/dist/cli/run.d.ts +1 -0
  46. package/dist/cli/run.js +19 -0
  47. package/dist/cli/run.js.map +1 -0
  48. package/dist/cli/test.d.ts +1 -0
  49. package/dist/cli/test.js +37 -0
  50. package/dist/cli/test.js.map +1 -0
  51. package/dist/domain/balance.d.ts +4 -3
  52. package/dist/domain/balance.js +20 -19
  53. package/dist/domain/balance.js.map +1 -1
  54. package/dist/domain/balance.spec.js +2 -2
  55. package/dist/domain/balance.spec.js.map +1 -1
  56. package/dist/domain/candle.d.ts +4 -2
  57. package/dist/domain/candle.js +13 -9
  58. package/dist/domain/candle.js.map +1 -1
  59. package/dist/domain/candle.spec.js.map +1 -1
  60. package/dist/domain/component.d.ts +1 -0
  61. package/dist/domain/index.js +5 -1
  62. package/dist/domain/index.js.map +1 -1
  63. package/dist/domain/instrument.d.ts +1 -0
  64. package/dist/domain/instrument.js +1 -0
  65. package/dist/domain/instrument.js.map +1 -1
  66. package/dist/domain/order.d.ts +3 -2
  67. package/dist/domain/order.js +2 -0
  68. package/dist/domain/order.js.map +1 -1
  69. package/dist/domain/orderbook.d.ts +1 -0
  70. package/dist/domain/orderbook.js +1 -0
  71. package/dist/domain/orderbook.js.map +1 -1
  72. package/dist/domain/position.d.ts +1 -0
  73. package/dist/domain/position.js +1 -0
  74. package/dist/domain/position.js.map +1 -1
  75. package/dist/domain/session.d.ts +4 -18
  76. package/dist/domain/session.js +7 -23
  77. package/dist/domain/session.js.map +1 -1
  78. package/dist/domain/statement.js +11 -11
  79. package/dist/domain/statement.js.map +1 -1
  80. package/dist/domain/trade.d.ts +2 -1
  81. package/dist/domain/trade.js +1 -0
  82. package/dist/domain/trade.js.map +1 -1
  83. package/dist/index.d.ts +0 -1
  84. package/dist/index.js +5 -2
  85. package/dist/index.js.map +1 -1
  86. package/dist/indicator/atr.js.map +1 -1
  87. package/dist/indicator/cross.spec.js.map +1 -1
  88. package/dist/indicator/donchian.js.map +1 -1
  89. package/dist/indicator/ema.js.map +1 -1
  90. package/dist/indicator/ema.spec.js.map +1 -1
  91. package/dist/indicator/envelope.js.map +1 -1
  92. package/dist/indicator/index.js +5 -1
  93. package/dist/indicator/index.js.map +1 -1
  94. package/dist/indicator/macd.js.map +1 -1
  95. package/dist/indicator/min-max.js.map +1 -1
  96. package/dist/indicator/rma.js.map +1 -1
  97. package/dist/indicator/sma.js.map +1 -1
  98. package/dist/indicator/sma.spec.js.map +1 -1
  99. package/dist/indicator/swma.js.map +1 -1
  100. package/dist/indicator/tma.js.map +1 -1
  101. package/dist/indicator/tma.spec.js.map +1 -1
  102. package/dist/indicator/trailing.spec.js.map +1 -1
  103. package/dist/indicator/truerange.js.map +1 -1
  104. package/dist/indicator/truerange.spec.js.map +1 -1
  105. package/dist/indicator/window.js.map +1 -1
  106. package/dist/indicator/wma.js.map +1 -1
  107. package/dist/indicator/wma.spec.js.map +1 -1
  108. package/dist/shared/index.d.ts +0 -2
  109. package/dist/shared/index.js +5 -3
  110. package/dist/shared/index.js.map +1 -1
  111. package/dist/shared/policy.spec.js +2 -6
  112. package/dist/shared/policy.spec.js.map +1 -1
  113. package/dist/storage/cache.d.ts +9 -0
  114. package/dist/storage/cache.js +32 -0
  115. package/dist/storage/cache.js.map +1 -0
  116. package/dist/storage/index.d.ts +1 -0
  117. package/dist/storage/index.js +6 -1
  118. package/dist/storage/index.js.map +1 -1
  119. package/dist/storage/storage.d.ts +7 -0
  120. package/dist/storage/storage.js +11 -1
  121. package/dist/storage/storage.js.map +1 -1
  122. package/dist/store/event/index.js +5 -1
  123. package/dist/store/event/index.js.map +1 -1
  124. package/dist/store/event/store-balance.event.spec.js +3 -3
  125. package/dist/store/event/store-balance.event.spec.js.map +1 -1
  126. package/dist/store/event/store-candle.event.d.ts +1 -1
  127. package/dist/store/event/store-candle.event.js.map +1 -1
  128. package/dist/store/event/store-candle.event.spec.js +1 -1
  129. package/dist/store/event/store-candle.event.spec.js.map +1 -1
  130. package/dist/store/event/store-instrument.event.spec.js +1 -1
  131. package/dist/store/event/store-instrument.event.spec.js.map +1 -1
  132. package/dist/store/event/store-trade.event.spec.js +2 -2
  133. package/dist/store/event/store-trade.event.spec.js.map +1 -1
  134. package/dist/store/index.js +5 -1
  135. package/dist/store/index.js.map +1 -1
  136. package/dist/store/store.js.map +1 -1
  137. package/dist/tests/backtester-adapter.spec.js +2 -1
  138. package/dist/tests/backtester-adapter.spec.js.map +1 -1
  139. package/dist/tsconfig.tsbuildinfo +1 -1
  140. package/package.json +24 -16
  141. package/src/adapter/adapter-aggregate.ts +8 -3
  142. package/src/adapter/adapter.ts +9 -3
  143. package/src/adapter/backtester/backtester-adapter.ts +3 -1
  144. package/src/adapter/paper/paper-adapter.spec.ts +5 -3
  145. package/src/adapter/paper/paper-adapter.ts +1 -1
  146. package/src/adapter/paper/simulator/paper-margin-simulator.ts +1 -1
  147. package/src/adapter/paper/simulator/paper-simulator.ts +2 -1
  148. package/src/adapter/paper/simulator/paper-spot-simulator.ts +2 -2
  149. package/src/bootstrap.ts +47 -18
  150. package/src/cli/build.ts +15 -0
  151. package/src/cli/dev.ts +18 -0
  152. package/src/cli/index.ts +81 -0
  153. package/src/cli/internal/workspace.ts +18 -0
  154. package/src/cli/pull.ts +67 -0
  155. package/src/cli/run.ts +22 -0
  156. package/src/cli/test.ts +50 -0
  157. package/src/domain/balance.spec.ts +2 -2
  158. package/src/domain/balance.ts +20 -19
  159. package/src/domain/candle.spec.ts +1 -0
  160. package/src/domain/candle.ts +20 -10
  161. package/src/domain/component.ts +1 -0
  162. package/src/domain/instrument.ts +1 -0
  163. package/src/domain/order.ts +3 -1
  164. package/src/domain/orderbook.ts +1 -0
  165. package/src/domain/position.ts +2 -0
  166. package/src/domain/session.ts +17 -67
  167. package/src/domain/statement.ts +13 -12
  168. package/src/domain/trade.ts +2 -1
  169. package/src/index.ts +0 -1
  170. package/src/indicator/atr.ts +1 -0
  171. package/src/indicator/cross.spec.ts +1 -0
  172. package/src/indicator/donchian.ts +1 -0
  173. package/src/indicator/ema.spec.ts +1 -0
  174. package/src/indicator/ema.ts +1 -0
  175. package/src/indicator/envelope.ts +1 -0
  176. package/src/indicator/macd.ts +1 -0
  177. package/src/indicator/min-max.ts +1 -0
  178. package/src/indicator/rma.ts +1 -0
  179. package/src/indicator/sma.spec.ts +1 -0
  180. package/src/indicator/sma.ts +1 -0
  181. package/src/indicator/swma.ts +1 -0
  182. package/src/indicator/tma.spec.ts +1 -0
  183. package/src/indicator/tma.ts +1 -0
  184. package/src/indicator/trailing.spec.ts +1 -0
  185. package/src/indicator/truerange.spec.ts +1 -0
  186. package/src/indicator/truerange.ts +1 -0
  187. package/src/indicator/window.ts +1 -0
  188. package/src/indicator/wma.spec.ts +1 -0
  189. package/src/indicator/wma.ts +1 -0
  190. package/src/shared/index.ts +0 -2
  191. package/src/shared/policy.spec.ts +2 -6
  192. package/src/storage/cache.ts +35 -0
  193. package/src/storage/index.ts +1 -0
  194. package/src/storage/storage.ts +15 -0
  195. package/src/store/event/store-balance.event.spec.ts +3 -3
  196. package/src/store/event/store-candle.event.spec.ts +1 -1
  197. package/src/store/event/store-candle.event.ts +2 -2
  198. package/src/store/event/store-instrument.event.spec.ts +1 -1
  199. package/src/store/event/store-trade.event.spec.ts +2 -2
  200. package/src/store/store.ts +1 -0
  201. package/src/tests/backtester-adapter.spec.ts +3 -2
  202. package/tsconfig.json +2 -2
  203. package/dist/ipc.d.ts +0 -33
  204. package/dist/ipc.js +0 -244
  205. package/dist/ipc.js.map +0 -1
  206. package/dist/ipc.spec.d.ts +0 -1
  207. package/dist/ipc.spec.js +0 -57
  208. package/dist/ipc.spec.js.map +0 -1
  209. package/dist/shared/task.d.ts +0 -6
  210. package/dist/shared/task.js +0 -25
  211. package/dist/shared/task.js.map +0 -1
  212. package/dist/shared/worker.d.ts +0 -10
  213. package/dist/shared/worker.js +0 -46
  214. package/dist/shared/worker.js.map +0 -1
  215. package/dist/shared/worker.spec.d.ts +0 -1
  216. package/dist/shared/worker.spec.js +0 -18
  217. package/dist/shared/worker.spec.js.map +0 -1
  218. package/src/ipc.spec.ts +0 -73
  219. package/src/ipc.ts +0 -321
  220. package/src/shared/task.ts +0 -30
  221. package/src/shared/worker.spec.ts +0 -25
  222. package/src/shared/worker.ts +0 -55
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getModule = exports.buildDirectory = void 0;
4
+ const path_1 = require("path");
5
+ const shared_1 = require("./../../shared");
6
+ function buildDirectory() {
7
+ return (0, path_1.join)(process.cwd(), (0, shared_1.workingDirectory)(), 'build');
8
+ }
9
+ exports.buildDirectory = buildDirectory;
10
+ async function getModule(name) {
11
+ return await Promise.resolve().then(() => require((0, path_1.join)(buildDirectory(), name)));
12
+ }
13
+ exports.getModule = getModule;
14
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/cli/internal/workspace.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAI5B,2CAAkD;AAOlD,SAAgB,cAAc;IAC5B,OAAO,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAA,yBAAgB,GAAE,EAAE,OAAO,CAAC,CAAC;AAC1D,CAAC;AAFD,wCAEC;AAEM,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,OAAO,2CAAa,IAAA,WAAI,EAAC,cAAc,EAAE,EAAE,IAAI,CAAC,EAAC,CAAC;AACpD,CAAC;AAFD,8BAEC"}
@@ -0,0 +1 @@
1
+ export default function (name: string, instrument: string, options: any): Promise<void>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const cli_progress_1 = require("cli-progress");
4
+ const bootstrap_1 = require("../bootstrap");
5
+ const domain_1 = require("../domain");
6
+ const storage_1 = require("../storage");
7
+ const build_1 = require("./build");
8
+ const workspace_1 = require("./internal/workspace");
9
+ async function default_1(name, instrument, options) {
10
+ if (await (0, build_1.default)()) {
11
+ return;
12
+ }
13
+ const id = options.id ? Number(options.id) : undefined;
14
+ const module = await (0, workspace_1.getModule)(name);
15
+ const bootstrap = new bootstrap_1.Bootstrap(module.descriptor);
16
+ const session = bootstrap.useSessionId(id).paper();
17
+ if (!module.descriptor.storage) {
18
+ throw new Error('Please provide a "storage" property in session descriptor.');
19
+ }
20
+ const from = options.from
21
+ ? Date.parse(options.from)
22
+ : module.descriptor.simulation.from;
23
+ if (!from) {
24
+ throw new Error('Please set a "from" date in session descriptor or provide the date as parameter.');
25
+ }
26
+ const to = options.to ? Date.parse(options.to) : module.descriptor.simulation.to;
27
+ if (!to) {
28
+ throw new Error('Please set a "to" date in session descriptor or provide the date as parameter.');
29
+ }
30
+ await session.awake(undefined);
31
+ const bar = new cli_progress_1.SingleBar({}, cli_progress_1.Presets.shades_classic);
32
+ const feed = new storage_1.Feed(module.descriptor.storage.create('feed'));
33
+ bar.start(100, 0);
34
+ await session.aggregate.feed({
35
+ instrument: (0, domain_1.instrumentOf)(instrument),
36
+ from,
37
+ to,
38
+ destination: feed,
39
+ callback: timestamp => {
40
+ const duration = to - from;
41
+ const completed = timestamp - from;
42
+ bar.update(Math.floor((completed / duration) * 100));
43
+ }
44
+ });
45
+ bar.update(100);
46
+ bar.stop();
47
+ await session.dispose();
48
+ }
49
+ exports.default = default_1;
50
+ //# sourceMappingURL=pull.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.js","sourceRoot":"","sources":["../../src/cli/pull.ts"],"names":[],"mappings":";;AAAA,+CAAkD;AAElD,4CAAyC;AACzC,sCAAyC;AACzC,wCAAkC;AAClC,mCAA4B;AAC5B,oDAAiD;AAElC,KAAK,oBAAW,IAAY,EAAE,UAAkB,EAAE,OAAY;IAC3E,IAAI,MAAM,IAAA,eAAK,GAAE,EAAE;QACjB,OAAO;KACR;IAED,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvD,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;IAErC,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAEnD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;QAC9B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;KAC/E;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;QACvB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAC1B,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;IAEtC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;KACH;IAED,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;IAEjF,IAAI,CAAC,EAAE,EAAE;QACP,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;KACH;IAED,MAAM,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE/B,MAAM,GAAG,GAAG,IAAI,wBAAS,CAAC,EAAE,EAAE,sBAAO,CAAC,cAAc,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAElB,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC;QAC3B,UAAU,EAAE,IAAA,qBAAY,EAAC,UAAU,CAAC;QACpC,IAAI;QACJ,EAAE;QACF,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,SAAS,CAAC,EAAE;YACpB,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC;YAC3B,MAAM,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;YAEnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC;KACF,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,IAAI,EAAE,CAAC;IAEX,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC;AA1DD,4BA0DC"}
@@ -0,0 +1 @@
1
+ export default function (name: any, options: any): Promise<void>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const dotenv = require("dotenv");
4
+ const bootstrap_1 = require("../bootstrap");
5
+ const build_1 = require("./build");
6
+ const workspace_1 = require("./internal/workspace");
7
+ async function default_1(name, options) {
8
+ if (await (0, build_1.default)()) {
9
+ return;
10
+ }
11
+ dotenv.config();
12
+ const id = options.id ? Number(options.id) : undefined;
13
+ const module = await (0, workspace_1.getModule)(name);
14
+ const bootstrap = new bootstrap_1.Bootstrap(module.descriptor);
15
+ const session = bootstrap.useSessionId(id).live();
16
+ await session.awake(module.default);
17
+ }
18
+ exports.default = default_1;
19
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":";;AAAA,iCAAiC;AAEjC,4CAAyC;AACzC,mCAA4B;AAC5B,oDAAiD;AAElC,KAAK,oBAAW,IAAI,EAAE,OAAY;IAC/C,IAAI,MAAM,IAAA,eAAK,GAAE,EAAE;QACjB,OAAO;KACR;IAED,MAAM,CAAC,MAAM,EAAE,CAAC;IAEhB,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvD,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;IAErC,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAElD,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAfD,4BAeC"}
@@ -0,0 +1 @@
1
+ export default function (name: any, options: any): Promise<void>;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const bootstrap_1 = require("../bootstrap");
4
+ const build_1 = require("./build");
5
+ const workspace_1 = require("./internal/workspace");
6
+ async function default_1(name, options) {
7
+ if (await (0, build_1.default)()) {
8
+ return;
9
+ }
10
+ const module = await (0, workspace_1.getModule)(name);
11
+ const bootstrap = new bootstrap_1.Bootstrap(module.descriptor);
12
+ if (!module.descriptor.storage) {
13
+ throw new Error('Please provide a "storage" property in session descriptor.');
14
+ }
15
+ const from = options.from
16
+ ? Date.parse(options.from)
17
+ : module.descriptor.simulation.from;
18
+ if (!from) {
19
+ throw new Error('Please set a "from" date in session descriptor or provide the date as parameter.');
20
+ }
21
+ const to = options.to ? Date.parse(options.to) : module.descriptor.simulation.to;
22
+ if (!to) {
23
+ throw new Error('Please set a "to" date in session descriptor or provide the date as parameter.');
24
+ }
25
+ await new Promise(async (resolve) => {
26
+ const [session] = bootstrap.useBacktestPeriod(from, to).backtest({
27
+ onBacktestCompleted: async () => {
28
+ await session.dispose();
29
+ console.log('backtest completed.');
30
+ resolve();
31
+ }
32
+ });
33
+ await session.awake(module.default);
34
+ });
35
+ }
36
+ exports.default = default_1;
37
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/cli/test.ts"],"names":[],"mappings":";;AACA,4CAAyC;AACzC,mCAA4B;AAC5B,oDAAiD;AAElC,KAAK,oBAAW,IAAI,EAAE,OAAY;IAC/C,IAAI,MAAM,IAAA,eAAK,GAAE,EAAE;QACjB,OAAO;KACR;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;IAErC,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEnD,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;QAC9B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;KAC/E;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;QACvB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAC1B,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;IAEtC,IAAI,CAAC,IAAI,EAAE;QACT,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;KACH;IAED,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;IAEjF,IAAI,CAAC,EAAE,EAAE;QACP,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;KACH;IAED,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,OAAO,EAAC,EAAE;QACtC,MAAM,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC;YAC/D,mBAAmB,EAAE,KAAK,IAAI,EAAE;gBAC9B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBAExB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBAEnC,OAAO,EAAE,CAAC;YACZ,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AA5CD,4BA4CC"}
@@ -4,12 +4,13 @@ import { Component } from './component';
4
4
  import { Position, PositionMode } from './position';
5
5
  export declare class Balance implements Component {
6
6
  readonly asset: Asset;
7
+ kind: string;
7
8
  timestamp: timestamp;
8
9
  readonly maintenanceMarginRate = 1;
9
- private _free;
10
- private _freezed;
10
+ private available;
11
+ private unavailable;
11
12
  get free(): number;
12
- get freezed(): number;
13
+ get locked(): number;
13
14
  get total(): number;
14
15
  position: Record<string, Position>;
15
16
  constructor(asset: Asset);
@@ -4,49 +4,50 @@ exports.Balance = void 0;
4
4
  class Balance {
5
5
  constructor(asset) {
6
6
  this.asset = asset;
7
+ this.kind = 'balance';
7
8
  this.maintenanceMarginRate = 1;
8
- this._free = 0;
9
- this._freezed = 0;
9
+ this.available = 0;
10
+ this.unavailable = 0;
10
11
  this.position = {};
11
12
  }
12
13
  get free() {
13
- return (this._free +
14
+ return (this.available +
14
15
  this.getEstimatedUnrealizedPnL('CROSS') -
15
16
  this.getEstimatedMaintenanceMargin('CROSS'));
16
17
  }
17
- get freezed() {
18
- return this._freezed;
18
+ get locked() {
19
+ return this.unavailable;
19
20
  }
20
21
  get total() {
21
- return (this._free + this._freezed + this.getEstimatedUnrealizedPnL());
22
+ return (this.available + this.unavailable + this.getEstimatedUnrealizedPnL());
22
23
  }
23
24
  transact(amount) {
24
- if (this._free + amount < 0) {
25
- throw new Error(`invalid balance amount has: ${this._free} wants: ${amount}`);
25
+ if (this.available + amount < 0) {
26
+ throw new Error(`invalid balance amount has: ${this.available} wants: ${amount}`);
26
27
  }
27
- this._free += amount;
28
+ this.available += amount;
28
29
  }
29
30
  set(free, freezed) {
30
31
  if (free != null) {
31
- this._free = free;
32
+ this.available = free;
32
33
  }
33
34
  if (freezed != null) {
34
- this._freezed = freezed;
35
+ this.unavailable = freezed;
35
36
  }
36
37
  }
37
38
  freez(amount) {
38
- if (this._free < amount) {
39
- throw new Error(`insufficient funds has: ${this._free} wants: ${amount}`);
39
+ if (this.available < amount) {
40
+ throw new Error(`insufficient funds has: ${this.available} wants: ${amount}`);
40
41
  }
41
- this._free -= amount;
42
- this._freezed += amount;
42
+ this.available -= amount;
43
+ this.unavailable += amount;
43
44
  }
44
45
  unfreez(amount) {
45
- if (this._freezed < amount) {
46
- throw new Error(`insufficient funds has: ${this._freezed} wants: ${amount}`);
46
+ if (this.unavailable < amount) {
47
+ throw new Error(`insufficient funds has: ${this.unavailable} wants: ${amount}`);
47
48
  }
48
- this._free += amount;
49
- this._freezed -= amount;
49
+ this.available += amount;
50
+ this.unavailable -= amount;
50
51
  }
51
52
  getEstimatedUnrealizedPnL(mode) {
52
53
  return Object.values(this.position).reduce((aggregate, position) => (aggregate +=
@@ -1 +1 @@
1
- {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/domain/balance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/domain/balance.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ describe('balance tests', () => {
7
7
  const sut = new balance_1.Balance(new asset_1.Asset('abc', 'xyz', 4));
8
8
  expect(sut.asset.toString()).toEqual('xyz:abc');
9
9
  expect(sut.free).toEqual(0);
10
- expect(sut.freezed).toEqual(0);
10
+ expect(sut.locked).toEqual(0);
11
11
  expect(Object.keys(sut.position).length).toEqual(0);
12
12
  });
13
13
  test('should instantiate balance', () => {
@@ -15,7 +15,7 @@ describe('balance tests', () => {
15
15
  sut.set(100, 50);
16
16
  expect(sut.asset.toString()).toEqual('xyz:abc');
17
17
  expect(sut.free).toEqual(100);
18
- expect(sut.freezed).toEqual(50);
18
+ expect(sut.locked).toEqual(50);
19
19
  expect(Object.keys(sut.position).length).toEqual(0);
20
20
  });
21
21
  });
@@ -1 +1 @@
1
- {"version":3,"file":"balance.spec.js","sourceRoot":"","sources":["../../src/domain/balance.spec.ts"],"names":[],"mappings":";;AAAA,mCAAgC;AAChC,uCAAoC;AAEpC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,GAAG,GAAG,IAAI,iBAAO,CAAC,IAAI,aAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,iBAAO,CAAC,IAAI,aAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEjB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"balance.spec.js","sourceRoot":"","sources":["../../src/domain/balance.spec.ts"],"names":[],"mappings":";;AAAA,mCAAgC;AAChC,uCAAoC;AAEpC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,GAAG,GAAG,IAAI,iBAAO,CAAC,IAAI,aAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,IAAI,iBAAO,CAAC,IAAI,aAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEjB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -11,14 +11,16 @@ export declare class Candle {
11
11
  }
12
12
  export declare class CandleBuilder {
13
13
  readonly timeframe: number;
14
- private _candle;
14
+ private current;
15
15
  get candle(): Candle;
16
16
  constructor(timeframe: number);
17
17
  append(value: number, timestamp: timestamp): Candle;
18
18
  }
19
19
  export declare function candle<T extends {
20
20
  timestamp: number;
21
- }>(timeframe: number, fn: (x: T) => number): (source: Observable<T>) => Observable<Candle>;
21
+ }>(timeframe: number, fn: (x: T) => number, options?: {
22
+ passThru: boolean;
23
+ }): (source: Observable<T>) => Observable<Candle>;
22
24
  export declare function mergeCandle<T extends {
23
25
  timestamp: number;
24
26
  }>(timeframe: number, fn: (x: T) => number, history$: Observable<Candle>): (source$: Observable<T>) => Observable<Candle>;
@@ -23,31 +23,35 @@ class CandleBuilder {
23
23
  this.timeframe = timeframe;
24
24
  }
25
25
  get candle() {
26
- return this._candle;
26
+ return this.current;
27
27
  }
28
28
  append(value, timestamp) {
29
29
  const frame = (0, timeframe_1.tf)(timestamp, this.timeframe);
30
- if (!this._candle) {
31
- this._candle = new Candle(frame, value, value, value, value);
30
+ if (!this.current) {
31
+ this.current = new Candle(frame, value, value, value, value);
32
32
  return null;
33
33
  }
34
34
  if (this.candle.timestamp == frame) {
35
35
  this.candle.apply(value);
36
36
  return null;
37
37
  }
38
- const previous = this._candle;
39
- this._candle = new Candle(frame, value, value, value, value);
38
+ const previous = this.current;
39
+ this.current = new Candle(frame, value, value, value, value);
40
40
  return previous;
41
41
  }
42
42
  }
43
43
  exports.CandleBuilder = CandleBuilder;
44
- function candle(timeframe, fn) {
44
+ function candle(timeframe, fn, options = { passThru: false }) {
45
45
  return function (source) {
46
46
  const builder = new CandleBuilder(timeframe);
47
47
  let candle;
48
- return source.pipe((0, rxjs_1.filter)(it => {
49
- return (candle = builder.append(fn(it), it.timestamp)) != null;
50
- }), (0, rxjs_1.map)(_ => candle), (0, rxjs_1.share)());
48
+ if (options.passThru) {
49
+ return source.pipe((0, rxjs_1.map)(it => {
50
+ builder.append(fn(it), it.timestamp);
51
+ return builder.candle;
52
+ }), (0, rxjs_1.share)());
53
+ }
54
+ return source.pipe((0, rxjs_1.filter)(it => (candle = builder.append(fn(it), it.timestamp)) != null), (0, rxjs_1.map)(_ => candle), (0, rxjs_1.share)());
51
55
  };
52
56
  }
53
57
  exports.candle = candle;
@@ -1 +1 @@
1
- {"version":3,"file":"candle.js","sourceRoot":"","sources":["../../src/domain/candle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"candle.js","sourceRoot":"","sources":["../../src/domain/candle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"candle.spec.js","sourceRoot":"","sources":["../../src/domain/candle.spec.ts"],"names":[],"mappings":";;AAAA,+BAAiC;AACjC,sCAAgC;AAChC,oCAA2C;AAC3C,qCAA+C;AAC/C,6CAA4C;AAC5C,2CAAwC;AAExC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAG,IAAA,YAAG,GAAE,CAAC;QAExB,MAAM,GAAG,GAAG,IAAI,eAAM,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9C,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2CAA2C,EAAE,IAAI,CAAC,EAAE;QACvD,MAAM,SAAS,GAAG,CAAC,CAAC;QACpB,MAAM,UAAU,GAAG,IAAA,yBAAY,EAAC,kBAAkB,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC;YACpB,IAAI,eAAM,CAAC,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,IAAI,eAAM,CAAC,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,IAAI,eAAM,CAAC,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;SACzD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC;YAClB,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,CAAC;YACnE,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,CAAC;YACnE,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,CAAC;SACpE,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9B,MAAM;aACH,IAAI,CAAC,IAAA,oBAAW,EAAC,qBAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aACxD,IAAI,CACH,IAAA,UAAG,EAAC,EAAE,CAAC,EAAE;YACP,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAEnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,EAAE,CAAC;aACR;QACH,CAAC,CAAC,CACH;aACA,SAAS,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+CAA+C,EAAE,IAAI,CAAC,EAAE;QAC3D,MAAM,SAAS,GAAG,CAAC,CAAC;QACpB,MAAM,UAAU,GAAG,IAAA,yBAAY,EAAC,kBAAkB,CAAC,CAAC;QAEpD,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC;YACpB,IAAI,eAAM,CAAC,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,IAAI,eAAM,CAAC,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;YACxD,IAAI,eAAM,CAAC,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;SACzD,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAA,WAAI,EAAC;YAClB,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,CAAC;YACnE,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,CAAC;YACnE,IAAI,uBAAe,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,qBAAS,CAAC,EAAE,GAAG,CAAC,CAAC;SACpE,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnC,MAAM;aACH,IAAI,CAAC,IAAA,oBAAW,EAAC,qBAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;aACxD,IAAI,CACH,IAAA,UAAG,EAAC,EAAE,CAAC,EAAE;YACP,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAEnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChB,IAAI,EAAE,CAAC;aACR;QACH,CAAC,CAAC,CACH;aACA,SAAS,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"candle.spec.js","sourceRoot":"","sources":["../../src/domain/candle.spec.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { timestamp } from '../shared';
2
2
  export interface Component {
3
+ kind: string;
3
4
  timestamp: timestamp;
4
5
  }
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,2CAAyB;AACzB,+CAA6B;AAC7B,8CAA4B;AAC5B,+CAA6B;AAC7B,0CAAwB;AACxB,8CAA4B;AAC5B,6CAA2B;AAC3B,4CAA0B;AAC1B,8CAA4B;AAC5B,8CAA4B;AAC5B,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/domain/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,2CAAyB;AACzB,+CAA6B;AAC7B,8CAA4B;AAC5B,+CAA6B;AAC7B,0CAAwB;AACxB,8CAA4B;AAC5B,6CAA2B;AAC3B,4CAA0B;AAC1B,8CAA4B;AAC5B,8CAA4B;AAC5B,0CAAwB"}
@@ -13,6 +13,7 @@ export declare class Instrument extends InstrumentSelector implements Component
13
13
  readonly base: Asset;
14
14
  readonly quote: Asset;
15
15
  readonly raw: string;
16
+ kind: string;
16
17
  timestamp: timestamp;
17
18
  commission: Commission;
18
19
  cross: Instrument;
@@ -19,6 +19,7 @@ class Instrument extends InstrumentSelector {
19
19
  this.base = base;
20
20
  this.quote = quote;
21
21
  this.raw = raw;
22
+ this.kind = 'instrument';
22
23
  this.leverage = null;
23
24
  if (base.adapter != quote.adapter) {
24
25
  throw new Error('Adapter mismatch!');
@@ -1 +1 @@
1
- {"version":3,"file":"instrument.js","sourceRoot":"","sources":["../../src/domain/instrument.ts"],"names":[],"mappings":";;;AACA,mCAA+C;AAI/C,MAAa,kBAAkB;IAM7B,YAAY,IAAY,EAAE,KAAa,EAAE,OAAe;QACtD,IAAI,CAAC,IAAI,GAAG,IAAI,qBAAa,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAa,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAE3E,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACzD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AAhBD,gDAgBC;AAKD,MAAa,UAAW,SAAQ,kBAAkB;IAMhD,YAAqB,IAAW,EAAW,KAAY,EAAW,GAAW;QAC3E,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QADxB,SAAI,GAAJ,IAAI,CAAO;QAAW,UAAK,GAAL,KAAK,CAAO;QAAW,QAAG,GAAH,GAAG,CAAQ;QAF7E,aAAQ,GAAY,IAAI,CAAC;QAKvB,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACtC;IACH,CAAC;CACF;AAbD,gCAaC;AAED,SAAgB,YAAY,CAAC,UAAkB;IAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AALD,oCAKC"}
1
+ {"version":3,"file":"instrument.js","sourceRoot":"","sources":["../../src/domain/instrument.ts"],"names":[],"mappings":";;;AACA,mCAA+C;AAI/C,MAAa,kBAAkB;IAM7B,YAAY,IAAY,EAAE,KAAa,EAAE,OAAe;QACtD,IAAI,CAAC,IAAI,GAAG,IAAI,qBAAa,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAa,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAE3E,IAAI,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACzD,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AAhBD,gDAgBC;AAKD,MAAa,UAAW,SAAQ,kBAAkB;IAOhD,YAAqB,IAAW,EAAW,KAAY,EAAW,GAAW;QAC3E,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QADxB,SAAI,GAAJ,IAAI,CAAO;QAAW,UAAK,GAAL,KAAK,CAAO;QAAW,QAAG,GAAH,GAAG,CAAQ;QAN7E,SAAI,GAAG,YAAY,CAAC;QAIpB,aAAQ,GAAY,IAAI,CAAC;QAKvB,IAAI,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACtC;IACH,CAAC;CACF;AAdD,gCAcC;AAED,SAAgB,YAAY,CAAC,UAAkB;IAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AALD,oCAKC"}
@@ -11,8 +11,9 @@ export declare class Order implements Component {
11
11
  readonly quantity: number;
12
12
  readonly rate: number;
13
13
  readonly stopRate: number;
14
+ kind: string;
14
15
  timestamp: timestamp;
15
- id: any;
16
+ id: string;
16
17
  externalId: string;
17
18
  state: OrderState;
18
19
  quantityExecuted: number;
@@ -28,5 +29,5 @@ export declare class Order implements Component {
28
29
  static sellStopLimit(instrument: InstrumentSelector, quantity: number, rate: number, stopRate: number): Order;
29
30
  static buyStopLimit(instrument: InstrumentSelector, quantity: number, rate: number, stopRate: number): Order;
30
31
  constructor(instrument: InstrumentSelector, side: OrderSide, type: OrderType, quantity: number, rate?: number, stopRate?: number);
31
- toString(): any;
32
+ toString(): string;
32
33
  }
@@ -10,8 +10,10 @@ class Order {
10
10
  this.quantity = quantity;
11
11
  this.rate = rate;
12
12
  this.stopRate = stopRate;
13
+ this.kind = 'order';
13
14
  this.id = (0, uuid_1.v4)();
14
15
  this.state = 'NEW';
16
+ this.quantityExecuted = 0;
15
17
  if (quantity <= 0 || Number.isNaN(quantity)) {
16
18
  throw new Error(`invalid order quantity: ${quantity}`);
17
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/domain/order.ts"],"names":[],"mappings":";;;AAAA,+BAA0B;AAe1B,MAAa,KAAK;IAiEhB,YACW,UAA8B,EAC9B,IAAe,EACf,IAAe,EACf,QAAgB,EAChB,OAAe,IAAI,EACnB,WAAmB,IAAI;QALvB,eAAU,GAAV,UAAU,CAAoB;QAC9B,SAAI,GAAJ,IAAI,CAAW;QACf,SAAI,GAAJ,IAAI,CAAW;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAAe;QACnB,aAAQ,GAAR,QAAQ,CAAe;QArElC,OAAE,GAAG,IAAA,SAAE,GAAE,CAAC;QAEV,UAAK,GAAe,KAAK,CAAC;QAqExB,IAAI,QAAQ,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;SACxD;QAED,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE;YACjD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;IACH,CAAC;IArED,MAAM,CAAC,UAAU,CAAC,UAA8B,EAAE,QAAgB;QAChE,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,UAA8B,EAAE,QAAgB;QAC/D,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,SAAS,CACd,UAA8B,EAC9B,QAAgB,EAChB,IAAY;QAEZ,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,UAA8B,EAAE,QAAgB,EAAE,IAAY;QAC5E,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,cAAc,CACnB,UAA8B,EAC9B,QAAgB,EAChB,QAAgB;QAEhB,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,aAAa,CAClB,UAA8B,EAC9B,QAAgB,EAChB,QAAgB;QAEhB,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,CAAC,aAAa,CAClB,UAA8B,EAC9B,QAAgB,EAChB,IAAY,EACZ,QAAgB;QAEhB,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,CAAC,YAAY,CACjB,UAA8B,EAC9B,QAAgB,EAChB,IAAY,EACZ,QAAgB;QAEhB,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAmBD,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AArFD,sBAqFC"}
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/domain/order.ts"],"names":[],"mappings":";;;AAAA,+BAA0B;AAgB1B,MAAa,KAAK;IAkEhB,YACW,UAA8B,EAC9B,IAAe,EACf,IAAe,EACf,QAAgB,EAChB,OAAe,IAAI,EACnB,WAAmB,IAAI;QALvB,eAAU,GAAV,UAAU,CAAoB;QAC9B,SAAI,GAAJ,IAAI,CAAW;QACf,SAAI,GAAJ,IAAI,CAAW;QACf,aAAQ,GAAR,QAAQ,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAAe;QACnB,aAAQ,GAAR,QAAQ,CAAe;QAvElC,SAAI,GAAG,OAAO,CAAC;QAEf,OAAE,GAAG,IAAA,SAAE,GAAE,CAAC;QAEV,UAAK,GAAe,KAAK,CAAC;QAE1B,qBAAgB,GAAG,CAAC,CAAC;QAmEnB,IAAI,QAAQ,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAC3C,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;SACxD;QAED,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,EAAE;YACjD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;IACH,CAAC;IArED,MAAM,CAAC,UAAU,CAAC,UAA8B,EAAE,QAAgB;QAChE,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,UAA8B,EAAE,QAAgB;QAC/D,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,SAAS,CACd,UAA8B,EAC9B,QAAgB,EAChB,IAAY;QAEZ,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,UAA8B,EAAE,QAAgB,EAAE,IAAY;QAC5E,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,cAAc,CACnB,UAA8B,EAC9B,QAAgB,EAChB,QAAgB;QAEhB,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,aAAa,CAClB,UAA8B,EAC9B,QAAgB,EAChB,QAAgB;QAEhB,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,CAAC,aAAa,CAClB,UAA8B,EAC9B,QAAgB,EAChB,IAAY,EACZ,QAAgB;QAEhB,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,CAAC,YAAY,CACjB,UAA8B,EAC9B,QAAgB,EAChB,IAAY,EACZ,QAAgB;QAEhB,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAmBD,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AAtFD,sBAsFC"}
@@ -3,6 +3,7 @@ import { timestamp } from '../shared';
3
3
  import { Component } from './component';
4
4
  export declare class Orderbook implements Component {
5
5
  readonly instrument: Instrument;
6
+ kind: string;
6
7
  timestamp: timestamp;
7
8
  bestAskRate: number;
8
9
  bestAskQuantity: number;
@@ -4,6 +4,7 @@ exports.Orderbook = void 0;
4
4
  class Orderbook {
5
5
  constructor(instrument) {
6
6
  this.instrument = instrument;
7
+ this.kind = 'orderbook';
7
8
  }
8
9
  get midRate() {
9
10
  return this.instrument.quote.fixed((this.bestAskRate + this.bestBidRate) / 2);
@@ -1 +1 @@
1
- {"version":3,"file":"orderbook.js","sourceRoot":"","sources":["../../src/domain/orderbook.ts"],"names":[],"mappings":";;;AAOA,MAAa,SAAS;IAWpB,YAA4B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAJtD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAChF,CAAC;IAID,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;CACF;AAhBD,8BAgBC"}
1
+ {"version":3,"file":"orderbook.js","sourceRoot":"","sources":["../../src/domain/orderbook.ts"],"names":[],"mappings":";;;AAOA,MAAa,SAAS;IAYpB,YAA4B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAXlD,SAAI,GAAG,WAAW,CAAC;IAWkC,CAAC;IAJtD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAChF,CAAC;IAID,QAAQ;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;CACF;AAjBD,8BAiBC"}
@@ -6,6 +6,7 @@ export declare type PositionMode = 'CROSS' | 'ISOLATED';
6
6
  export declare class Position implements Component {
7
7
  readonly id: string;
8
8
  readonly instrument: Instrument;
9
+ kind: string;
9
10
  timestamp: timestamp;
10
11
  averageExecutionRate: number;
11
12
  size: number;
@@ -7,6 +7,7 @@ class Position {
7
7
  constructor(id, instrument) {
8
8
  this.id = id;
9
9
  this.instrument = instrument;
10
+ this.kind = 'position';
10
11
  this.mode = 'CROSS';
11
12
  this.estimatedUnrealizedPnL = 0;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"position.js","sourceRoot":"","sources":["../../src/domain/position.ts"],"names":[],"mappings":";;;AAAA,+BAA8C;AAE9C,sCAAyD;AAKzD,MAAa,QAAQ;IAcnB,YAAqB,EAAU,EAAW,UAAsB;QAA3C,OAAE,GAAF,EAAE,CAAQ;QAAW,eAAU,GAAV,UAAU,CAAY;QAThE,SAAI,GAAiB,OAAO,CAAC;QAC7B,2BAAsB,GAAG,CAAC,CAAC;IAQwC,CAAC;IANpE,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAC/B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAClE,CAAC;IACJ,CAAC;IAID,YAAY,CAAC,IAAY;QACvB,IAAI,CAAC,sBAAsB,GAAG,IAAA,YAAG,EAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9E,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACrC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AAzBD,4BAyBC;AAED,SAAgB,aAAa;IAC3B,OAAO,UACL,MAA8B;QAE9B,OAAO,MAAM,CAAC,IAAI,CAChB,IAAA,UAAG,EAAC,EAAE,CAAC,EAAE;YACP,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjB,OAAO;oBACL,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;oBACtE,IAAI,EAAE,IAAA,qBAAY,EAChB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,EACnC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACpB;iBACF,CAAC;aACH;YAED,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;gBAClB,OAAO;oBACL,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;oBAChB,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB;iBACjC,CAAC;aACH;YAED,OAAO;gBACL,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,CAAC;aACR,CAAC;QACJ,CAAC,CAAC,EACF,IAAA,YAAK,GAAE,CACR,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AA/BD,sCA+BC"}
1
+ {"version":3,"file":"position.js","sourceRoot":"","sources":["../../src/domain/position.ts"],"names":[],"mappings":";;;AAAA,+BAA8C;AAG9C,sCAAyD;AAKzD,MAAa,QAAQ;IAenB,YAAqB,EAAU,EAAW,UAAsB;QAA3C,OAAE,GAAF,EAAE,CAAQ;QAAW,eAAU,GAAV,UAAU,CAAY;QAdhE,SAAI,GAAG,UAAU,CAAC;QAKlB,SAAI,GAAiB,OAAO,CAAC;QAC7B,2BAAsB,GAAG,CAAC,CAAC;IAQwC,CAAC;IANpE,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAC/B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAClE,CAAC;IACJ,CAAC;IAID,YAAY,CAAC,IAAY;QACvB,IAAI,CAAC,sBAAsB,GAAG,IAAA,YAAG,EAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9E,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACrC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AA1BD,4BA0BC;AAED,SAAgB,aAAa;IAC3B,OAAO,UACL,MAA8B;QAE9B,OAAO,MAAM,CAAC,IAAI,CAChB,IAAA,UAAG,EAAC,EAAE,CAAC,EAAE;YACP,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjB,OAAO;oBACL,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;oBACtE,IAAI,EAAE,IAAA,qBAAY,EAChB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,EACnC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CACpB;iBACF,CAAC;aACH;YAED,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;gBAClB,OAAO;oBACL,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;oBAChB,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB;iBACjC,CAAC;aACH;YAED,OAAO;gBACL,IAAI,EAAE,CAAC;gBACP,IAAI,EAAE,CAAC;aACR,CAAC;QACJ,CAAC,CAAC,EACF,IAAA,YAAK,GAAE,CACR,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AA/BD,sCA+BC"}
@@ -1,20 +1,14 @@
1
1
  import { Observable } from 'rxjs';
2
2
  import { Adapter, BacktesterOptions, PaperOptions } from '../adapter';
3
3
  import { AdapterAggregate } from '../adapter/adapter-aggregate';
4
- import { AssetSelector, Balance, Candle, Instrument, InstrumentSelector, Order, Orderbook, OrderState, Position } from '../domain';
5
- import { Trade } from '../domain/trade';
6
- import { Feed, Measurement } from '../storage';
4
+ import { AssetSelector, Balance, Candle, Instrument, InstrumentSelector, Order, Orderbook, OrderState, Position, Trade } from '../domain';
5
+ import { StorageFactory } from '../storage';
7
6
  import { Store } from '../store';
8
- declare type Optional<T, K extends keyof T> = Omit<T, K> & Partial<T>;
9
7
  export interface SessionDescriptor {
10
8
  id?: number;
11
9
  adapter: Adapter[];
12
- feed?: Feed;
13
- measurement?: Measurement;
14
- options?: {
15
- backtester?: BacktesterOptions;
16
- paper?: PaperOptions;
17
- };
10
+ storage?: StorageFactory;
11
+ simulation?: PaperOptions & BacktesterOptions;
18
12
  }
19
13
  export declare class Session {
20
14
  readonly store: Store;
@@ -22,19 +16,12 @@ export declare class Session {
22
16
  readonly descriptor?: SessionDescriptor;
23
17
  private initialized;
24
18
  private subscription;
25
- private worker;
26
19
  get timestamp(): number;
27
20
  readonly statement: Record<string, Record<string, any>>;
28
21
  constructor(store: Store, aggregate: AdapterAggregate, descriptor?: SessionDescriptor);
29
22
  awake(describe: (session: Session) => Observable<any>): Promise<void>;
30
23
  dispose(): Promise<void>;
31
24
  useStatement(section: string): Record<string, any>;
32
- useMeasure<T extends {
33
- timestamp: number;
34
- }>(params: {
35
- kind: string;
36
- timestamp?: number;
37
- }, defaultValue?: T): [Observable<T>, (value: Optional<T, 'timestamp'>) => void];
38
25
  useOptimizer(path: string): any;
39
26
  subscribe(instrument: Array<InstrumentSelector>): Promise<void>;
40
27
  open(order: Order): Observable<Order>;
@@ -50,4 +37,3 @@ export declare class Session {
50
37
  balance(selector: AssetSelector): Observable<Balance>;
51
38
  history(selector: InstrumentSelector, timeframe: number, length: number): Observable<Candle>;
52
39
  }
53
- export {};