@quantform/core 0.5.23 → 0.6.4

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 (555) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/adapter/adapter-aggregate.d.ts +36 -1
  3. package/dist/adapter/adapter-aggregate.d.ts.map +1 -0
  4. package/dist/adapter/adapter-aggregate.js +110 -50
  5. package/dist/adapter/adapter.d.ts +25 -0
  6. package/dist/adapter/adapter.d.ts.map +1 -0
  7. package/dist/adapter/adapter.js +4 -1
  8. package/dist/adapter/backtester/backtester-adapter.d.ts +1 -0
  9. package/dist/adapter/backtester/backtester-adapter.d.ts.map +1 -0
  10. package/dist/adapter/backtester/backtester-adapter.js +26 -13
  11. package/dist/adapter/backtester/backtester-cursor.d.ts +2 -1
  12. package/dist/adapter/backtester/backtester-cursor.d.ts.map +1 -0
  13. package/dist/adapter/backtester/backtester-cursor.js +24 -14
  14. package/dist/adapter/backtester/backtester-streamer.d.ts +20 -1
  15. package/dist/adapter/backtester/backtester-streamer.d.ts.map +1 -0
  16. package/dist/adapter/backtester/backtester-streamer.js +54 -30
  17. package/dist/adapter/backtester/error.d.ts +3 -0
  18. package/dist/adapter/backtester/error.d.ts.map +1 -0
  19. package/dist/adapter/backtester/error.js +11 -0
  20. package/dist/adapter/backtester/index.d.ts +1 -0
  21. package/dist/adapter/backtester/index.d.ts.map +1 -0
  22. package/dist/adapter/backtester/index.js +0 -1
  23. package/dist/adapter/error.d.ts +2 -0
  24. package/dist/adapter/error.d.ts.map +1 -0
  25. package/dist/adapter/error.js +5 -2
  26. package/dist/adapter/index.d.ts +1 -0
  27. package/dist/adapter/index.d.ts.map +1 -0
  28. package/dist/adapter/index.js +0 -1
  29. package/dist/adapter/paper/engine/paper-engine.d.ts +1 -0
  30. package/dist/adapter/paper/engine/paper-engine.d.ts.map +1 -0
  31. package/dist/adapter/paper/engine/paper-engine.js +18 -13
  32. package/dist/adapter/paper/index.d.ts +1 -0
  33. package/dist/adapter/paper/index.d.ts.map +1 -0
  34. package/dist/adapter/paper/index.js +0 -1
  35. package/dist/adapter/paper/paper-adapter.d.ts +4 -3
  36. package/dist/adapter/paper/paper-adapter.d.ts.map +1 -0
  37. package/dist/adapter/paper/paper-adapter.js +44 -21
  38. package/dist/cli/build.d.ts +1 -0
  39. package/dist/cli/build.d.ts.map +1 -0
  40. package/dist/cli/build.js +18 -8
  41. package/dist/cli/dev.d.ts +1 -0
  42. package/dist/cli/dev.d.ts.map +1 -0
  43. package/dist/cli/dev.js +52 -12
  44. package/dist/cli/error.d.ts +2 -0
  45. package/dist/cli/error.d.ts.map +1 -0
  46. package/dist/cli/error.js +7 -0
  47. package/dist/cli/index.d.ts +1 -0
  48. package/dist/cli/index.d.ts.map +1 -0
  49. package/dist/cli/index.js +21 -10
  50. package/dist/cli/internal/workspace.d.ts +1 -7
  51. package/dist/cli/internal/workspace.d.ts.map +1 -0
  52. package/dist/cli/internal/workspace.js +1 -6
  53. package/dist/cli/pull.d.ts +1 -0
  54. package/dist/cli/pull.d.ts.map +1 -0
  55. package/dist/cli/pull.js +68 -38
  56. package/dist/cli/run.d.ts +2 -1
  57. package/dist/cli/run.d.ts.map +1 -0
  58. package/dist/cli/run.js +52 -14
  59. package/dist/cli/test.d.ts +2 -1
  60. package/dist/cli/test.d.ts.map +1 -0
  61. package/dist/cli/test.js +59 -34
  62. package/dist/domain/asset.d.ts +20 -0
  63. package/dist/domain/asset.d.ts.map +1 -0
  64. package/dist/domain/asset.js +19 -1
  65. package/dist/domain/{balance.operator.d.ts → balance-operator.d.ts} +1 -0
  66. package/dist/domain/balance-operator.d.ts.map +1 -0
  67. package/dist/domain/{balance.operator.js → balance-operator.js} +0 -1
  68. package/dist/domain/balance.d.ts +27 -3
  69. package/dist/domain/balance.d.ts.map +1 -0
  70. package/dist/domain/balance.js +31 -3
  71. package/dist/domain/{candle.operator.d.ts → candle-operator.d.ts} +1 -0
  72. package/dist/domain/candle-operator.d.ts.map +1 -0
  73. package/dist/domain/{candle.operator.js → candle-operator.js} +11 -5
  74. package/dist/domain/candle.d.ts +3 -2
  75. package/dist/domain/candle.d.ts.map +1 -0
  76. package/dist/domain/candle.js +0 -1
  77. package/dist/domain/commission.d.ts +2 -0
  78. package/dist/domain/commission.d.ts.map +1 -0
  79. package/dist/domain/commission.js +2 -1
  80. package/dist/domain/component.d.ts +1 -0
  81. package/dist/domain/component.d.ts.map +1 -0
  82. package/dist/domain/component.js +0 -1
  83. package/dist/domain/error.d.ts +4 -3
  84. package/dist/domain/error.d.ts.map +1 -0
  85. package/dist/domain/error.js +3 -4
  86. package/dist/domain/index.d.ts +9 -7
  87. package/dist/domain/index.d.ts.map +1 -0
  88. package/dist/domain/index.js +8 -8
  89. package/dist/domain/{instrument.operator.d.ts → instrument-operator.d.ts} +1 -0
  90. package/dist/domain/instrument-operator.d.ts.map +1 -0
  91. package/dist/domain/{instrument.operator.js → instrument-operator.js} +0 -1
  92. package/dist/domain/instrument.d.ts +9 -6
  93. package/dist/domain/instrument.d.ts.map +1 -0
  94. package/dist/domain/instrument.js +7 -3
  95. package/dist/domain/{order.operator.d.ts → order-operator.d.ts} +1 -0
  96. package/dist/domain/order-operator.d.ts.map +1 -0
  97. package/dist/domain/order-operator.js +16 -0
  98. package/dist/domain/order.d.ts +15 -20
  99. package/dist/domain/order.d.ts.map +1 -0
  100. package/dist/domain/order.js +16 -28
  101. package/dist/domain/{orderbook.operator.d.ts → orderbook-operator.d.ts} +1 -0
  102. package/dist/domain/orderbook-operator.d.ts.map +1 -0
  103. package/dist/domain/{orderbook.operator.js → orderbook-operator.js} +0 -1
  104. package/dist/domain/orderbook.d.ts +10 -6
  105. package/dist/domain/orderbook.d.ts.map +1 -0
  106. package/dist/domain/orderbook.js +7 -2
  107. package/dist/domain/{position.operator.d.ts → position-operator.d.ts} +4 -2
  108. package/dist/domain/position-operator.d.ts.map +1 -0
  109. package/dist/domain/{position.operator.js → position-operator.js} +10 -3
  110. package/dist/domain/position.d.ts +5 -4
  111. package/dist/domain/position.d.ts.map +1 -0
  112. package/dist/domain/position.js +2 -2
  113. package/dist/domain/session-builder.d.ts +54 -0
  114. package/dist/domain/session-builder.d.ts.map +1 -0
  115. package/dist/domain/session-builder.js +105 -0
  116. package/dist/domain/session.d.ts +54 -13
  117. package/dist/domain/session.d.ts.map +1 -0
  118. package/dist/domain/session.js +103 -39
  119. package/dist/domain/timeframe.d.ts +1 -0
  120. package/dist/domain/timeframe.d.ts.map +1 -0
  121. package/dist/domain/timeframe.js +0 -1
  122. package/dist/domain/{trade.operator.d.ts → trade-operator.d.ts} +1 -0
  123. package/dist/domain/trade-operator.d.ts.map +1 -0
  124. package/dist/domain/{trade.operator.js → trade-operator.js} +0 -1
  125. package/dist/domain/trade.d.ts +10 -5
  126. package/dist/domain/trade.d.ts.map +1 -0
  127. package/dist/domain/trade.js +8 -2
  128. package/dist/index.d.ts +2 -2
  129. package/dist/index.d.ts.map +1 -0
  130. package/dist/index.js +1 -3
  131. package/dist/shared/collections.d.ts +9 -6
  132. package/dist/shared/collections.d.ts.map +1 -0
  133. package/dist/shared/collections.js +21 -13
  134. package/dist/shared/datetime.d.ts +1 -0
  135. package/dist/shared/datetime.d.ts.map +1 -0
  136. package/dist/shared/datetime.js +0 -1
  137. package/dist/shared/decimals.d.ts +13 -0
  138. package/dist/shared/decimals.d.ts.map +1 -0
  139. package/dist/shared/decimals.js +12 -1
  140. package/dist/shared/environment.d.ts +3 -0
  141. package/dist/shared/environment.d.ts.map +1 -0
  142. package/dist/shared/environment.js +15 -0
  143. package/dist/shared/index.d.ts +2 -1
  144. package/dist/shared/index.d.ts.map +1 -0
  145. package/dist/shared/index.js +1 -2
  146. package/dist/shared/logger.d.ts +5 -7
  147. package/dist/shared/logger.d.ts.map +1 -0
  148. package/dist/shared/logger.js +24 -8
  149. package/dist/shared/pipe.d.ts +1 -0
  150. package/dist/shared/pipe.d.ts.map +1 -0
  151. package/dist/shared/pipe.js +0 -1
  152. package/dist/shared/policy.d.ts +1 -0
  153. package/dist/shared/policy.d.ts.map +1 -0
  154. package/dist/shared/policy.js +0 -1
  155. package/dist/storage/cache.d.ts +1 -0
  156. package/dist/storage/cache.d.ts.map +1 -0
  157. package/dist/storage/cache.js +30 -19
  158. package/dist/storage/feed.d.ts +25 -0
  159. package/dist/storage/feed.d.ts.map +1 -0
  160. package/dist/storage/feed.js +56 -19
  161. package/dist/storage/index.d.ts +1 -0
  162. package/dist/storage/index.d.ts.map +1 -0
  163. package/dist/storage/index.js +0 -1
  164. package/dist/storage/measurement.d.ts +20 -0
  165. package/dist/storage/measurement.d.ts.map +1 -0
  166. package/dist/storage/measurement.js +41 -10
  167. package/dist/storage/storage.d.ts +41 -0
  168. package/dist/storage/storage.d.ts.map +1 -0
  169. package/dist/storage/storage.js +69 -33
  170. package/dist/store/error.d.ts +9 -0
  171. package/dist/store/error.d.ts.map +1 -0
  172. package/dist/store/error.js +31 -0
  173. package/dist/store/index.d.ts +8 -7
  174. package/dist/store/index.d.ts.map +1 -0
  175. package/dist/store/index.js +7 -8
  176. package/dist/store/{store-balance.event.d.ts → store-balance-event.d.ts} +14 -1
  177. package/dist/store/store-balance-event.d.ts.map +1 -0
  178. package/dist/store/{store-balance.event.js → store-balance-event.js} +54 -10
  179. package/dist/store/{store.event.d.ts → store-event.d.ts} +1 -0
  180. package/dist/store/store-event.d.ts.map +1 -0
  181. package/dist/store/{store.event.js → store-event.js} +0 -1
  182. package/dist/store/{store-instrument.event.d.ts → store-instrument-event.d.ts} +5 -4
  183. package/dist/store/store-instrument-event.d.ts.map +1 -0
  184. package/dist/store/{store-instrument.event.js → store-instrument-event.js} +13 -5
  185. package/dist/store/{store-order.event.d.ts → store-order-event.d.ts} +7 -2
  186. package/dist/store/store-order-event.d.ts.map +1 -0
  187. package/dist/store/{store-order.event.js → store-order-event.js} +24 -20
  188. package/dist/store/{store-orderbook.event.d.ts → store-orderbook-event.d.ts} +2 -1
  189. package/dist/store/store-orderbook-event.d.ts.map +1 -0
  190. package/dist/store/{store-orderbook.event.js → store-orderbook-event.js} +6 -5
  191. package/dist/store/{store-position.event.d.ts → store-position-event.d.ts} +3 -2
  192. package/dist/store/store-position-event.d.ts.map +1 -0
  193. package/dist/store/{store-position.event.js → store-position-event.js} +13 -6
  194. package/dist/store/store-state.d.ts +3 -2
  195. package/dist/store/store-state.d.ts.map +1 -0
  196. package/dist/store/store-state.js +1 -1
  197. package/dist/store/{store-trade.event.d.ts → store-trade-event.d.ts} +6 -1
  198. package/dist/store/store-trade-event.d.ts.map +1 -0
  199. package/dist/store/{store-trade.event.js → store-trade-event.js} +12 -3
  200. package/dist/store/store.d.ts +2 -1
  201. package/dist/store/store.d.ts.map +1 -0
  202. package/dist/store/store.js +0 -1
  203. package/dist/strategy.d.ts +8 -0
  204. package/dist/strategy.d.ts.map +1 -0
  205. package/dist/strategy.js +44 -0
  206. package/jest.config.ts +13 -0
  207. package/package.json +19 -32
  208. package/src/adapter/adapter-aggregate.ts +41 -18
  209. package/src/adapter/backtester/backtester-adapter.ts +0 -2
  210. package/src/adapter/backtester/backtester-cursor.ts +2 -2
  211. package/src/adapter/backtester/backtester-streamer.spec.ts +5 -3
  212. package/src/adapter/backtester/backtester-streamer.ts +16 -8
  213. package/src/adapter/backtester/error.ts +7 -0
  214. package/src/adapter/error.ts +4 -0
  215. package/src/adapter/paper/engine/paper-engine.spec.ts +38 -21
  216. package/src/adapter/paper/engine/paper-engine.ts +44 -35
  217. package/src/adapter/paper/paper-adapter.ts +13 -4
  218. package/src/cli/build.ts +1 -1
  219. package/src/cli/dev.ts +15 -7
  220. package/src/cli/error.ts +5 -0
  221. package/src/cli/internal/workspace.ts +0 -11
  222. package/src/cli/pull.ts +22 -31
  223. package/src/cli/run.ts +14 -11
  224. package/src/cli/test.ts +24 -37
  225. package/src/domain/asset.ts +1 -1
  226. package/src/domain/{balance.operator.spec.ts → balance-operator.spec.ts} +4 -3
  227. package/src/domain/{balance.operator.ts → balance-operator.ts} +0 -0
  228. package/src/domain/balance.spec.ts +15 -12
  229. package/src/domain/balance.ts +7 -6
  230. package/src/domain/{candle.operator.spec.ts → candle-operator.spec.ts} +1 -1
  231. package/src/domain/{candle.operator.ts → candle-operator.ts} +21 -5
  232. package/src/domain/commission.ts +3 -1
  233. package/src/domain/error.ts +3 -3
  234. package/src/domain/index.ts +8 -7
  235. package/src/domain/{instrument.operator.spec.ts → instrument-operator.spec.ts} +9 -2
  236. package/src/domain/{instrument.operator.ts → instrument-operator.ts} +0 -0
  237. package/src/domain/instrument.spec.ts +8 -1
  238. package/src/domain/instrument.ts +11 -8
  239. package/src/domain/{order.operator.spec.ts → order-operator.spec.ts} +9 -6
  240. package/src/domain/{order.operator.ts → order-operator.ts} +2 -2
  241. package/src/domain/order.spec.ts +8 -9
  242. package/src/domain/order.ts +22 -52
  243. package/src/domain/{orderbook.operator.spec.ts → orderbook-operator.spec.ts} +15 -3
  244. package/src/domain/{orderbook.operator.ts → orderbook-operator.ts} +0 -0
  245. package/src/domain/orderbook.spec.ts +11 -2
  246. package/src/domain/orderbook.ts +10 -9
  247. package/src/domain/{position.operator.spec.ts → position-operator.spec.ts} +11 -6
  248. package/src/domain/{position.operator.ts → position-operator.ts} +13 -6
  249. package/src/domain/position.spec.ts +7 -4
  250. package/src/domain/position.ts +3 -3
  251. package/src/domain/session-builder.ts +158 -0
  252. package/src/domain/session.spec.ts +2 -9
  253. package/src/domain/session.ts +84 -69
  254. package/src/domain/{trade.operator.spec.ts → trade-operator.spec.ts} +7 -3
  255. package/src/domain/{trade.operator.ts → trade-operator.ts} +0 -0
  256. package/src/domain/trade.spec.ts +6 -2
  257. package/src/domain/trade.ts +9 -7
  258. package/src/index.ts +1 -2
  259. package/src/shared/collections.spec.ts +10 -6
  260. package/src/shared/collections.ts +29 -16
  261. package/src/shared/environment.ts +13 -0
  262. package/src/shared/index.ts +1 -1
  263. package/src/shared/logger.ts +35 -7
  264. package/src/shared/pipe.ts +1 -1
  265. package/src/storage/cache.ts +3 -1
  266. package/src/storage/feed.ts +2 -0
  267. package/src/storage/storage.ts +10 -8
  268. package/src/store/error.ts +36 -0
  269. package/src/store/index.ts +7 -7
  270. package/src/store/{store-balance.event.spec.ts → store-balance-event.spec.ts} +3 -3
  271. package/src/store/{store-balance.event.ts → store-balance-event.ts} +54 -11
  272. package/src/store/{store.event.ts → store-event.ts} +0 -0
  273. package/src/store/{store-instrument.event.spec.ts → store-instrument-event.spec.ts} +6 -5
  274. package/src/store/{store-instrument.event.ts → store-instrument-event.ts} +17 -6
  275. package/src/store/store-order-event.spec.ts +32 -0
  276. package/src/store/{store-order.event.ts → store-order-event.ts} +25 -20
  277. package/src/store/{store-orderbook.event.spec.ts → store-orderbook-event.spec.ts} +11 -9
  278. package/src/store/{store-orderbook.event.ts → store-orderbook-event.ts} +7 -5
  279. package/src/store/{store-position.event.ts → store-position-event.ts} +14 -7
  280. package/src/store/store-state.ts +3 -3
  281. package/src/store/{store-trade.event.spec.ts → store-trade-event.spec.ts} +7 -5
  282. package/src/store/{store-trade.event.ts → store-trade-event.ts} +10 -4
  283. package/src/store/store.spec.ts +13 -11
  284. package/src/store/store.ts +1 -1
  285. package/src/strategy.ts +47 -0
  286. package/tsconfig.json +12 -5
  287. package/dist/adapter/adapter-aggregate.js.map +0 -1
  288. package/dist/adapter/adapter.js.map +0 -1
  289. package/dist/adapter/backtester/backtester-adapter.js.map +0 -1
  290. package/dist/adapter/backtester/backtester-adapter.spec.d.ts +0 -1
  291. package/dist/adapter/backtester/backtester-adapter.spec.js +0 -83
  292. package/dist/adapter/backtester/backtester-adapter.spec.js.map +0 -1
  293. package/dist/adapter/backtester/backtester-cursor.js.map +0 -1
  294. package/dist/adapter/backtester/backtester-cursor.spec.d.ts +0 -1
  295. package/dist/adapter/backtester/backtester-cursor.spec.js +0 -39
  296. package/dist/adapter/backtester/backtester-cursor.spec.js.map +0 -1
  297. package/dist/adapter/backtester/backtester-streamer.js.map +0 -1
  298. package/dist/adapter/backtester/backtester-streamer.spec.d.ts +0 -1
  299. package/dist/adapter/backtester/backtester-streamer.spec.js +0 -45
  300. package/dist/adapter/backtester/backtester-streamer.spec.js.map +0 -1
  301. package/dist/adapter/backtester/index.js.map +0 -1
  302. package/dist/adapter/error.js.map +0 -1
  303. package/dist/adapter/index.js.map +0 -1
  304. package/dist/adapter/paper/engine/paper-engine.js.map +0 -1
  305. package/dist/adapter/paper/engine/paper-engine.spec.d.ts +0 -1
  306. package/dist/adapter/paper/engine/paper-engine.spec.js +0 -54
  307. package/dist/adapter/paper/engine/paper-engine.spec.js.map +0 -1
  308. package/dist/adapter/paper/index.js.map +0 -1
  309. package/dist/adapter/paper/paper-adapter.js.map +0 -1
  310. package/dist/adapter/paper/paper-adapter.spec.d.ts +0 -1
  311. package/dist/adapter/paper/paper-adapter.spec.js +0 -70
  312. package/dist/adapter/paper/paper-adapter.spec.js.map +0 -1
  313. package/dist/bootstrap.d.ts +0 -11
  314. package/dist/bootstrap.js +0 -73
  315. package/dist/bootstrap.js.map +0 -1
  316. package/dist/cli/build.js.map +0 -1
  317. package/dist/cli/dev.js.map +0 -1
  318. package/dist/cli/index.js.map +0 -1
  319. package/dist/cli/internal/workspace.js.map +0 -1
  320. package/dist/cli/pull.js.map +0 -1
  321. package/dist/cli/run.js.map +0 -1
  322. package/dist/cli/test.js.map +0 -1
  323. package/dist/domain/asset.js.map +0 -1
  324. package/dist/domain/asset.spec.d.ts +0 -1
  325. package/dist/domain/asset.spec.js +0 -55
  326. package/dist/domain/asset.spec.js.map +0 -1
  327. package/dist/domain/balance.js.map +0 -1
  328. package/dist/domain/balance.operator.js.map +0 -1
  329. package/dist/domain/balance.operator.spec.d.ts +0 -1
  330. package/dist/domain/balance.operator.spec.js +0 -23
  331. package/dist/domain/balance.operator.spec.js.map +0 -1
  332. package/dist/domain/balance.spec.d.ts +0 -1
  333. package/dist/domain/balance.spec.js +0 -83
  334. package/dist/domain/balance.spec.js.map +0 -1
  335. package/dist/domain/candle.js.map +0 -1
  336. package/dist/domain/candle.operator.js.map +0 -1
  337. package/dist/domain/candle.operator.spec.d.ts +0 -1
  338. package/dist/domain/candle.operator.spec.js +0 -112
  339. package/dist/domain/candle.operator.spec.js.map +0 -1
  340. package/dist/domain/candle.spec.d.ts +0 -1
  341. package/dist/domain/candle.spec.js +0 -26
  342. package/dist/domain/candle.spec.js.map +0 -1
  343. package/dist/domain/commission.js.map +0 -1
  344. package/dist/domain/commission.spec.d.ts +0 -1
  345. package/dist/domain/commission.spec.js +0 -31
  346. package/dist/domain/commission.spec.js.map +0 -1
  347. package/dist/domain/component.js.map +0 -1
  348. package/dist/domain/error.js.map +0 -1
  349. package/dist/domain/index.js.map +0 -1
  350. package/dist/domain/instrument.js.map +0 -1
  351. package/dist/domain/instrument.operator.js.map +0 -1
  352. package/dist/domain/instrument.operator.spec.d.ts +0 -1
  353. package/dist/domain/instrument.operator.spec.js +0 -24
  354. package/dist/domain/instrument.operator.spec.js.map +0 -1
  355. package/dist/domain/instrument.spec.d.ts +0 -1
  356. package/dist/domain/instrument.spec.js +0 -49
  357. package/dist/domain/instrument.spec.js.map +0 -1
  358. package/dist/domain/order.js.map +0 -1
  359. package/dist/domain/order.operator.js +0 -14
  360. package/dist/domain/order.operator.js.map +0 -1
  361. package/dist/domain/order.operator.spec.d.ts +0 -1
  362. package/dist/domain/order.operator.spec.js +0 -65
  363. package/dist/domain/order.operator.spec.js.map +0 -1
  364. package/dist/domain/order.spec.d.ts +0 -1
  365. package/dist/domain/order.spec.js +0 -34
  366. package/dist/domain/order.spec.js.map +0 -1
  367. package/dist/domain/orderbook.js.map +0 -1
  368. package/dist/domain/orderbook.operator.js.map +0 -1
  369. package/dist/domain/orderbook.operator.spec.d.ts +0 -1
  370. package/dist/domain/orderbook.operator.spec.js +0 -22
  371. package/dist/domain/orderbook.operator.spec.js.map +0 -1
  372. package/dist/domain/orderbook.spec.d.ts +0 -1
  373. package/dist/domain/orderbook.spec.js +0 -13
  374. package/dist/domain/orderbook.spec.js.map +0 -1
  375. package/dist/domain/position.js.map +0 -1
  376. package/dist/domain/position.operator.js.map +0 -1
  377. package/dist/domain/position.operator.spec.d.ts +0 -1
  378. package/dist/domain/position.operator.spec.js +0 -49
  379. package/dist/domain/position.operator.spec.js.map +0 -1
  380. package/dist/domain/position.spec.d.ts +0 -1
  381. package/dist/domain/position.spec.js +0 -31
  382. package/dist/domain/position.spec.js.map +0 -1
  383. package/dist/domain/session.js.map +0 -1
  384. package/dist/domain/session.spec.d.ts +0 -1
  385. package/dist/domain/session.spec.js +0 -23
  386. package/dist/domain/session.spec.js.map +0 -1
  387. package/dist/domain/timeframe.js.map +0 -1
  388. package/dist/domain/trade.js.map +0 -1
  389. package/dist/domain/trade.operator.js.map +0 -1
  390. package/dist/domain/trade.operator.spec.d.ts +0 -1
  391. package/dist/domain/trade.operator.spec.js +0 -24
  392. package/dist/domain/trade.operator.spec.js.map +0 -1
  393. package/dist/domain/trade.spec.d.ts +0 -1
  394. package/dist/domain/trade.spec.js +0 -13
  395. package/dist/domain/trade.spec.js.map +0 -1
  396. package/dist/index.js.map +0 -1
  397. package/dist/indicator/atr.d.ts +0 -4
  398. package/dist/indicator/atr.js +0 -16
  399. package/dist/indicator/atr.js.map +0 -1
  400. package/dist/indicator/cross.d.ts +0 -4
  401. package/dist/indicator/cross.js +0 -41
  402. package/dist/indicator/cross.js.map +0 -1
  403. package/dist/indicator/cross.spec.d.ts +0 -1
  404. package/dist/indicator/cross.spec.js +0 -102
  405. package/dist/indicator/cross.spec.js.map +0 -1
  406. package/dist/indicator/donchian.d.ts +0 -10
  407. package/dist/indicator/donchian.js +0 -16
  408. package/dist/indicator/donchian.js.map +0 -1
  409. package/dist/indicator/drawdown.d.ts +0 -3
  410. package/dist/indicator/drawdown.js +0 -28
  411. package/dist/indicator/drawdown.js.map +0 -1
  412. package/dist/indicator/ema.d.ts +0 -3
  413. package/dist/indicator/ema.js +0 -24
  414. package/dist/indicator/ema.js.map +0 -1
  415. package/dist/indicator/ema.spec.d.ts +0 -1
  416. package/dist/indicator/ema.spec.js +0 -24
  417. package/dist/indicator/ema.spec.js.map +0 -1
  418. package/dist/indicator/envelope.d.ts +0 -6
  419. package/dist/indicator/envelope.js +0 -18
  420. package/dist/indicator/envelope.js.map +0 -1
  421. package/dist/indicator/index.d.ts +0 -17
  422. package/dist/indicator/index.js +0 -34
  423. package/dist/indicator/index.js.map +0 -1
  424. package/dist/indicator/macd.d.ts +0 -3
  425. package/dist/indicator/macd.js +0 -13
  426. package/dist/indicator/macd.js.map +0 -1
  427. package/dist/indicator/min-max.d.ts +0 -6
  428. package/dist/indicator/min-max.js +0 -22
  429. package/dist/indicator/min-max.js.map +0 -1
  430. package/dist/indicator/ring-buffer.d.ts +0 -16
  431. package/dist/indicator/ring-buffer.js +0 -56
  432. package/dist/indicator/ring-buffer.js.map +0 -1
  433. package/dist/indicator/rma.d.ts +0 -3
  434. package/dist/indicator/rma.js +0 -24
  435. package/dist/indicator/rma.js.map +0 -1
  436. package/dist/indicator/sma.d.ts +0 -3
  437. package/dist/indicator/sma.js +0 -17
  438. package/dist/indicator/sma.js.map +0 -1
  439. package/dist/indicator/sma.spec.d.ts +0 -1
  440. package/dist/indicator/sma.spec.js +0 -20
  441. package/dist/indicator/sma.spec.js.map +0 -1
  442. package/dist/indicator/swma.d.ts +0 -3
  443. package/dist/indicator/swma.js +0 -24
  444. package/dist/indicator/swma.js.map +0 -1
  445. package/dist/indicator/tma.d.ts +0 -3
  446. package/dist/indicator/tma.js +0 -16
  447. package/dist/indicator/tma.js.map +0 -1
  448. package/dist/indicator/tma.spec.d.ts +0 -1
  449. package/dist/indicator/tma.spec.js +0 -20
  450. package/dist/indicator/tma.spec.js.map +0 -1
  451. package/dist/indicator/trailing.d.ts +0 -14
  452. package/dist/indicator/trailing.js +0 -68
  453. package/dist/indicator/trailing.js.map +0 -1
  454. package/dist/indicator/trailing.spec.d.ts +0 -1
  455. package/dist/indicator/trailing.spec.js +0 -70
  456. package/dist/indicator/trailing.spec.js.map +0 -1
  457. package/dist/indicator/true-range.d.ts +0 -4
  458. package/dist/indicator/true-range.js +0 -20
  459. package/dist/indicator/true-range.js.map +0 -1
  460. package/dist/indicator/true-range.spec.d.ts +0 -1
  461. package/dist/indicator/true-range.spec.js +0 -28
  462. package/dist/indicator/true-range.spec.js.map +0 -1
  463. package/dist/indicator/window.d.ts +0 -3
  464. package/dist/indicator/window.js +0 -22
  465. package/dist/indicator/window.js.map +0 -1
  466. package/dist/indicator/wma.d.ts +0 -3
  467. package/dist/indicator/wma.js +0 -23
  468. package/dist/indicator/wma.js.map +0 -1
  469. package/dist/indicator/wma.spec.d.ts +0 -1
  470. package/dist/indicator/wma.spec.js +0 -20
  471. package/dist/indicator/wma.spec.js.map +0 -1
  472. package/dist/shared/collections.js.map +0 -1
  473. package/dist/shared/collections.spec.d.ts +0 -1
  474. package/dist/shared/collections.spec.js +0 -28
  475. package/dist/shared/collections.spec.js.map +0 -1
  476. package/dist/shared/datetime.js.map +0 -1
  477. package/dist/shared/decimals.js.map +0 -1
  478. package/dist/shared/decimals.spec.d.ts +0 -1
  479. package/dist/shared/decimals.spec.js +0 -29
  480. package/dist/shared/decimals.spec.js.map +0 -1
  481. package/dist/shared/index.js.map +0 -1
  482. package/dist/shared/io.d.ts +0 -1
  483. package/dist/shared/io.js +0 -8
  484. package/dist/shared/io.js.map +0 -1
  485. package/dist/shared/logger.js.map +0 -1
  486. package/dist/shared/pipe.js.map +0 -1
  487. package/dist/shared/policy.js.map +0 -1
  488. package/dist/storage/cache.js.map +0 -1
  489. package/dist/storage/cache.spec.d.ts +0 -1
  490. package/dist/storage/cache.spec.js +0 -18
  491. package/dist/storage/cache.spec.js.map +0 -1
  492. package/dist/storage/feed.js.map +0 -1
  493. package/dist/storage/index.js.map +0 -1
  494. package/dist/storage/measurement.js.map +0 -1
  495. package/dist/storage/storage.js.map +0 -1
  496. package/dist/store/index.js.map +0 -1
  497. package/dist/store/store-balance.event.js.map +0 -1
  498. package/dist/store/store-balance.event.spec.d.ts +0 -1
  499. package/dist/store/store-balance.event.spec.js +0 -26
  500. package/dist/store/store-balance.event.spec.js.map +0 -1
  501. package/dist/store/store-instrument.event.js.map +0 -1
  502. package/dist/store/store-instrument.event.spec.d.ts +0 -1
  503. package/dist/store/store-instrument.event.spec.js +0 -22
  504. package/dist/store/store-instrument.event.spec.js.map +0 -1
  505. package/dist/store/store-order.event.js.map +0 -1
  506. package/dist/store/store-order.event.spec.d.ts +0 -1
  507. package/dist/store/store-order.event.spec.js +0 -21
  508. package/dist/store/store-order.event.spec.js.map +0 -1
  509. package/dist/store/store-orderbook.event.js.map +0 -1
  510. package/dist/store/store-orderbook.event.spec.d.ts +0 -1
  511. package/dist/store/store-orderbook.event.spec.js +0 -28
  512. package/dist/store/store-orderbook.event.spec.js.map +0 -1
  513. package/dist/store/store-position.event.js.map +0 -1
  514. package/dist/store/store-state.js.map +0 -1
  515. package/dist/store/store-trade.event.js.map +0 -1
  516. package/dist/store/store-trade.event.spec.d.ts +0 -1
  517. package/dist/store/store-trade.event.spec.js +0 -44
  518. package/dist/store/store-trade.event.spec.js.map +0 -1
  519. package/dist/store/store.event.js.map +0 -1
  520. package/dist/store/store.js.map +0 -1
  521. package/dist/store/store.spec.d.ts +0 -1
  522. package/dist/store/store.spec.js +0 -119
  523. package/dist/store/store.spec.js.map +0 -1
  524. package/dist/tsconfig.tsbuildinfo +0 -1
  525. package/jestconfig.json +0 -13
  526. package/src/adapter/backtester/backtester-adapter.spec.ts +0 -133
  527. package/src/adapter/paper/paper-adapter.spec.ts +0 -114
  528. package/src/bootstrap.ts +0 -139
  529. package/src/indicator/atr.ts +0 -21
  530. package/src/indicator/cross.spec.ts +0 -136
  531. package/src/indicator/cross.ts +0 -59
  532. package/src/indicator/donchian.ts +0 -38
  533. package/src/indicator/drawdown.ts +0 -29
  534. package/src/indicator/ema.spec.ts +0 -39
  535. package/src/indicator/ema.ts +0 -27
  536. package/src/indicator/envelope.ts +0 -25
  537. package/src/indicator/index.ts +0 -17
  538. package/src/indicator/macd.ts +0 -22
  539. package/src/indicator/min-max.ts +0 -28
  540. package/src/indicator/ring-buffer.ts +0 -63
  541. package/src/indicator/rma.ts +0 -26
  542. package/src/indicator/sma.spec.ts +0 -21
  543. package/src/indicator/sma.ts +0 -25
  544. package/src/indicator/swma.ts +0 -28
  545. package/src/indicator/tma.spec.ts +0 -21
  546. package/src/indicator/tma.ts +0 -20
  547. package/src/indicator/trailing.spec.ts +0 -88
  548. package/src/indicator/trailing.ts +0 -81
  549. package/src/indicator/true-range.spec.ts +0 -32
  550. package/src/indicator/true-range.ts +0 -32
  551. package/src/indicator/window.ts +0 -28
  552. package/src/indicator/wma.spec.ts +0 -20
  553. package/src/indicator/wma.ts +0 -29
  554. package/src/shared/io.ts +0 -3
  555. package/src/store/store-order.event.spec.ts +0 -28
