@quantform/core 0.5.14 → 0.5.15

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 (408) hide show
  1. package/dist/adapter/adapter-aggregate.d.ts +4 -2
  2. package/dist/adapter/adapter-aggregate.js +16 -18
  3. package/dist/adapter/adapter-aggregate.js.map +1 -1
  4. package/dist/adapter/adapter.d.ts +20 -21
  5. package/dist/adapter/adapter.js +8 -43
  6. package/dist/adapter/adapter.js.map +1 -1
  7. package/dist/adapter/backtester/backtester-adapter.d.ts +9 -7
  8. package/dist/adapter/backtester/backtester-adapter.js +13 -12
  9. package/dist/adapter/backtester/backtester-adapter.js.map +1 -1
  10. package/dist/{tests → adapter/backtester}/backtester-adapter.spec.d.ts +0 -0
  11. package/dist/adapter/backtester/backtester-adapter.spec.js +82 -0
  12. package/dist/adapter/backtester/backtester-adapter.spec.js.map +1 -0
  13. package/dist/adapter/backtester/backtester-cursor.d.ts +3 -4
  14. package/dist/adapter/backtester/backtester-cursor.js +2 -1
  15. package/dist/adapter/backtester/backtester-cursor.js.map +1 -1
  16. package/dist/adapter/backtester/backtester-cursor.spec.js +17 -18
  17. package/dist/adapter/backtester/backtester-cursor.spec.js.map +1 -1
  18. package/dist/adapter/backtester/backtester-streamer.d.ts +4 -1
  19. package/dist/adapter/backtester/backtester-streamer.js +39 -18
  20. package/dist/adapter/backtester/backtester-streamer.js.map +1 -1
  21. package/dist/adapter/backtester/backtester-streamer.spec.js +13 -13
  22. package/dist/adapter/backtester/backtester-streamer.spec.js.map +1 -1
  23. package/dist/adapter/error.d.ts +2 -0
  24. package/dist/adapter/error.js +12 -0
  25. package/dist/adapter/error.js.map +1 -0
  26. package/dist/adapter/paper/engine/paper-engine.d.ts +11 -0
  27. package/dist/adapter/paper/engine/paper-engine.js +103 -0
  28. package/dist/adapter/paper/engine/paper-engine.js.map +1 -0
  29. package/dist/adapter/paper/{simulator/paper-spot-simulator.spec.d.ts → engine/paper-engine.spec.d.ts} +0 -0
  30. package/dist/adapter/paper/engine/paper-engine.spec.js +54 -0
  31. package/dist/adapter/paper/engine/paper-engine.spec.js.map +1 -0
  32. package/dist/adapter/paper/index.d.ts +1 -2
  33. package/dist/adapter/paper/index.js +1 -2
  34. package/dist/adapter/paper/index.js.map +1 -1
  35. package/dist/adapter/paper/paper-adapter.d.ts +7 -7
  36. package/dist/adapter/paper/paper-adapter.js +20 -18
  37. package/dist/adapter/paper/paper-adapter.js.map +1 -1
  38. package/dist/adapter/paper/paper-adapter.spec.js +35 -17
  39. package/dist/adapter/paper/paper-adapter.spec.js.map +1 -1
  40. package/dist/bootstrap.js +11 -10
  41. package/dist/bootstrap.js.map +1 -1
  42. package/dist/cli/pull.js +3 -1
  43. package/dist/cli/pull.js.map +1 -1
  44. package/dist/cli/test.js +5 -1
  45. package/dist/cli/test.js.map +1 -1
  46. package/dist/domain/asset.d.ts +6 -5
  47. package/dist/domain/asset.js +22 -16
  48. package/dist/domain/asset.js.map +1 -1
  49. package/dist/domain/asset.spec.js +32 -32
  50. package/dist/domain/asset.spec.js.map +1 -1
  51. package/dist/domain/balance.d.ts +7 -7
  52. package/dist/domain/balance.js +26 -21
  53. package/dist/domain/balance.js.map +1 -1
  54. package/dist/domain/balance.operator.d.ts +6 -0
  55. package/dist/domain/balance.operator.js +10 -0
  56. package/dist/domain/balance.operator.js.map +1 -0
  57. package/dist/{shared/policy.spec.d.ts → domain/balance.operator.spec.d.ts} +0 -0
  58. package/dist/domain/balance.operator.spec.js +23 -0
  59. package/dist/domain/balance.operator.spec.js.map +1 -0
  60. package/dist/domain/balance.spec.js +67 -7
  61. package/dist/domain/balance.spec.js.map +1 -1
  62. package/dist/domain/candle.d.ts +2 -17
  63. package/dist/domain/candle.js +3 -70
  64. package/dist/domain/candle.js.map +1 -1
  65. package/dist/domain/candle.operator.d.ts +9 -0
  66. package/dist/domain/candle.operator.js +64 -0
  67. package/dist/domain/candle.operator.js.map +1 -0
  68. package/dist/{shared/topic.spec.d.ts → domain/candle.operator.spec.d.ts} +0 -0
  69. package/dist/domain/candle.operator.spec.js +111 -0
  70. package/dist/domain/candle.operator.spec.js.map +1 -0
  71. package/dist/domain/candle.spec.js +11 -53
  72. package/dist/domain/candle.spec.js.map +1 -1
  73. package/dist/domain/commission.d.ts +4 -1
  74. package/dist/domain/commission.js +2 -2
  75. package/dist/domain/commission.js.map +1 -1
  76. package/dist/{store/event/store-balance.event.spec.d.ts → domain/commission.spec.d.ts} +0 -0
  77. package/dist/domain/commission.spec.js +30 -0
  78. package/dist/domain/commission.spec.js.map +1 -0
  79. package/dist/domain/component.d.ts +1 -0
  80. package/dist/domain/error.d.ts +5 -0
  81. package/dist/domain/error.js +24 -0
  82. package/dist/domain/error.js.map +1 -0
  83. package/dist/domain/index.d.ts +8 -1
  84. package/dist/domain/index.js +8 -1
  85. package/dist/domain/index.js.map +1 -1
  86. package/dist/domain/instrument.d.ts +3 -2
  87. package/dist/domain/instrument.js +17 -9
  88. package/dist/domain/instrument.js.map +1 -1
  89. package/dist/domain/instrument.operator.d.ts +6 -0
  90. package/dist/domain/instrument.operator.js +14 -0
  91. package/dist/domain/instrument.operator.js.map +1 -0
  92. package/dist/{store/event/store-candle.event.spec.d.ts → domain/instrument.operator.spec.d.ts} +0 -0
  93. package/dist/domain/instrument.operator.spec.js +24 -0
  94. package/dist/domain/instrument.operator.spec.js.map +1 -0
  95. package/dist/domain/instrument.spec.js +22 -30
  96. package/dist/domain/instrument.spec.js.map +1 -1
  97. package/dist/domain/order.d.ts +12 -14
  98. package/dist/domain/order.js +37 -26
  99. package/dist/domain/order.js.map +1 -1
  100. package/dist/domain/order.operator.d.ts +7 -0
  101. package/dist/domain/order.operator.js +14 -0
  102. package/dist/domain/order.operator.js.map +1 -0
  103. package/dist/{store/event/store-instrument.event.spec.d.ts → domain/order.operator.spec.d.ts} +0 -0
  104. package/dist/domain/order.operator.spec.js +64 -0
  105. package/dist/domain/order.operator.spec.js.map +1 -0
  106. package/dist/{store/event/store-order.event.spec.d.ts → domain/order.spec.d.ts} +0 -0
  107. package/dist/domain/order.spec.js +33 -0
  108. package/dist/domain/order.spec.js.map +1 -0
  109. package/dist/domain/orderbook.d.ts +1 -0
  110. package/dist/domain/orderbook.js +1 -0
  111. package/dist/domain/orderbook.js.map +1 -1
  112. package/dist/domain/orderbook.operator.d.ts +6 -0
  113. package/dist/domain/orderbook.operator.js +10 -0
  114. package/dist/domain/orderbook.operator.js.map +1 -0
  115. package/dist/{store/event/store-trade.event.spec.d.ts → domain/orderbook.operator.spec.d.ts} +0 -0
  116. package/dist/domain/orderbook.operator.spec.js +22 -0
  117. package/dist/domain/orderbook.operator.spec.js.map +1 -0
  118. package/dist/domain/orderbook.spec.d.ts +1 -0
  119. package/dist/domain/orderbook.spec.js +13 -0
  120. package/dist/domain/orderbook.spec.js.map +1 -0
  121. package/dist/domain/position.d.ts +6 -11
  122. package/dist/domain/position.js +9 -31
  123. package/dist/domain/position.js.map +1 -1
  124. package/dist/domain/position.operator.d.ts +10 -0
  125. package/dist/domain/position.operator.js +38 -0
  126. package/dist/domain/position.operator.js.map +1 -0
  127. package/dist/domain/position.operator.spec.d.ts +1 -0
  128. package/dist/domain/position.operator.spec.js +48 -0
  129. package/dist/domain/position.operator.spec.js.map +1 -0
  130. package/dist/domain/position.spec.js +21 -17
  131. package/dist/domain/position.spec.js.map +1 -1
  132. package/dist/domain/session.d.ts +15 -18
  133. package/dist/domain/session.js +21 -31
  134. package/dist/domain/session.js.map +1 -1
  135. package/dist/domain/session.spec.js +1 -1
  136. package/dist/domain/session.spec.js.map +1 -1
  137. package/dist/domain/trade.d.ts +1 -0
  138. package/dist/domain/trade.js +1 -0
  139. package/dist/domain/trade.js.map +1 -1
  140. package/dist/domain/trade.operator.d.ts +6 -0
  141. package/dist/domain/trade.operator.js +10 -0
  142. package/dist/domain/trade.operator.js.map +1 -0
  143. package/dist/domain/trade.operator.spec.d.ts +1 -0
  144. package/dist/domain/trade.operator.spec.js +24 -0
  145. package/dist/domain/trade.operator.spec.js.map +1 -0
  146. package/dist/domain/trade.spec.d.ts +1 -0
  147. package/dist/domain/trade.spec.js +13 -0
  148. package/dist/domain/trade.spec.js.map +1 -0
  149. package/dist/indicator/cross.spec.js +2 -2
  150. package/dist/indicator/cross.spec.js.map +1 -1
  151. package/dist/indicator/ema.spec.js +1 -1
  152. package/dist/indicator/ema.spec.js.map +1 -1
  153. package/dist/indicator/sma.spec.js +1 -1
  154. package/dist/indicator/sma.spec.js.map +1 -1
  155. package/dist/indicator/tma.spec.js +1 -1
  156. package/dist/indicator/tma.spec.js.map +1 -1
  157. package/dist/indicator/trailing.spec.js +2 -2
  158. package/dist/indicator/trailing.spec.js.map +1 -1
  159. package/dist/indicator/truerange.spec.js +1 -1
  160. package/dist/indicator/truerange.spec.js.map +1 -1
  161. package/dist/indicator/wma.spec.js +1 -1
  162. package/dist/indicator/wma.spec.js.map +1 -1
  163. package/dist/shared/collections.d.ts +10 -0
  164. package/dist/shared/collections.js +33 -0
  165. package/dist/shared/collections.js.map +1 -0
  166. package/dist/shared/datetime.d.ts +0 -1
  167. package/dist/shared/datetime.js +1 -12
  168. package/dist/shared/datetime.js.map +1 -1
  169. package/dist/shared/decimals.d.ts +1 -1
  170. package/dist/shared/decimals.js +4 -5
  171. package/dist/shared/decimals.js.map +1 -1
  172. package/dist/shared/decimals.spec.js +2 -1
  173. package/dist/shared/decimals.spec.js.map +1 -1
  174. package/dist/shared/index.d.ts +1 -1
  175. package/dist/shared/index.js +1 -1
  176. package/dist/shared/index.js.map +1 -1
  177. package/dist/shared/io.js.map +1 -1
  178. package/dist/shared/policy.d.ts +0 -1
  179. package/dist/shared/policy.js +1 -11
  180. package/dist/shared/policy.js.map +1 -1
  181. package/dist/storage/cache.js +1 -1
  182. package/dist/storage/cache.js.map +1 -1
  183. package/dist/storage/cache.spec.d.ts +1 -0
  184. package/dist/storage/cache.spec.js +18 -0
  185. package/dist/storage/cache.spec.js.map +1 -0
  186. package/dist/storage/feed.d.ts +3 -4
  187. package/dist/storage/feed.js +16 -6
  188. package/dist/storage/feed.js.map +1 -1
  189. package/dist/storage/storage.d.ts +2 -7
  190. package/dist/storage/storage.js +6 -11
  191. package/dist/storage/storage.js.map +1 -1
  192. package/dist/store/index.d.ts +8 -2
  193. package/dist/store/index.js +8 -2
  194. package/dist/store/index.js.map +1 -1
  195. package/dist/store/store-balance.event.d.ts +33 -0
  196. package/dist/store/store-balance.event.js +90 -0
  197. package/dist/store/store-balance.event.js.map +1 -0
  198. package/dist/store/store-balance.event.spec.d.ts +1 -0
  199. package/dist/store/{event/store-balance.event.spec.js → store-balance.event.spec.js} +7 -7
  200. package/dist/store/store-balance.event.spec.js.map +1 -0
  201. package/dist/store/{event/store-instrument.event.d.ts → store-instrument.event.d.ts} +5 -8
  202. package/dist/store/store-instrument.event.js +52 -0
  203. package/dist/store/store-instrument.event.js.map +1 -0
  204. package/dist/store/store-instrument.event.spec.d.ts +1 -0
  205. package/dist/store/store-instrument.event.spec.js +22 -0
  206. package/dist/store/store-instrument.event.spec.js.map +1 -0
  207. package/dist/store/store-order.event.d.ts +59 -0
  208. package/dist/store/store-order.event.js +181 -0
  209. package/dist/store/store-order.event.js.map +1 -0
  210. package/dist/store/store-order.event.spec.d.ts +1 -0
  211. package/dist/store/{event/store-order.event.spec.js → store-order.event.spec.js} +8 -8
  212. package/dist/store/store-order.event.spec.js.map +1 -0
  213. package/dist/store/{event/store-orderbook.event.d.ts → store-orderbook.event.d.ts} +4 -5
  214. package/dist/store/store-orderbook.event.js +42 -0
  215. package/dist/store/store-orderbook.event.js.map +1 -0
  216. package/dist/store/{event/store-position.event.d.ts → store-position.event.d.ts} +5 -7
  217. package/dist/store/store-position.event.js +77 -0
  218. package/dist/store/store-position.event.js.map +1 -0
  219. package/dist/store/store-state.d.ts +27 -0
  220. package/dist/store/store-state.js +29 -0
  221. package/dist/store/store-state.js.map +1 -0
  222. package/dist/store/{event/store-trade.event.d.ts → store-trade.event.d.ts} +4 -5
  223. package/dist/store/store-trade.event.js +25 -0
  224. package/dist/store/store-trade.event.js.map +1 -0
  225. package/dist/store/store-trade.event.spec.d.ts +1 -0
  226. package/dist/store/{event/store-trade.event.spec.js → store-trade.event.spec.js} +13 -13
  227. package/dist/store/store-trade.event.spec.js.map +1 -0
  228. package/dist/store/store.d.ts +4 -25
  229. package/dist/store/store.event.d.ts +6 -0
  230. package/dist/store/{event/store.event.js → store.event.js} +0 -0
  231. package/dist/store/store.event.js.map +1 -0
  232. package/dist/store/store.js +7 -195
  233. package/dist/store/store.js.map +1 -1
  234. package/dist/store/store.spec.d.ts +1 -0
  235. package/dist/store/store.spec.js +119 -0
  236. package/dist/store/store.spec.js.map +1 -0
  237. package/dist/tsconfig.tsbuildinfo +1 -1
  238. package/{jestconfig.unit.json → jestconfig.json} +1 -2
  239. package/package.json +2 -6
  240. package/src/adapter/adapter-aggregate.ts +27 -35
  241. package/src/adapter/adapter.ts +25 -54
  242. package/src/adapter/backtester/backtester-adapter.spec.ts +124 -0
  243. package/src/adapter/backtester/backtester-adapter.ts +28 -17
  244. package/src/adapter/backtester/backtester-cursor.spec.ts +18 -19
  245. package/src/adapter/backtester/backtester-cursor.ts +7 -7
  246. package/src/adapter/backtester/backtester-streamer.spec.ts +19 -19
  247. package/src/adapter/backtester/backtester-streamer.ts +50 -20
  248. package/src/adapter/error.ts +9 -0
  249. package/src/adapter/paper/engine/paper-engine.spec.ts +92 -0
  250. package/src/adapter/paper/engine/paper-engine.ts +135 -0
  251. package/src/adapter/paper/index.ts +1 -2
  252. package/src/adapter/paper/paper-adapter.spec.ts +55 -19
  253. package/src/adapter/paper/paper-adapter.ts +27 -24
  254. package/src/bootstrap.ts +26 -19
  255. package/src/cli/pull.ts +5 -1
  256. package/src/cli/test.ts +5 -2
  257. package/src/domain/asset.spec.ts +33 -29
  258. package/src/domain/asset.ts +27 -21
  259. package/src/domain/balance.operator.spec.ts +25 -0
  260. package/src/domain/balance.operator.ts +15 -0
  261. package/src/domain/balance.spec.ts +95 -7
  262. package/src/domain/balance.ts +35 -29
  263. package/src/domain/candle.operator.spec.ts +125 -0
  264. package/src/domain/candle.operator.ts +106 -0
  265. package/src/domain/candle.spec.ts +12 -68
  266. package/src/domain/candle.ts +2 -114
  267. package/src/domain/commission.spec.ts +33 -0
  268. package/src/domain/commission.ts +2 -2
  269. package/src/domain/component.ts +1 -0
  270. package/src/domain/error.ts +25 -0
  271. package/src/domain/index.ts +8 -1
  272. package/src/domain/instrument.operator.spec.ts +28 -0
  273. package/src/domain/instrument.operator.ts +25 -0
  274. package/src/domain/instrument.spec.ts +22 -30
  275. package/src/domain/instrument.ts +20 -11
  276. package/src/domain/order.operator.spec.ts +81 -0
  277. package/src/domain/order.operator.ts +23 -0
  278. package/src/domain/order.spec.ts +43 -0
  279. package/src/domain/order.ts +43 -46
  280. package/src/domain/orderbook.operator.spec.ts +28 -0
  281. package/src/domain/orderbook.operator.ts +15 -0
  282. package/src/domain/orderbook.spec.ts +17 -0
  283. package/src/domain/orderbook.ts +4 -1
  284. package/src/domain/position.operator.spec.ts +58 -0
  285. package/src/domain/position.operator.ts +61 -0
  286. package/src/domain/position.spec.ts +28 -24
  287. package/src/domain/position.ts +16 -48
  288. package/src/domain/session.spec.ts +1 -1
  289. package/src/domain/session.ts +41 -131
  290. package/src/domain/trade.operator.spec.ts +31 -0
  291. package/src/domain/trade.operator.ts +15 -0
  292. package/src/domain/trade.spec.ts +17 -0
  293. package/src/domain/trade.ts +4 -1
  294. package/src/indicator/cross.spec.ts +2 -2
  295. package/src/indicator/ema.spec.ts +1 -1
  296. package/src/indicator/sma.spec.ts +1 -1
  297. package/src/indicator/tma.spec.ts +1 -1
  298. package/src/indicator/trailing.spec.ts +2 -2
  299. package/src/indicator/truerange.spec.ts +1 -1
  300. package/src/indicator/wma.spec.ts +1 -1
  301. package/src/shared/collections.ts +35 -0
  302. package/src/shared/datetime.ts +0 -12
  303. package/src/shared/decimals.spec.ts +2 -1
  304. package/src/shared/decimals.ts +6 -6
  305. package/src/shared/index.ts +1 -1
  306. package/src/shared/io.ts +0 -2
  307. package/src/shared/policy.ts +0 -13
  308. package/src/storage/cache.spec.ts +18 -0
  309. package/src/storage/cache.ts +1 -1
  310. package/src/storage/feed.ts +26 -16
  311. package/src/storage/storage.ts +9 -13
  312. package/src/store/index.ts +8 -2
  313. package/src/store/{event/store-balance.event.spec.ts → store-balance.event.spec.ts} +6 -6
  314. package/src/store/store-balance.event.ts +124 -0
  315. package/src/store/store-instrument.event.spec.ts +25 -0
  316. package/src/store/store-instrument.event.ts +72 -0
  317. package/src/store/store-order.event.spec.ts +28 -0
  318. package/src/store/store-order.event.ts +214 -0
  319. package/src/store/store-orderbook.event.ts +54 -0
  320. package/src/store/store-position.event.ts +102 -0
  321. package/src/store/store-state.ts +48 -0
  322. package/src/store/{event/store-trade.event.spec.ts → store-trade.event.spec.ts} +14 -14
  323. package/src/store/store-trade.event.ts +36 -0
  324. package/src/store/store.event.ts +8 -0
  325. package/src/store/store.spec.ts +180 -0
  326. package/src/store/store.ts +10 -208
  327. package/dist/adapter/paper/simulator/paper-margin-simulator.d.ts +0 -10
  328. package/dist/adapter/paper/simulator/paper-margin-simulator.js +0 -69
  329. package/dist/adapter/paper/simulator/paper-margin-simulator.js.map +0 -1
  330. package/dist/adapter/paper/simulator/paper-simulator.d.ts +0 -16
  331. package/dist/adapter/paper/simulator/paper-simulator.js +0 -93
  332. package/dist/adapter/paper/simulator/paper-simulator.js.map +0 -1
  333. package/dist/adapter/paper/simulator/paper-spot-simulator.d.ts +0 -13
  334. package/dist/adapter/paper/simulator/paper-spot-simulator.js +0 -81
  335. package/dist/adapter/paper/simulator/paper-spot-simulator.js.map +0 -1
  336. package/dist/adapter/paper/simulator/paper-spot-simulator.spec.js +0 -49
  337. package/dist/adapter/paper/simulator/paper-spot-simulator.spec.js.map +0 -1
  338. package/dist/domain/statement.d.ts +0 -4
  339. package/dist/domain/statement.js +0 -87
  340. package/dist/domain/statement.js.map +0 -1
  341. package/dist/shared/policy.spec.js +0 -22
  342. package/dist/shared/policy.spec.js.map +0 -1
  343. package/dist/shared/topic.d.ts +0 -14
  344. package/dist/shared/topic.js +0 -40
  345. package/dist/shared/topic.js.map +0 -1
  346. package/dist/shared/topic.spec.js +0 -43
  347. package/dist/shared/topic.spec.js.map +0 -1
  348. package/dist/store/event/index.d.ts +0 -8
  349. package/dist/store/event/index.js +0 -25
  350. package/dist/store/event/index.js.map +0 -1
  351. package/dist/store/event/store-balance.event.d.ts +0 -37
  352. package/dist/store/event/store-balance.event.js +0 -119
  353. package/dist/store/event/store-balance.event.js.map +0 -1
  354. package/dist/store/event/store-balance.event.spec.js.map +0 -1
  355. package/dist/store/event/store-candle.event.d.ts +0 -18
  356. package/dist/store/event/store-candle.event.js +0 -63
  357. package/dist/store/event/store-candle.event.js.map +0 -1
  358. package/dist/store/event/store-candle.event.spec.js +0 -23
  359. package/dist/store/event/store-candle.event.spec.js.map +0 -1
  360. package/dist/store/event/store-instrument.event.js +0 -78
  361. package/dist/store/event/store-instrument.event.js.map +0 -1
  362. package/dist/store/event/store-instrument.event.spec.js +0 -21
  363. package/dist/store/event/store-instrument.event.spec.js.map +0 -1
  364. package/dist/store/event/store-order.event.d.ts +0 -61
  365. package/dist/store/event/store-order.event.js +0 -205
  366. package/dist/store/event/store-order.event.js.map +0 -1
  367. package/dist/store/event/store-order.event.spec.js.map +0 -1
  368. package/dist/store/event/store-orderbook.event.js +0 -65
  369. package/dist/store/event/store-orderbook.event.js.map +0 -1
  370. package/dist/store/event/store-position.event.js +0 -97
  371. package/dist/store/event/store-position.event.js.map +0 -1
  372. package/dist/store/event/store-trade.event.js +0 -47
  373. package/dist/store/event/store-trade.event.js.map +0 -1
  374. package/dist/store/event/store-trade.event.spec.js.map +0 -1
  375. package/dist/store/event/store.event.d.ts +0 -5
  376. package/dist/store/event/store.event.js.map +0 -1
  377. package/dist/store/store.state.d.ts +0 -21
  378. package/dist/store/store.state.js +0 -21
  379. package/dist/store/store.state.js.map +0 -1
  380. package/dist/tests/backtester-adapter.spec.js +0 -61
  381. package/dist/tests/backtester-adapter.spec.js.map +0 -1
  382. package/dist/tests/session.spec.d.ts +0 -0
  383. package/dist/tests/session.spec.js +0 -1
  384. package/dist/tests/session.spec.js.map +0 -1
  385. package/jestconfig.integration.json +0 -12
  386. package/src/adapter/paper/simulator/paper-margin-simulator.ts +0 -108
  387. package/src/adapter/paper/simulator/paper-simulator.ts +0 -121
  388. package/src/adapter/paper/simulator/paper-spot-simulator.spec.ts +0 -87
  389. package/src/adapter/paper/simulator/paper-spot-simulator.ts +0 -134
  390. package/src/domain/statement.ts +0 -119
  391. package/src/shared/policy.spec.ts +0 -25
  392. package/src/shared/topic.spec.ts +0 -34
  393. package/src/shared/topic.ts +0 -43
  394. package/src/store/event/index.ts +0 -8
  395. package/src/store/event/store-balance.event.ts +0 -161
  396. package/src/store/event/store-candle.event.spec.ts +0 -30
  397. package/src/store/event/store-candle.event.ts +0 -71
  398. package/src/store/event/store-instrument.event.spec.ts +0 -25
  399. package/src/store/event/store-instrument.event.ts +0 -84
  400. package/src/store/event/store-order.event.spec.ts +0 -28
  401. package/src/store/event/store-order.event.ts +0 -218
  402. package/src/store/event/store-orderbook.event.ts +0 -70
  403. package/src/store/event/store-position.event.ts +0 -109
  404. package/src/store/event/store-trade.event.ts +0 -52
  405. package/src/store/event/store.event.ts +0 -6
  406. package/src/store/store.state.ts +0 -43
  407. package/src/tests/backtester-adapter.spec.ts +0 -88
  408. package/src/tests/session.spec.ts +0 -121