package/dist/cli/index.js CHANGED
@@ -1,20 +1,32 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
+ return new (P || (P = Promise))(function (resolve, reject) {
6
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
10
+ });
11
+ };
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
3
15
  Object.defineProperty(exports, "__esModule", { value: true });
4
16
  const child_process_1 = require("child_process");
5
17
  const commander_1 = require("commander");
6
- const node_watch_1 = require("node-watch");
7
- const build_1 = require("./build");
8
- const dev_1 = require("./dev");
9
- const pull_1 = require("./pull");
10
- const run_1 = require("./run");
11
- const test_1 = require("./test");
18
+ const node_watch_1 = __importDefault(require("node-watch"));
19
+ const build_1 = __importDefault(require("./build"));
20
+ const dev_1 = __importDefault(require("./dev"));
21
+ const pull_1 = __importDefault(require("./pull"));
22
+ const run_1 = __importDefault(require("./run"));
23
+ const test_1 = __importDefault(require("./test"));
12
24
  commander_1.program
13
25
  .command('build')
14
26
  .description('builds a production version of the app')
15
- .action(async () => {
16
- await (0, build_1.default)();
17
- });
27
+ .action(() => __awaiter(void 0, void 0, void 0, function* () {
28
+ yield (0, build_1.default)();
29
+ }));
18
30
  commander_1.program