@@ -0,0 +1,102 @@
1
+ import { Instrument, Position, PositionMode } from '../domain';
2
+ import { timestamp } from '../shared';
3
+ import { StoreEvent } from './store.event';
4
+ import { State, StateChangeTracker } from './store-state';
5
+
6
+ export class PositionLoadEvent implements StoreEvent {
7
+ constructor(readonly position: Position, readonly timestamp: timestamp) {}
8
+
9
+ handle(state: State, changes: StateChangeTracker): void {
10
+ if (!state.subscription.instrument.get(this.position.instrument.id)) {
11
+ throw new Error(
12
+ `Trying to patch unsubscribed instrument: ${this.position.instrument.id}`
13
+ );
14
+ }
15
+
16
+ this.position.timestamp = this.timestamp;
17
+
18
+ const balance = state.balance.get(this.position.instrument.quote.id);
19
+ const orderbook = state.orderbook.get(this.position.instrument.id);
20
+
21
+ balance.position[this.position.id] = this.position;
22
+
23
+ if (orderbook) {
24
+ const rate =
25
+ this.position.size >= 0 ? orderbook.bestBidRate : orderbook.bestAskRate;
26
+
27
+ this.position.calculateEstimatedUnrealizedPnL(rate);
28
+ }
29
+ }
30
+ }
31
+
32
+ export class PositionPatchEvent implements StoreEvent {
33
+ constructor(
34
+ readonly id: string,
35
+ readonly instrument: Instrument,
36
+ readonly rate: number,
37
+ readonly size: number,
38
+ readonly leverage: number,
39
+ readonly mode: PositionMode,
40
+ readonly timestamp: timestamp
41
+ ) {}
42
+
43
+ handle(state: State, changes: StateChangeTracker): void {
44
+ if (!state.subscription.instrument.get(this.instrument.id)) {
45
+ throw new Error(`Trying to patch unsubscribed instrument: ${this.instrument.id}`);
46
+ }
47
+
48
+ const balance = state.balance.get(this.instrument.quote.id);
49
+ const orderbook = state.orderbook.get(this.instrument.id);
50
+
51
+ let position = balance.position[this.id];
52
+
53
+ if (this.size == 0) {
54
+ if (position) {
55
+ position.averageExecutionRate = this.instrument.quote.fixed(this.rate);
56
+ position.size = this.instrument.base.fixed(this.size);
57
+ position.leverage = this.leverage;
58
+
59
+ delete balance.position[this.id];
60
+
61
+ if (orderbook) {
62
+ const rate = position.size >= 0 ? orderbook.bestBidRate : orderbook.bestAskRate;
63
+
64
+ position.calculateEstimatedUnrealizedPnL(rate);
65
+ }
66
+
67
+ changes.commit(position);
68
+ changes.commit(balance);
69
+ }
70
+ }
71
+
72
+ const size = (position.size = this.instrument.base.fixed(this.size));
73
+ const averageExecutionRate = (position.averageExecutionRate =
74
+ this.instrument.quote.fixed(this.rate));
75
+
76
+ if (!position) {
77
+ position = new Position(
78
+ this.id,
79
+ this.instrument,
80
+ this.mode,
81
+ averageExecutionRate,
82
+ size,
83
+ this.leverage
84
+ );
85
+
86
+ balance.position[this.id] = position;
87
+ } else {
88
+ position.averageExecutionRate = averageExecutionRate;
89
+ position.size = size;
90
+ position.leverage = this.leverage;
91
+ }
92
+
93
+ if (orderbook) {
94
+ const rate = position.size >= 0 ? orderbook.bestBidRate : orderbook.bestAskRate;
95
+
96
+ position.calculateEstimatedUnrealizedPnL(rate);
97
+ }
98
+
99
+ changes.commit(position);
100
+ changes.commit(balance);
101
+ }
102
+ }
@@ -0,0 +1,48 @@
1
+ import {
2
+ Asset,
3
+ AssetSelector,
4
+ Balance,
5
+ Component,
6
+ Instrument,
7
+ InstrumentSelector,
8
+ Order,
9
+ Orderbook,
10
+ Trade
11
+ } from '../domain';
12
+ import { Set, timestamp } from '../shared';
13
+
14
+ export interface StateChangeTracker {
15
+ commit(component: Component);
16
+ commitPendingChanges();
17
+ }
18
+
19
+ export class InnerSet<T extends { id: string }> extends Set<T> {
20
+ constructor(public readonly id: string, values?: ReadonlyArray<T>) {
21
+ super(values);
22
+ }
23
+ }
24
+
25
+ export class State {
26
+ timestamp: timestamp;
27
+
28
+ universe: {
29
+ asset: Set<Asset>;
30
+ instrument: Set<Instrument>;
31
+ } = {
32
+ asset: new Set<Asset>(),
33
+ instrument: new Set<Instrument>()
34
+ };
35
+
36
+ subscription: {
37
+ asset: Set<AssetSelector>;
38
+ instrument: Set<InstrumentSelector>;
39
+ } = {
40
+ asset: new Set<AssetSelector>(),
41
+ instrument: new Set<InstrumentSelector>()
42
+ };
43
+
44
+ trade: Set<Trade> = new Set<Trade>();
45
+ orderbook: Set<Orderbook> = new Set<Orderbook>();
46
+ balance: Set<Balance> = new Set<Balance>();
47
+ order: Set<InnerSet<Order>> = new Set<InnerSet<Order>>();
48
+ }
@@ -1,6 +1,6 @@
1
- import { Asset, Instrument } from '../../domain';
2
- import { now } from '../../shared';
3
1
  import { Store } from '..';