19
31
  .command('run')
20
32
  .argument('<name>', 'strategy to execute')
@@ -69,4 +81,3 @@ else {
69
81
  (0, node_watch_1.default)(process.cwd() + '/src', { recursive: true }, () => spawnChildProcess());
70
82
  }
71
83
  }
72
- //# sourceMappingURL=index.js.map
@@ -1,8 +1,2 @@
1
- import { Observable } from 'rxjs';
2
- import { Session, SessionDescriptor } from './../../domain';
3
- export declare type StrategyModule = {
4
- descriptor: SessionDescriptor;
5
- default: (session: Session) => Observable<any>;
6
- };
7
1
  export declare function buildDirectory(): string;
8
- export declare function getModule(name: string): Promise<StrategyModule>;
2
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../../src/cli/internal/workspace.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,WAE7B"}
@@ -1,14 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getModule = exports.buildDirectory = void 0;
3
+ exports.buildDirectory = void 0;
4
4
  const path_1 = require("path");
5
5
  const shared_1 = require("./../../shared");
6
6
  function buildDirectory() {
7
7
  return (0, path_1.join)(process.cwd(), (0, shared_1.workingDirectory)(), 'build');
8
8
  }
9
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
@@ -1 +1,2 @@
1
1
  export default function (name: string, instrument: string, options: any): Promise<void>;