2
+ import { Asset, Instrument } from '../domain';
3
+ import { now } from '../shared';
4
4
  import { TradePatchEvent } from '.';
5
5
 
6
6
  const instrument = new Instrument(
@@ -9,20 +9,20 @@ const instrument = new Instrument(
9
9
  'binance:btc-usdt'
10
10
  );
11
11
 
12
- describe('trade patch event tests', () => {
12
+ describe('TradePatchEvent', () => {
13
13
  test('should create a new trade object and patch a store', () => {
14
14
  const timestamp = now();
15
15
  const store = new Store();
16
16
 
17
- store.snapshot.universe.instrument[instrument.toString()] = instrument;
18
- store.snapshot.subscription.instrument[instrument.toString()] = instrument;
17
+ store.snapshot.universe.instrument.upsert(instrument);
18
+ store.snapshot.subscription.instrument.upsert(instrument);
19
19
 
20
20
  store.dispatch(new TradePatchEvent(instrument, 1000, 0.1, timestamp));
21
21
 
22
- const trade = store.snapshot.trade[instrument.toString()];
22
+ const trade = store.snapshot.trade.get(instrument.id);
23
23
 
24
24
  expect(trade.timestamp).toEqual(timestamp);
25
- expect(trade.instrument.toString()).toEqual(trade.instrument.toString());
25
+ expect(trade.instrument.id).toEqual(trade.instrument.id);
26
26
  expect(trade.rate).toEqual(1000);
27
27
  expect(trade.quantity).toEqual(0.1);
28
28
  expect(store.snapshot.timestamp).toEqual(timestamp);
@@ -30,19 +30,19 @@ describe('trade patch event tests', () => {
30
30
 
31
31
  test('should use the existing instance of trade when patching a store', () => {
32
32
  const store = new Store();
33
+ const timestamp = now();
33
34
 
34
- store.snapshot.universe.instrument[instrument.toString()] = instrument;
35
- store.snapshot.subscription.instrument[instrument.toString()] = instrument;
35
+ store.snapshot.universe.instrument.upsert(instrument);
36
+ store.snapshot.subscription.instrument.upsert(instrument);
36
37
 
37
- store.dispatch(new TradePatchEvent(instrument, 1000, 0.1, now()));
38
+ store.dispatch(new TradePatchEvent(instrument, 1000, 0.1, timestamp));
38
39
 
39
- const timestamp = now();
40
- const trade = store.snapshot.trade[instrument.toString()];
40
+ const trade = store.snapshot.trade.get(instrument.id);
41
41
 
42
- store.dispatch(new TradePatchEvent(instrument, 2000, 0.2, now()));
42
+ store.dispatch(new TradePatchEvent(instrument, 2000, 0.2, timestamp));
43
43
 
44
44
  expect(trade.timestamp).toEqual(timestamp);
45
- expect(trade.instrument.toString()).toEqual(instrument.toString());
45
+ expect(trade.instrument.id).toEqual(instrument.id);
46
46
  expect(trade.rate).toEqual(2000);
47
47
  expect(trade.quantity).toEqual(0.2);
48
48
  expect(store.snapshot.timestamp).toEqual(timestamp);
@@ -0,0 +1,36 @@
1
+ import { InstrumentSelector, Trade } from '../domain';
2
+ import { timestamp } from '../shared';
3
+ import { StoreEvent } from './store.event';
4
+ import { State, StateChangeTracker } from './store-state';
5
+
6
+ /**
7
+ * Patches a store with specific event @see TradePatchEvent
8
+ * If there is no specific @see Trade in store, it will create a new one.
9
+ */
10
+ export class TradePatchEvent implements StoreEvent {
11
+ constructor(
12
+ readonly instrument: InstrumentSelector,
13
+ readonly rate: number,
14
+ readonly quantity: number,
15
+ readonly timestamp: timestamp
16
+ ) {}
17
+
18
+ handle(state: State, changes: StateChangeTracker): void {
19
+ if (!state.subscription.instrument.get(this.instrument.id)) {
20
+ throw new Error(`Trying to patch unsubscribed instrument: ${this.instrument.id}`);
21
+ }
22
+
23
+ const trade = state.trade.tryGetOrSet(
24
+ this.instrument.id,
25
+ () => new Trade(state.universe.instrument.get(this.instrument.id))
26
+ );
27
+
28
+ state.timestamp = this.timestamp;
29
+
30
+ trade.timestamp = this.timestamp;
31
+ trade.rate = trade.instrument.quote.fixed(this.rate);
32
+ trade.quantity = trade.instrument.base.fixed(this.quantity);
33
+
34
+ changes.commit(trade);
35
+ }
36
+ }
@@ -0,0 +1,8 @@
1
+ import { timestamp } from '../shared';
2
+ import { State, StateChangeTracker } from './store-state';
3
+
4
+ export interface StoreEvent {
5
+ timestamp: timestamp;
6
+
7
+ handle(state: State, changes: StateChangeTracker): void;
8
+ }
@@ -0,0 +1,180 @@
1
+ import { withLatestFrom } from 'rxjs';
2
+
3
+ import { Asset, balance, Instrument, Order, order } from '../domain';
4
+ import { now } from '../shared';
5
+ import { Store } from './store';
6
+ import { BalanceTransactEvent } from './store-balance.event';
7
+ import {
8
+ OrderCanceledEvent,
9
+ OrderCancelingEvent,
10
+ OrderFilledEvent,
11
+ OrderLoadEvent,
12
+ OrderNewEvent,
13
+ OrderPendingEvent
14
+ } from './store-order.event';
15
+
16
+ const instrument = new Instrument(
17
+ new Asset('abc', 'xyz', 4),
18
+ new Asset('def', 'xyz', 4),
19
+ 'abc-def'
20
+ );
21
+
22
+ describe('Store', () => {
23
+ let store: Store;
24
+
25
+ beforeEach(() => {
26
+ store = new Store();
27
+ });
28
+
29
+ test('should load an existing order and not pipe a changes', () => {
30
+ let hasUpdatedOrder = false;
31
+
32
+ store.changes$.pipe(order(instrument)).subscribe({
33
+ next: () => {
34
+ hasUpdatedOrder = true;
35
+ }
36
+ });
37
+
38
+ store.dispatch(new OrderLoadEvent(Order.market(instrument, 10), now()));
39
+
40
+ expect(hasUpdatedOrder).toBe(false);
41
+ });
42
+
43
+ test('should create a new order and pipe a changes', () => {
44
+ let hasUpdatedOrder = false;
45
+
46
+ store.changes$.pipe(order(instrument)).subscribe({
47
+ next: () => {
48
+ hasUpdatedOrder = true;
49
+ }
50
+ });
51
+
52
+ store.dispatch(new OrderNewEvent(Order.market(instrument, 10), now()));
53
+
54
+ expect(hasUpdatedOrder).toBe(true);
55
+ });
56
+
57
+ test('should transition order state from new to pending', () => {
58
+ const states = ['NEW', 'PENDING'].reverse();
59
+
60
+ store.changes$.pipe(order(instrument)).subscribe({
61
+ next: it => {
62
+ expect(it.state).toBe(states.pop());
63
+ }
64
+ });
65
+
66
+ const buyOrder = Order.market(instrument, 10);
67
+
68
+ store.dispatch(new OrderNewEvent(buyOrder, now()));
69
+ store.dispatch(new OrderPendingEvent(buyOrder.id, instrument, now()));
70
+
71
+ expect(buyOrder.state).toBe('PENDING');
72
+ expect(states.length).toBe(0);
73
+ });
74
+
75
+ test('should transition order state from new to filled', () => {
76
+ const states = ['NEW', 'PENDING', 'FILLED'].reverse();
77
+
78
+ store.changes$.pipe(order(instrument)).subscribe({
79
+ next: it => {
80
+ expect(it.state).toBe(states.pop());
81
+ }
82
+ });
83
+
84
+ const buyOrder = Order.market(instrument, 10);
85
+
86
+ store.dispatch(new OrderNewEvent(buyOrder, now()));
87
+ store.dispatch(new OrderPendingEvent(buyOrder.id, instrument, now()));
88
+ store.dispatch(new OrderFilledEvent(buyOrder.id, instrument, 44, now()));
89
+
90
+ expect(buyOrder.state).toBe('FILLED');
91
+ expect(buyOrder.averageExecutionRate).toBe(44);
92
+ expect(states.length).toBe(0);
93
+ });
94
+
95
+ test('should transition order state from new to canceled', () => {
96
+ const states = ['NEW', 'PENDING', 'CANCELING', 'CANCELED'].reverse();
97
+
98
+ store.changes$.pipe(order(instrument)).subscribe({
99
+ next: it => {
100
+ expect(it.state).toBe(states.pop());
101
+ }
102
+ });
103
+
104
+ const buyOrder = Order.market(instrument, 10);
105
+
106
+ store.dispatch(new OrderNewEvent(buyOrder, now()));
107
+ store.dispatch(new OrderPendingEvent(buyOrder.id, instrument, now()));
108
+ store.dispatch(new OrderCancelingEvent(buyOrder.id, instrument, now()));
109
+ store.dispatch(new OrderCanceledEvent(buyOrder.id, instrument, now()));
110
+
111
+ expect(buyOrder.state).toBe('CANCELED');
112
+ expect(states.length).toBe(0);
113
+ });
114
+
115
+ test('should patch balance with order and pipe changes once', done => {
116
+ store.snapshot.universe.instrument.upsert(instrument);
117
+ store.snapshot.universe.asset.upsert(instrument.quote);
118
+
119
+ store.changes$
120
+ .pipe(
121
+ balance(instrument.quote, store.snapshot),
122
+ withLatestFrom(store.changes$.pipe(order(instrument)))
123
+ )
124
+ .subscribe({
125
+ next: ([balance, order]) => {
126
+ expect(balance.free).toBe(10);
127
+ expect(order.state).toBe('PENDING');
128
+
129
+ done();
130
+ }
131
+ });
132
+
133
+ const buyOrder = Order.market(instrument, 10);
134
+
135
+ store.dispatch(
136
+ new OrderNewEvent(buyOrder, now()),
137
+ new OrderPendingEvent(buyOrder.id, instrument, now()),
138
+ new BalanceTransactEvent(instrument.quote, 10, now())
139
+ );
140
+ });
141
+
142
+ test('should pipe balance and order changes', done => {
143
+ store.snapshot.universe.instrument.upsert(instrument);
144
+ store.snapshot.universe.asset.upsert(instrument.quote);
145
+
146
+ let counter = 2;
147
+
148
+ store.changes$.pipe(balance(instrument.quote, store.snapshot)).subscribe({
149
+ next: it => {
150
+ counter--;
151
+
152
+ expect(it.free).toBe(10);
153
+
154
+ if (!counter) {
155
+ done();
156
+ }
157
+ }
158
+ });
159
+
160
+ store.changes$.pipe(order(instrument)).subscribe({
161
+ next: it => {
162
+ counter--;
163
+
164
+ expect(it.state).toBe('PENDING');
165
+
166
+ if (!counter) {
167
+ done();
168
+ }
169
+ }
170
+ });
171
+
172
+ const buyOrder = Order.market(instrument, 10);
173
+
174
+ store.dispatch(
175
+ new OrderNewEvent(buyOrder, now()),
176
+ new OrderPendingEvent(buyOrder.id, instrument, now()),
177
+ new BalanceTransactEvent(instrument.quote, 10, now())
178
+ );
179
+ });
180
+ });
@@ -1,235 +1,37 @@
1
- import { BehaviorSubject, Observable, Subject } from 'rxjs';
2
- import { Set } from 'typescript-collections';
1
+ import { Observable, Subject } from 'rxjs';
3
2
 
4
3
  import { Component } from '../domain';
5
- import { handler, Topic } from '../shared/topic';
6
- import {
7
- BalanceFreezEvent,
8
- BalanceFreezEventHandler,
9
- BalancePatchEvent,
10
- BalancePatchEventHandler,
11
- BalanceTransactEvent,
12
- BalanceTransactEventHandler,
13
- BalanceUnfreezEvent,
14
- BalanceUnfreezEventHandler,
15
- CandleEvent,
16
- CandleEventHandler,
17
- InstrumentPatchEvent,
18
- InstrumentPatchEventHandler,
19
- InstrumentSubscriptionEvent,
20
- InstrumentSubscriptionEventHandler,
21
- OrderbookPatchEvent,
22
- OrderbookPatchEventHandler,
23
- OrderCanceledEvent,
24
- OrderCanceledEventHandler,
25
- OrderCancelFailedEvent,
26
- OrderCancelFailedEventHandler,
27
- OrderCancelingEvent,
28
- OrderCancelingEventHandler,
29
- OrderFilledEvent,
30
- OrderFilledEventHandler,
31
- OrderLoadEvent,
32
- OrderLoadEventHandler,
33
- OrderNewEvent,
34
- OrderNewEventHandler,
35
- OrderPendingEvent,
36
- OrderPendingEventHandler,
37
- OrderRejectedEvent,
38
- OrderRejectedEventHandler,
39
- PositionLoadEvent,
40
- PositionLoadEventHandler,
41
- PositionPatchEvent,
42
- PositionPatchEventHandler,
43
- StoreEvent,
44
- TradePatchEvent,
45
- TradePatchEventHandler
46
- } from './event';
47
- import { State, StateChangeTracker } from './store.state';
4
+ import { StoreEvent } from './store.event';
5
+ import { State, StateChangeTracker } from './store-state';
48
6
 
49
- export class Store extends Topic<StoreEvent, any> implements StateChangeTracker {
50
- private readonly pendingChanges = new Set<Component>();
7
+ export class Store implements StateChangeTracker {
8
+ private readonly pendingChanges = new Array<Component>();
51
9
  private readonly changes = new Subject<Component>();
52
- private readonly state = new BehaviorSubject<State>(new State());
10
+
11
+ readonly snapshot = new State();
53
12
 
54
13
  get changes$(): Observable<Component> {
55
14
  return this.changes.asObservable();
56
15
  }
57
16
 
58
- get snapshot(): State {
59
- return this.state.value;
60
- }
61
-
62
17
  dispatch(...events: StoreEvent[]) {
63
18
  for (const event of events) {
64
- super.dispatch(event, {});
19
+ event.handle(this.snapshot, this);
65
20
  }
66
21
 
67
22
  this.commitPendingChanges();
68
23
  }
69
24
 
70
25
  commit(component: Component) {
71
- this.pendingChanges.add(component);
26
+ this.pendingChanges.push(component);
72
27
  }
73
28
 
74
29
  commitPendingChanges() {
75
30
  this.pendingChanges.forEach(it => this.changes.next(it));
76
- this.pendingChanges.clear();
31
+ this.pendingChanges.splice(0, this.pendingChanges.length);
77
32
  }
78
33
 
79
34
  dispose() {
80
- this.state.complete();
81
35
  this.changes.complete();
82
36
  }
83
-
84
- /**
85
- * @see InstrumentPatchEventHandler
86
- */
87
- @handler(InstrumentPatchEvent)
88
- onInstrumentPatch(event: InstrumentPatchEvent) {
89
- return InstrumentPatchEventHandler(event, this.snapshot, this);
90
- }
91
-
92
- /**
93
- * @see InstrumentSubscribedPatchEventHandler
94
- */
95
- @handler(InstrumentSubscriptionEvent)
96
- onInstrumentSubscription(event: InstrumentSubscriptionEvent) {
97
- return InstrumentSubscriptionEventHandler(event, this.snapshot, this);
98
- }
99
-
100
- /**
101
- * @see BalancePatchEventHandler
102
- */
103
- @handler(BalancePatchEvent)
104
- onBalancePatch(event: BalancePatchEvent) {
105
- return BalancePatchEventHandler(event, this.snapshot, this);
106
- }
107
-
108
- /**
109
- * @see BalanceTransactEventHandler
110
- */
111
- @handler(BalanceTransactEvent)
112
- onBalanceTransact(event: BalanceTransactEvent) {
113
- return BalanceTransactEventHandler(event, this.snapshot, this);
114
- }
115
-
116
- /**
117
- * @see BalanceFreezEventHandler
118
- */
119
- @handler(BalanceFreezEvent)
120
- onBalanceFreez(event: BalanceFreezEvent) {
121
- return BalanceFreezEventHandler(event, this.snapshot, this);
122
- }
123
-
124
- /**
125
- * @see BalanceUnfreezEventHandler
126
- */
127
- @handler(BalanceUnfreezEvent)
128
- onBalanceUnfreez(event: BalanceUnfreezEvent) {
129
- return BalanceUnfreezEventHandler(event, this.snapshot, this);
130
- }
131
-
132
- /**
133
- * @see OrderLoadEventHandler
134
- */
135
- @handler(OrderLoadEvent)
136
- onOrderLoad(event: OrderLoadEvent) {
137
- return OrderLoadEventHandler(event, this.snapshot, this);
138
- }
139
-
140
- /**
141
- * @see OrderNewEventHandler
142
- */
143
- @handler(OrderNewEvent)
144
- onOrderNew(event: OrderNewEvent) {
145
- return OrderNewEventHandler(event, this.snapshot, this);
146
- }
147
-
148
- /**
149
- * @see OrderPendingEventHandler
150
- */
151
- @handler(OrderPendingEvent)
152
- onOrderPending(event: OrderPendingEvent) {
153
- return OrderPendingEventHandler(event, this.snapshot, this);
154
- }
155
-
156
- /**
157
- * @see OrderFilledEventHandler
158
- */
159
- @handler(OrderFilledEvent)
160
- onOrderFilled(event: OrderFilledEvent) {
161
- return OrderFilledEventHandler(event, this.snapshot, this);
162
- }
163
-
164
- /**
165
- * @see OrderCancelingEventHandler
166
- */
167
- @handler(OrderCancelingEvent)
168
- onOrderCanceling(event: OrderCancelingEvent) {
169
- return OrderCancelingEventHandler(event, this.snapshot, this);
170
- }
171
-
172
- /**
173
- * @see OrderCanceledEventHandler
174
- */
175
- @handler(OrderCanceledEvent)
176
- onOrderCanceled(event: OrderCanceledEvent) {
177
- return OrderCanceledEventHandler(event, this.snapshot, this);
178
- }
179
-
180
- /**
181
- * @see OrderCancelFailedEventHandler
182
- */
183
- @handler(OrderCancelFailedEvent)
184
- onOrderCancelFailed(event: OrderCancelFailedEvent) {
185
- return OrderCancelFailedEventHandler(event, this.snapshot, this);
186
- }
187
-
188
- /**
189
- * @see OrderRejectedEventHandler
190
- */
191
- @handler(OrderRejectedEvent)
192
- onOrderRejected(event: OrderRejectedEvent) {
193
- return OrderRejectedEventHandler(event, this.snapshot, this);
194
- }
195
-
196
- /**
197
- * @see OrderbookPatchEventHandler
198
- */
199
- @handler(OrderbookPatchEvent)
200
- onOrderbookPatch(event: OrderbookPatchEvent) {
201
- return OrderbookPatchEventHandler(event, this.snapshot, this);
202
- }
203
-
204
- /**
205
- * @see PositionLoadEventHandler
206
- */
207
- @handler(PositionLoadEvent)
208
- onPositionLoad(event: PositionLoadEvent) {
209
- return PositionLoadEventHandler(event, this.snapshot, this);
210
- }
211
-
212
- /**
213
- * @see PositionPatchEventHandler
214
- */
215
- @handler(PositionPatchEvent)
216
- onPositionPatch(event: PositionPatchEvent) {
217
- return PositionPatchEventHandler(event, this.snapshot, this);
218
- }
219
-
220
- /**
221
- * @see TradePatchEventHandler
222
- */
223
- @handler(TradePatchEvent)
224
- onTradePatch(event: TradePatchEvent) {
225
- return TradePatchEventHandler(event, this.snapshot, this);
226
- }
227
-
228
- /**
229
- * @see CandleEventHandler
230
- */
231
- @handler(CandleEvent)
232
- onCandle(event: CandleEvent) {
233
- return CandleEventHandler(event, this.snapshot, this);
234
- }
235
37
  }
@@ -1,10 +0,0 @@
1
- import { Order } from '../../../domain';
2
- import { PaperAdapter } from '..';
3
- import { PaperSimulator } from './paper-simulator';
4
- export declare class PaperMarginSimulator extends PaperSimulator {
5
- leverage: number;
6
- constructor(adapter: PaperAdapter);
7
- onOrderOpened(order: Order): void;
8
- onOrderCompleted(order: Order, averageExecutionRate: number, timestamp: number): void;
9
- onOrderCanceled(order: Order): void;
10
- }