2
+ //# sourceMappingURL=pull.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/cli/pull.ts"],"names":[],"mappings":"AAWA,yBAA+B,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,iBAmD5E"}
package/dist/cli/pull.js CHANGED
@@ -1,47 +1,77 @@
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
2
37
  Object.defineProperty(exports, "__esModule", { value: true });
3
38
  const cli_progress_1 = require("cli-progress");
4
- const bootstrap_1 = require("../bootstrap");
39
+ const path_1 = require("path");
5
40
  const domain_1 = require("../domain");
41
+ const session_builder_1 = require("../domain/session-builder");
42
+ const shared_1 = require("../shared");
6
43
  const storage_1 = require("../storage");
7
- const build_1 = require("./build");
44
+ const strategy_1 = require("../strategy");
45
+ const build_1 = __importDefault(require("./build"));
8
46
  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
- console.time('Pulling completed in');
31
- await session.awake(undefined);
32
- const bar = new cli_progress_1.SingleBar({}, cli_progress_1.Presets.shades_classic);
33
- const feed = new storage_1.Feed(module.descriptor.storage('feed'));
34
- bar.start(100, 0);
35
- await session.aggregate.feed((0, domain_1.instrumentOf)(instrument), from, to, async (timestamp, events) => {
36
- const duration = to - from;
37
- const completed = timestamp - from;
38
- await feed.save(events);
39
- bar.update(Math.floor((completed / duration) * 100));
47
+ function default_1(name, instrument, options) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ if (yield (0, build_1.default)()) {
50
+ return;
51
+ }
52
+ yield Promise.resolve().then(() => __importStar(require((0, path_1.join)((0, workspace_1.buildDirectory)(), 'index'))));
53
+ const builder = new session_builder_1.SessionBuilder().useSessionId(options.id ? Number(options.id) : (0, shared_1.now)());
54
+ yield (0, strategy_1.prepare)(name, builder);
55
+ const session = builder.paper();
56
+ console.time('Pulling completed in');
57
+ yield session.awake();
58
+ const bar = new cli_progress_1.SingleBar({
59
+ format: `Pulling ${instrument} [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}`
60
+ }, cli_progress_1.Presets.rect);
61
+ const feed = new storage_1.Feed(builder.storage('feed'));
62
+ const from = options.from ? Date.parse(options.from) : builder.period.from;
63
+ const to = options.to ? Date.parse(options.to) : builder.period.to;
64
+ bar.start(100, 0);
65
+ yield session.aggregate.feed((0, domain_1.instrumentOf)(instrument), from, to, (timestamp, events) => __awaiter(this, void 0, void 0, function* () {
66
+ const duration = to - from;
67
+ const completed = timestamp - from;
68
+ yield feed.save(events);
69
+ bar.update(Math.floor((completed / duration) * 100));
70
+ }));
71
+ bar.update(100);
72
+ bar.stop();
73
+ yield session.dispose();
74
+ console.timeLog('Pulling completed in');
40
75
  });
41
- bar.update(100);
42
- bar.stop();
43
- await session.dispose();
44
- console.timeLog('Pulling completed in');
45
76
  }
46
77
  exports.default = default_1;
47
- //# sourceMappingURL=pull.js.map
package/dist/cli/run.d.ts CHANGED
@@ -1 +1,2 @@
1
- export default function (name: any, options: any): Promise<void>;
1
+ export default function (name: string, options: any): Promise<void>;
2
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAQA,yBAA+B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,iBAgBxD"}
package/dist/cli/run.js CHANGED
@@ -1,19 +1,57 @@
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
2
37
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const dotenv = require("dotenv");
4
- const bootstrap_1 = require("../bootstrap");
5
- const build_1 = require("./build");
38
+ const path_1 = require("path");
39
+ const session_builder_1 = require("../domain/session-builder");
40
+ const shared_1 = require("../shared");
41
+ const strategy_1 = require("../strategy");
42
+ const build_1 = __importDefault(require("./build"));
6
43
  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);
44
+ function default_1(name, options) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ if (yield (0, build_1.default)()) {
47
+ return;
48
+ }
49
+ yield Promise.resolve().then(() => __importStar(require((0, path_1.join)((0, workspace_1.buildDirectory)(), 'index'))));
50
+ const builder = new session_builder_1.SessionBuilder().useSessionId(options.id ? Number(options.id) : (0, shared_1.now)());
51
+ const rules = yield (0, strategy_1.prepare)(name, builder);
52
+ const session = builder.live();
53
+ yield session.awake();
54
+ rules(session).subscribe();
55
+ });
17
56
  }
18
57
  exports.default = default_1;
19
- //# sourceMappingURL=run.js.map
@@ -1 +1,2 @@
1
- export default function (name: any, options: any): Promise<void>;
1
+ export default function (name: string, options: any): Promise<void>;
2
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/cli/test.ts"],"names":[],"mappings":"AAQA,yBAA+B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,iBA+BxD"}
package/dist/cli/test.js CHANGED
@@ -1,41 +1,66 @@
1
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
2
37
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const bootstrap_1 = require("../bootstrap");
4
- const build_1 = require("./build");
38
+ const path_1 = require("path");
39
+ const session_builder_1 = require("../domain/session-builder");
40
+ const shared_1 = require("../shared");
41
+ const strategy_1 = require("../strategy");
42
+ const build_1 = __importDefault(require("./build"));
5
43
  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
- onBacktestStarted: () => {
28
- console.log('backtest started');
29
- console.time('backtest completed');
30
- },
31
- onBacktestCompleted: async () => {
32
- await session.dispose();
33
- console.timeEnd('backtest completed');
34
- resolve();
35
- }
44
+ function default_1(name, options) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ if (yield (0, build_1.default)()) {
47
+ return;
48
+ }
49
+ yield Promise.resolve().then(() => __importStar(require((0, path_1.join)((0, workspace_1.buildDirectory)(), 'index'))));
50
+ const builder = new session_builder_1.SessionBuilder().useSessionId(options.id ? Number(options.id) : (0, shared_1.now)());
51
+ const rules = yield (0, strategy_1.prepare)(name, builder);
52
+ const startTime = performance.now();
53
+ const [session, backtester] = builder.backtest({
54
+ onBacktestStarted: () => shared_1.Logger.info('backtest', `new session ${session.id} started`),
55
+ onBacktestCompleted: () => __awaiter(this, void 0, void 0, function* () {
56
+ yield session.dispose();
57
+ const seconds = ((performance.now() - startTime) / 1000).toFixed(3);
58
+ shared_1.Logger.info('backtest', `session ${session.id} completed in ${seconds}s`);
59
+ })
36
60
  });
37
- await session.awake(module.default);
61
+ yield session.awake();
62
+ rules(session).subscribe();
63
+ backtester.tryContinue();
38
64
  });
39
65
  }
40
66
  exports.default = default_1;
41
- //# sourceMappingURL=test.js.map
@@ -1,17 +1,37 @@
1
1
  import { decimal } from './../shared/decimals';
2
2
  export declare const AssetSelectorSeparator = ":";
3
+ /**
4
+ * Supposed to query specific @see Asset based on string notation.
5
+ */
3
6
  export declare class AssetSelector {
4
7
  readonly id: string;
5
8
  readonly name: string;
6
9
  readonly adapterName: string;
7
10
  constructor(name: string, adapterName: string);
11
+ /**
12
+ * Returns unified notation of the asset.
13
+ */
8
14
  toString(): string;
9
15
  }
16
+ /**
17
+ * Creates @see AssetSelector based on unified string notation.
18
+ */
10
19
  export declare function assetOf(selector: string): AssetSelector;
20
+ /**
21
+ * Represents a security that you can trade or hold in your wallet.
22
+ * For example, you can combine two trading assets to create a trading instrument.
23
+ */
11
24
  export declare class Asset extends AssetSelector {
12
25
  readonly scale: number;
13
26
  readonly tickSize: decimal;
14
27
  constructor(name: string, adapterName: string, scale: number);
28
+ /**
29
+ * Rounds down a number to the asset precision.
30
+ */
15
31
  floor(number: decimal): decimal;
32
+ /**
33
+ * Rounds up a number to the asset precision.
34
+ */
16
35
  ceil(number: decimal): decimal;
17
36
  }
37
+ //# sourceMappingURL=asset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../src/domain/asset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAGlD,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C;;GAEG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAc7C;;OAEG;IACH,QAAQ,IAAI,MAAM;CAGnB;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAQvD;AAED;;;GAGG;AACH,qBAAa,KAAM,SAAQ,aAAa;aAGyB,KAAK,EAAE,MAAM;IAF5E,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;gBAEf,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAkB,KAAK,EAAE,MAAM;IAU5E;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAI/B;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CAG/B"}
@@ -4,6 +4,9 @@ exports.Asset = exports.assetOf = exports.AssetSelector = exports.AssetSelectorS
4
4
  const decimals_1 = require("./../shared/decimals");
5
5
  const error_1 = require("./error");
6
6
  exports.AssetSelectorSeparator = ':';
7
+ /**
8
+ * Supposed to query specific @see Asset based on string notation.
9
+ */
7
10
  class AssetSelector {
8
11
  constructor(name, adapterName) {
9
12
  if (!(name === null || name === void 0 ? void 0 : name.length)) {
@@ -16,11 +19,17 @@ class AssetSelector {
16
19
  this.adapterName = adapterName.toLowerCase();
17
20
  this.id = `${this.adapterName}${exports.AssetSelectorSeparator}${this.name}`;
18
21
  }
22
+ /**
23
+ * Returns unified notation of the asset.
24
+ */
19
25
  toString() {
20
26
  return this.id;
21
27
  }
22
28
  }
23
29
  exports.AssetSelector = AssetSelector;
30
+ /**
31
+ * Creates @see AssetSelector based on unified string notation.
32
+ */
24
33
  function assetOf(selector) {
25
34
  const [adapterName, name, ...rest] = selector.split(exports.AssetSelectorSeparator);
26
35
  if (!adapterName || !name || rest.length) {
@@ -29,6 +38,10 @@ function assetOf(selector) {
29
38
  return new AssetSelector(name, adapterName);
30
39
  }
31
40
  exports.assetOf = assetOf;
41
+ /**
42
+ * Represents a security that you can trade or hold in your wallet.
43
+ * For example, you can combine two trading assets to create a trading instrument.
44
+ */
32
45
  class Asset extends AssetSelector {
33
46
  constructor(name, adapterName, scale) {
34
47
  super(name, adapterName);
@@ -38,12 +51,17 @@ class Asset extends AssetSelector {
38
51
  }
39
52
  this.tickSize = (0, decimals_1.d)(1.0).div(Math.pow(10, this.scale));
40
53
  }
54
+ /**
55
+ * Rounds down a number to the asset precision.
56
+ */
41
57
  floor(number) {
42
58
  return number.toFloor(this.scale);
43
59
  }
60
+ /**
61
+ * Rounds up a number to the asset precision.
62
+ */
44
63
  ceil(number) {
45
64
  return number.toCeil(this.scale);
46
65
  }
47
66
  }
48
67
  exports.Asset = Asset;
49
- //# sourceMappingURL=asset.js.map
@@ -4,3 +4,4 @@ import { AssetSelector } from './asset';
4
4
  import { Balance } from './balance';
5
5
  import { Component } from './component';
6
6
  export declare function balance(selector: AssetSelector, state: State): (source$: Observable<Component>) => Observable<Balance>;
7
+ //# sourceMappingURL=balance-operator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance-operator.d.ts","sourceRoot":"","sources":["../../src/domain/balance-operator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,UAAU,EAAa,MAAM,MAAM,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,wBAAgB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,aAC1C,WAAW,SAAS,CAAC,yBAMvC"}
@@ -7,4 +7,3 @@ function balance(selector, state) {
7
7
  return (source$) => source$.pipe((0, rxjs_1.startWith)(state.balance.get(selector.id)), (0, rxjs_1.filter)(it => it instanceof balance_1.Balance && (!selector || it.asset.id == selector.id)), (0, rxjs_1.map)(it => it));
8
8
  }
9
9
  exports.balance = balance;
10
- //# sourceMappingURL=balance.operator.js.map
@@ -1,25 +1,49 @@
1
- import { decimal, timestamp } from '../shared';
1
+ import { decimal } from '../shared';
2
2
  import { Asset } from './';
3
3
  import { Component } from './component';
4
4
  import { Position, PositionMode } from './position';
5
+ /**
6
+ * Represents single asset balance in your wallet.
7
+ */
5
8
  export declare class Balance implements Component {
9
+ timestamp: number;
6
10
  readonly asset: Asset;
7
11
  id: string;
8
12
  kind: string;
9
- timestamp: timestamp;
10
13
  private locker;
11
14
  private available;
12
15
  private unavailable;
16
+ /**
17
+ * Returns available amount to trade.
18
+ */
13
19
  get free(): decimal;
20
+ /**
21
+ * Return locked amount for order.
22
+ */
14
23
  get locked(): decimal;
24
+ /**
25
+ * Return total amount of asset in wallet.
26
+ * Represents a sum of free, locked and opened positions.
27
+ */
15
28
  get total(): decimal;
29
+ /**
30
+ * Collection of opened positions backed by this balance.
31
+ */
16
32
  readonly position: Record<string, Position>;
17
- constructor(asset: Asset);
33
+ constructor(timestamp: number, asset: Asset);
18
34
  account(amount: decimal): void;
19
35
  set(free: decimal, locked: decimal): void;
36
+ /**
37
+ * Lock specific amount of asset.
38
+ * If you place new pending order, you will lock your balance to fund order.
39
+ */
20
40
  lock(id: string, amount: decimal): void;
21
41
  tryUnlock(id: string): boolean;
42
+ /**
43
+ * Returns unrealized profit and loss for all positions backed by this balance.
44
+ */
22
45
  getEstimatedUnrealizedPnL(mode?: PositionMode): decimal;
23
46
  getEstimatedMargin(mode?: PositionMode): decimal;
24
47
  toString(): string;
25
48
  }
49
+ //# sourceMappingURL=balance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.d.ts","sourceRoot":"","sources":["../../src/domain/balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEpD;;GAEG;AACH,qBAAa,OAAQ,YAAW,SAAS;IAqCpB,SAAS,EAAE,MAAM;aAAkB,KAAK,EAAE,KAAK;IApClE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,SAAa;IAEjB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,WAAW,CAAU;IAE7B;;OAEG;IACH,IAAI,IAAI,IAAI,OAAO,CAElB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,OAAO,CAInB;IAED;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAM;gBAE9B,SAAS,EAAE,MAAM,EAAkB,KAAK,EAAE,KAAK;IAIlE,OAAO,CAAC,MAAM,EAAE,OAAO;IAQvB,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IAMlC;;;OAGG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAchC,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAmB9B;;OAEG;IACH,yBAAyB,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO;IAYvD,kBAAkB,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO;IAQhD,QAAQ;CAGT"}
@@ -3,22 +3,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Balance = void 0;
4
4
  const shared_1 = require("../shared");
5
5
  const error_1 = require("./error");
6
+ /**
7
+ * Represents single asset balance in your wallet.
8
+ */
6
9
  class Balance {
7
- constructor(asset) {
10
+ constructor(timestamp, asset) {
11
+ this.timestamp = timestamp;
8
12
  this.asset = asset;
9
13
  this.kind = 'balance';
10
14
  this.locker = {};
11
15
  this.available = shared_1.d.Zero;
12
16
  this.unavailable = shared_1.d.Zero;
17
+ /**
18
+ * Collection of opened positions backed by this balance.
19
+ */
13
20
  this.position = {};
14
21
  this.id = asset.id;
15
22
  }
23
+ /**
24
+ * Returns available amount to trade.
25
+ */
16
26
  get free() {
17
27
  return this.asset.floor(this.available).add(this.getEstimatedUnrealizedPnL('CROSS'));
18
28
  }
29
+ /**
30
+ * Return locked amount for order.
31
+ */
19
32
  get locked() {
20
33
  return this.unavailable;
21
34
  }
35
+ /**
36
+ * Return total amount of asset in wallet.
37
+ * Represents a sum of free, locked and opened positions.
38
+ */
22
39
  get total() {
23
40
  return this.asset
24
41
  .floor(this.available.add(this.unavailable))
@@ -35,6 +52,10 @@ class Balance {
35
52
  this.unavailable = locked;
36
53
  this.locker = {};
37
54
  }
55
+ /**
56
+ * Lock specific amount of asset.
57
+ * If you place new pending order, you will lock your balance to fund order.
58
+ */
38
59
  lock(id, amount) {
39
60
  if (this.available.lessThan(amount)) {
40
61
  throw (0, error_1.insufficientFundsError)(this.id, amount, this.available);
@@ -59,8 +80,16 @@ class Balance {
59
80
  this.unavailable = this.unavailable.minus(amount);
60
81
  return true;
61
82
  }
83
+ /**
84
+ * Returns unrealized profit and loss for all positions backed by this balance.
85
+ */
62
86
  getEstimatedUnrealizedPnL(mode) {
63
- return Object.values(this.position).reduce((aggregate, position) => (aggregate = aggregate.add(mode && mode != position.mode ? 0 : position.estimatedUnrealizedPnL)), shared_1.d.Zero);
87
+ return Object.values(this.position).reduce((aggregate, position) => {
88
+ var _a;
89
+ return aggregate.add(mode && mode != position.mode
90
+ ? shared_1.d.Zero
91
+ : (_a = position.estimatedUnrealizedPnL) !== null && _a !== void 0 ? _a : shared_1.d.Zero);
92
+ }, shared_1.d.Zero);
64
93
  }
65
94
  getEstimatedMargin(mode) {
66
95
  return Object.values(this.position).reduce((aggregate, position) => (aggregate = aggregate.add(mode && mode != position.mode ? 0 : position.margin)), shared_1.d.Zero);
@@ -70,4 +99,3 @@ class Balance {
70
99
  }
71
100
  }
72
101
  exports.Balance = Balance;
73
- //# sourceMappingURL=balance.js.map