@3rd-eye-labs/openmm 0.0.1 → 0.1.0

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 (441) hide show
  1. package/dist/cli/cli.js +4 -5
  2. package/dist/cli/cli.js.map +1 -1
  3. package/dist/cli/commands/balance.d.ts.map +1 -1
  4. package/dist/cli/commands/balance.js +1 -1
  5. package/dist/cli/commands/balance.js.map +1 -1
  6. package/dist/cli/commands/grid.d.ts +3 -0
  7. package/dist/cli/commands/grid.d.ts.map +1 -0
  8. package/dist/cli/commands/grid.js +103 -0
  9. package/dist/cli/commands/grid.js.map +1 -0
  10. package/dist/cli/commands/multi-trade.d.ts +3 -0
  11. package/dist/cli/commands/multi-trade.d.ts.map +1 -0
  12. package/dist/cli/commands/multi-trade.js +175 -0
  13. package/dist/cli/commands/multi-trade.js.map +1 -0
  14. package/dist/cli/commands/orderbook.js +1 -1
  15. package/dist/cli/commands/orderbook.js.map +1 -1
  16. package/dist/cli/commands/orders.d.ts.map +1 -1
  17. package/dist/cli/commands/orders.js +3 -4
  18. package/dist/cli/commands/orders.js.map +1 -1
  19. package/dist/cli/commands/pool-discovery.d.ts.map +1 -1
  20. package/dist/cli/commands/pool-discovery.js +2 -4
  21. package/dist/cli/commands/pool-discovery.js.map +1 -1
  22. package/dist/cli/commands/price-comparison.d.ts +3 -0
  23. package/dist/cli/commands/price-comparison.d.ts.map +1 -0
  24. package/dist/cli/commands/price-comparison.js +103 -0
  25. package/dist/cli/commands/price-comparison.js.map +1 -0
  26. package/dist/cli/commands/ticker.d.ts.map +1 -1
  27. package/dist/cli/commands/ticker.js.map +1 -1
  28. package/dist/cli/commands/trade.d.ts.map +1 -1
  29. package/dist/cli/commands/trade.js +135 -18
  30. package/dist/cli/commands/trade.js.map +1 -1
  31. package/dist/cli/commands/trades.d.ts.map +1 -1
  32. package/dist/cli/commands/trades.js +2 -3
  33. package/dist/cli/commands/trades.js.map +1 -1
  34. package/dist/cli/exchange-factory.d.ts.map +1 -1
  35. package/dist/cli/exchange-factory.js +6 -6
  36. package/dist/cli/exchange-factory.js.map +1 -1
  37. package/dist/cli/pool-discovery-core.d.ts.map +1 -1
  38. package/dist/cli/pool-discovery-core.js +3 -9
  39. package/dist/cli/pool-discovery-core.js.map +1 -1
  40. package/dist/cli/pool-discovery.d.ts +56 -0
  41. package/dist/cli/pool-discovery.d.ts.map +1 -0
  42. package/dist/cli/pool-discovery.js +283 -0
  43. package/dist/cli/pool-discovery.js.map +1 -0
  44. package/dist/cli/utils/error-handler.d.ts.map +1 -1
  45. package/dist/cli/utils/error-handler.js +6 -5
  46. package/dist/cli/utils/error-handler.js.map +1 -1
  47. package/dist/config/environment.d.ts.map +1 -1
  48. package/dist/config/environment.js +3 -1
  49. package/dist/config/environment.js.map +1 -1
  50. package/dist/config/launcher-config.d.ts +13 -0
  51. package/dist/config/launcher-config.d.ts.map +1 -1
  52. package/dist/config/launcher-config.js +3 -1
  53. package/dist/config/launcher-config.js.map +1 -1
  54. package/dist/config/price-aggregation.d.ts +1 -1
  55. package/dist/config/price-aggregation.d.ts.map +1 -1
  56. package/dist/config/price-aggregation.js +20 -20
  57. package/dist/config/price-aggregation.js.map +1 -1
  58. package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -1
  59. package/dist/core/exchange/base-exchange-connector.js +1 -5
  60. package/dist/core/exchange/base-exchange-connector.js.map +1 -1
  61. package/dist/core/exchange/base-exchange-data-mapper.d.ts.map +1 -1
  62. package/dist/core/exchange/base-exchange-data-mapper.js +1 -1
  63. package/dist/core/exchange/base-exchange-data-mapper.js.map +1 -1
  64. package/dist/core/price-aggregation/cardano-price-service.d.ts +2 -2
  65. package/dist/core/price-aggregation/cardano-price-service.d.ts.map +1 -1
  66. package/dist/core/price-aggregation/cardano-price-service.js +13 -13
  67. package/dist/core/price-aggregation/cardano-price-service.js.map +1 -1
  68. package/dist/core/price-aggregation/index.d.ts +1 -1
  69. package/dist/core/price-aggregation/index.d.ts.map +1 -1
  70. package/dist/core/price-aggregation/iris-api-client.d.ts.map +1 -1
  71. package/dist/core/price-aggregation/iris-api-client.js +5 -5
  72. package/dist/core/price-aggregation/iris-api-client.js.map +1 -1
  73. package/dist/core/price-aggregation/iris-pool-discovery.d.ts +2 -2
  74. package/dist/core/price-aggregation/iris-pool-discovery.d.ts.map +1 -1
  75. package/dist/core/price-aggregation/iris-pool-discovery.js +3 -3
  76. package/dist/core/price-aggregation/iris-pool-discovery.js.map +1 -1
  77. package/dist/core/price-aggregation/multi-exchange-price-service.d.ts +38 -0
  78. package/dist/core/price-aggregation/multi-exchange-price-service.d.ts.map +1 -0
  79. package/dist/core/price-aggregation/multi-exchange-price-service.js +123 -0
  80. package/dist/core/price-aggregation/multi-exchange-price-service.js.map +1 -0
  81. package/dist/core/price-aggregation/price-cache.d.ts +55 -0
  82. package/dist/core/price-aggregation/price-cache.d.ts.map +1 -0
  83. package/dist/core/price-aggregation/price-cache.js +152 -0
  84. package/dist/core/price-aggregation/price-cache.js.map +1 -0
  85. package/dist/core/price-aggregation/price-calculator.d.ts.map +1 -1
  86. package/dist/core/price-aggregation/price-calculator.js +3 -3
  87. package/dist/core/price-aggregation/price-calculator.js.map +1 -1
  88. package/dist/core/risk-management/risk-manager.d.ts.map +1 -1
  89. package/dist/core/risk-management/risk-manager.js +2 -2
  90. package/dist/core/risk-management/risk-manager.js.map +1 -1
  91. package/dist/core/strategy/strategy-factory.d.ts +5 -0
  92. package/dist/core/strategy/strategy-factory.d.ts.map +1 -1
  93. package/dist/core/strategy/strategy-factory.js +127 -5
  94. package/dist/core/strategy/strategy-factory.js.map +1 -1
  95. package/dist/examples/mexc-connector-comprehensive-test.d.ts +15 -0
  96. package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +1 -0
  97. package/dist/examples/mexc-connector-comprehensive-test.js +514 -0
  98. package/dist/examples/mexc-connector-comprehensive-test.js.map +1 -0
  99. package/dist/examples/mexc-order-update-test.d.ts +4 -0
  100. package/dist/examples/mexc-order-update-test.d.ts.map +1 -0
  101. package/dist/examples/mexc-order-update-test.js +186 -0
  102. package/dist/examples/mexc-order-update-test.js.map +1 -0
  103. package/dist/examples/mexc-test.d.ts +9 -0
  104. package/dist/examples/mexc-test.d.ts.map +1 -0
  105. package/dist/examples/mexc-test.js +218 -0
  106. package/dist/examples/mexc-test.js.map +1 -0
  107. package/dist/examples/mexc-trades-debug.d.ts +2 -0
  108. package/dist/examples/mexc-trades-debug.d.ts.map +1 -0
  109. package/dist/examples/mexc-trades-debug.js +101 -0
  110. package/dist/examples/mexc-trades-debug.js.map +1 -0
  111. package/dist/examples/mexc-trades-subscription-debug.d.ts +2 -0
  112. package/dist/examples/mexc-trades-subscription-debug.d.ts.map +1 -0
  113. package/dist/examples/mexc-trades-subscription-debug.js +150 -0
  114. package/dist/examples/mexc-trades-subscription-debug.js.map +1 -0
  115. package/dist/examples/mexc-websocket-test.d.ts +8 -0
  116. package/dist/examples/mexc-websocket-test.d.ts.map +1 -0
  117. package/dist/examples/mexc-websocket-test.js +115 -0
  118. package/dist/examples/mexc-websocket-test.js.map +1 -0
  119. package/dist/examples/test-protobuf-status-detection.d.ts +9 -0
  120. package/dist/examples/test-protobuf-status-detection.d.ts.map +1 -0
  121. package/dist/examples/test-protobuf-status-detection.js +83 -0
  122. package/dist/examples/test-protobuf-status-detection.js.map +1 -0
  123. package/dist/exchanges/base-exchange-connector.d.ts +33 -0
  124. package/dist/exchanges/base-exchange-connector.d.ts.map +1 -0
  125. package/dist/exchanges/base-exchange-connector.js +55 -0
  126. package/dist/exchanges/base-exchange-connector.js.map +1 -0
  127. package/dist/exchanges/bitget/bitget-auth.d.ts +66 -0
  128. package/dist/exchanges/bitget/bitget-auth.d.ts.map +1 -0
  129. package/dist/exchanges/bitget/bitget-auth.js +203 -0
  130. package/dist/exchanges/bitget/bitget-auth.js.map +1 -0
  131. package/dist/exchanges/bitget/bitget-connector.d.ts +255 -0
  132. package/dist/exchanges/bitget/bitget-connector.d.ts.map +1 -0
  133. package/dist/exchanges/bitget/bitget-connector.js +709 -0
  134. package/dist/exchanges/bitget/bitget-connector.js.map +1 -0
  135. package/dist/exchanges/bitget/bitget-data-mapper.d.ts +47 -0
  136. package/dist/exchanges/bitget/bitget-data-mapper.d.ts.map +1 -0
  137. package/dist/exchanges/bitget/bitget-data-mapper.js +147 -0
  138. package/dist/exchanges/bitget/bitget-data-mapper.js.map +1 -0
  139. package/dist/exchanges/bitget/bitget-user-stream.d.ts +126 -0
  140. package/dist/exchanges/bitget/bitget-user-stream.d.ts.map +1 -0
  141. package/dist/exchanges/bitget/bitget-user-stream.js +474 -0
  142. package/dist/exchanges/bitget/bitget-user-stream.js.map +1 -0
  143. package/dist/exchanges/bitget/bitget-utils.d.ts +17 -0
  144. package/dist/exchanges/bitget/bitget-utils.d.ts.map +1 -0
  145. package/dist/exchanges/bitget/bitget-utils.js +60 -0
  146. package/dist/exchanges/bitget/bitget-utils.js.map +1 -0
  147. package/dist/exchanges/bitget/bitget-websocket.d.ts +124 -0
  148. package/dist/exchanges/bitget/bitget-websocket.d.ts.map +1 -0
  149. package/dist/exchanges/bitget/bitget-websocket.js +434 -0
  150. package/dist/exchanges/bitget/bitget-websocket.js.map +1 -0
  151. package/dist/exchanges/gateio/gateio-auth.d.ts +69 -0
  152. package/dist/exchanges/gateio/gateio-auth.d.ts.map +1 -0
  153. package/dist/exchanges/gateio/gateio-auth.js +205 -0
  154. package/dist/exchanges/gateio/gateio-auth.js.map +1 -0
  155. package/dist/exchanges/gateio/gateio-connector.d.ts +182 -0
  156. package/dist/exchanges/gateio/gateio-connector.d.ts.map +1 -0
  157. package/dist/exchanges/gateio/gateio-connector.js +605 -0
  158. package/dist/exchanges/gateio/gateio-connector.js.map +1 -0
  159. package/dist/exchanges/gateio/gateio-data-mapper.d.ts +57 -0
  160. package/dist/exchanges/gateio/gateio-data-mapper.d.ts.map +1 -0
  161. package/dist/exchanges/gateio/gateio-data-mapper.js +184 -0
  162. package/dist/exchanges/gateio/gateio-data-mapper.js.map +1 -0
  163. package/dist/exchanges/gateio/gateio-user-stream.d.ts +120 -0
  164. package/dist/exchanges/gateio/gateio-user-stream.d.ts.map +1 -0
  165. package/dist/exchanges/gateio/gateio-user-stream.js +384 -0
  166. package/dist/exchanges/gateio/gateio-user-stream.js.map +1 -0
  167. package/dist/exchanges/gateio/gateio-utils.d.ts +45 -0
  168. package/dist/exchanges/gateio/gateio-utils.d.ts.map +1 -0
  169. package/dist/exchanges/gateio/gateio-utils.js +138 -0
  170. package/dist/exchanges/gateio/gateio-utils.js.map +1 -0
  171. package/dist/exchanges/gateio/gateio-websocket.d.ts +145 -0
  172. package/dist/exchanges/gateio/gateio-websocket.d.ts.map +1 -0
  173. package/dist/exchanges/gateio/gateio-websocket.js +469 -0
  174. package/dist/exchanges/gateio/gateio-websocket.js.map +1 -0
  175. package/dist/exchanges/kraken/kraken-auth.d.ts +12 -0
  176. package/dist/exchanges/kraken/kraken-auth.d.ts.map +1 -0
  177. package/dist/exchanges/kraken/kraken-auth.js +68 -0
  178. package/dist/exchanges/kraken/kraken-auth.js.map +1 -0
  179. package/dist/exchanges/kraken/kraken-connector.d.ts +38 -0
  180. package/dist/exchanges/kraken/kraken-connector.d.ts.map +1 -0
  181. package/dist/exchanges/kraken/kraken-connector.js +355 -0
  182. package/dist/exchanges/kraken/kraken-connector.js.map +1 -0
  183. package/dist/exchanges/kraken/kraken-data-mapper.d.ts +14 -0
  184. package/dist/exchanges/kraken/kraken-data-mapper.d.ts.map +1 -0
  185. package/dist/exchanges/kraken/kraken-data-mapper.js +169 -0
  186. package/dist/exchanges/kraken/kraken-data-mapper.js.map +1 -0
  187. package/dist/exchanges/kraken/kraken-utils.d.ts +52 -0
  188. package/dist/exchanges/kraken/kraken-utils.d.ts.map +1 -0
  189. package/dist/exchanges/kraken/kraken-utils.js +206 -0
  190. package/dist/exchanges/kraken/kraken-utils.js.map +1 -0
  191. package/dist/exchanges/kraken/kraken-websocket.d.ts +64 -0
  192. package/dist/exchanges/kraken/kraken-websocket.d.ts.map +1 -0
  193. package/dist/exchanges/kraken/kraken-websocket.js +667 -0
  194. package/dist/exchanges/kraken/kraken-websocket.js.map +1 -0
  195. package/dist/exchanges/kraken/test-kraken-websocket.d.ts +19 -0
  196. package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +1 -0
  197. package/dist/exchanges/kraken/test-kraken-websocket.js +413 -0
  198. package/dist/exchanges/kraken/test-kraken-websocket.js.map +1 -0
  199. package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -1
  200. package/dist/exchanges/mexc/mexc-auth.js +5 -5
  201. package/dist/exchanges/mexc/mexc-auth.js.map +1 -1
  202. package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -1
  203. package/dist/exchanges/mexc/mexc-connector.js +12 -13
  204. package/dist/exchanges/mexc/mexc-connector.js.map +1 -1
  205. package/dist/exchanges/mexc/mexc-data-mapper.d.ts.map +1 -1
  206. package/dist/exchanges/mexc/mexc-data-mapper.js +6 -6
  207. package/dist/exchanges/mexc/mexc-data-mapper.js.map +1 -1
  208. package/dist/exchanges/mexc/mexc-protobuf-decoder.d.ts.map +1 -1
  209. package/dist/exchanges/mexc/mexc-protobuf-decoder.js +14 -13
  210. package/dist/exchanges/mexc/mexc-protobuf-decoder.js.map +1 -1
  211. package/dist/exchanges/mexc/mexc-user-stream.d.ts.map +1 -1
  212. package/dist/exchanges/mexc/mexc-user-stream.js +5 -5
  213. package/dist/exchanges/mexc/mexc-user-stream.js.map +1 -1
  214. package/dist/exchanges/mexc/mexc-utils.d.ts +1 -5
  215. package/dist/exchanges/mexc/mexc-utils.d.ts.map +1 -1
  216. package/dist/exchanges/mexc/mexc-utils.js +33 -39
  217. package/dist/exchanges/mexc/mexc-utils.js.map +1 -1
  218. package/dist/exchanges/mexc/mexc-websocket.d.ts.map +1 -1
  219. package/dist/exchanges/mexc/mexc-websocket.js +45 -31
  220. package/dist/exchanges/mexc/mexc-websocket.js.map +1 -1
  221. package/dist/index.d.ts +4 -0
  222. package/dist/index.d.ts.map +1 -1
  223. package/dist/index.js +10 -1
  224. package/dist/index.js.map +1 -1
  225. package/dist/mcp/resources/index.d.ts +3 -0
  226. package/dist/mcp/resources/index.d.ts.map +1 -0
  227. package/dist/mcp/resources/index.js +11 -0
  228. package/dist/mcp/resources/index.js.map +1 -0
  229. package/dist/mcp/server.d.ts +4 -0
  230. package/dist/mcp/server.d.ts.map +1 -0
  231. package/dist/mcp/server.js +29 -0
  232. package/dist/mcp/server.js.map +1 -0
  233. package/dist/mcp/tools/index.d.ts +3 -0
  234. package/dist/mcp/tools/index.d.ts.map +1 -0
  235. package/dist/mcp/tools/index.js +12 -0
  236. package/dist/mcp/tools/index.js.map +1 -0
  237. package/dist/strategies/grid/grid-calculator.d.ts +63 -4
  238. package/dist/strategies/grid/grid-calculator.d.ts.map +1 -1
  239. package/dist/strategies/grid/grid-calculator.js +190 -15
  240. package/dist/strategies/grid/grid-calculator.js.map +1 -1
  241. package/dist/strategies/grid/grid-order-manager.d.ts +9 -4
  242. package/dist/strategies/grid/grid-order-manager.d.ts.map +1 -1
  243. package/dist/strategies/grid/grid-order-manager.js +58 -15
  244. package/dist/strategies/grid/grid-order-manager.js.map +1 -1
  245. package/dist/strategies/grid/grid-strategy.d.ts +11 -0
  246. package/dist/strategies/grid/grid-strategy.d.ts.map +1 -1
  247. package/dist/strategies/grid/grid-strategy.js +127 -20
  248. package/dist/strategies/grid/grid-strategy.js.map +1 -1
  249. package/dist/strategies/grid/volatility-tracker.d.ts +67 -0
  250. package/dist/strategies/grid/volatility-tracker.d.ts.map +1 -0
  251. package/dist/strategies/grid/volatility-tracker.js +109 -0
  252. package/dist/strategies/grid/volatility-tracker.js.map +1 -0
  253. package/dist/tests/fixtures/test-helpers.d.ts +5 -0
  254. package/dist/tests/fixtures/test-helpers.d.ts.map +1 -0
  255. package/dist/tests/fixtures/test-helpers.js +8 -0
  256. package/dist/tests/fixtures/test-helpers.js.map +1 -0
  257. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +2 -0
  258. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +1 -0
  259. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +237 -0
  260. package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +1 -0
  261. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +2 -0
  262. package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
  263. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +57 -0
  264. package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +1 -0
  265. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +2 -0
  266. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +1 -0
  267. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +141 -0
  268. package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +1 -0
  269. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +2 -0
  270. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +1 -0
  271. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +375 -0
  272. package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +1 -0
  273. package/dist/tests/unit/cli/exchange-factory.test.d.ts +2 -0
  274. package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +1 -0
  275. package/dist/tests/unit/cli/exchange-factory.test.js +148 -0
  276. package/dist/tests/unit/cli/exchange-factory.test.js.map +1 -0
  277. package/dist/tests/unit/config/environment.test.d.ts +2 -0
  278. package/dist/tests/unit/config/environment.test.d.ts.map +1 -0
  279. package/dist/tests/unit/config/environment.test.js +158 -0
  280. package/dist/tests/unit/config/environment.test.js.map +1 -0
  281. package/dist/tests/unit/config/launcher-config.test.d.ts +2 -0
  282. package/dist/tests/unit/config/launcher-config.test.d.ts.map +1 -0
  283. package/dist/tests/unit/config/launcher-config.test.js +117 -0
  284. package/dist/tests/unit/config/launcher-config.test.js.map +1 -0
  285. package/dist/tests/unit/config/price-aggregation.test.d.ts +2 -0
  286. package/dist/tests/unit/config/price-aggregation.test.d.ts.map +1 -0
  287. package/dist/tests/unit/config/price-aggregation.test.js +144 -0
  288. package/dist/tests/unit/config/price-aggregation.test.js.map +1 -0
  289. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +2 -0
  290. package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +1 -0
  291. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +191 -0
  292. package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +1 -0
  293. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +2 -0
  294. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +1 -0
  295. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +324 -0
  296. package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +1 -0
  297. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +2 -0
  298. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
  299. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +177 -0
  300. package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +1 -0
  301. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +2 -0
  302. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +1 -0
  303. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +168 -0
  304. package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +1 -0
  305. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +2 -0
  306. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +1 -0
  307. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +217 -0
  308. package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +1 -0
  309. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +2 -0
  310. package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +1 -0
  311. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +229 -0
  312. package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +1 -0
  313. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +2 -0
  314. package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +1 -0
  315. package/dist/tests/unit/core/risk-management/risk-manager.test.js +194 -0
  316. package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +1 -0
  317. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +2 -0
  318. package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +1 -0
  319. package/dist/tests/unit/core/strategy/base-strategy.test.js +254 -0
  320. package/dist/tests/unit/core/strategy/base-strategy.test.js.map +1 -0
  321. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +2 -0
  322. package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +1 -0
  323. package/dist/tests/unit/core/strategy/strategy-factory.test.js +213 -0
  324. package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +1 -0
  325. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +2 -0
  326. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +1 -0
  327. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +452 -0
  328. package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +1 -0
  329. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +2 -0
  330. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +1 -0
  331. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +1419 -0
  332. package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +1 -0
  333. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +2 -0
  334. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +1 -0
  335. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +435 -0
  336. package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +1 -0
  337. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +2 -0
  338. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +1 -0
  339. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +314 -0
  340. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +1 -0
  341. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +2 -0
  342. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +1 -0
  343. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +178 -0
  344. package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +1 -0
  345. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +2 -0
  346. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +1 -0
  347. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +502 -0
  348. package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +1 -0
  349. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +2 -0
  350. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +1 -0
  351. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +317 -0
  352. package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +1 -0
  353. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +2 -0
  354. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +1 -0
  355. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +843 -0
  356. package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +1 -0
  357. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +2 -0
  358. package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +1 -0
  359. package/dist/tests/unit/strategies/grid/grid-calculator.test.js +67 -0
  360. package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +1 -0
  361. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +2 -0
  362. package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +1 -0
  363. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +211 -0
  364. package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +1 -0
  365. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +2 -0
  366. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +1 -0
  367. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +197 -0
  368. package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +1 -0
  369. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +2 -0
  370. package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +1 -0
  371. package/dist/tests/unit/strategies/grid/grid-strategy.test.js +429 -0
  372. package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +1 -0
  373. package/dist/tests/unit/utils/logger.test.d.ts +2 -0
  374. package/dist/tests/unit/utils/logger.test.d.ts.map +1 -0
  375. package/dist/tests/unit/utils/logger.test.js +260 -0
  376. package/dist/tests/unit/utils/logger.test.js.map +1 -0
  377. package/dist/tests/unit/utils/symbol-utils.test.d.ts +2 -0
  378. package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +1 -0
  379. package/dist/tests/unit/utils/symbol-utils.test.js +178 -0
  380. package/dist/tests/unit/utils/symbol-utils.test.js.map +1 -0
  381. package/dist/types/bitget-raw.d.ts +75 -0
  382. package/dist/types/bitget-raw.d.ts.map +1 -0
  383. package/dist/types/bitget-raw.js +10 -0
  384. package/dist/types/bitget-raw.js.map +1 -0
  385. package/dist/types/bitget.d.ts +35 -0
  386. package/dist/types/bitget.d.ts.map +1 -0
  387. package/dist/types/bitget.js +8 -0
  388. package/dist/types/bitget.js.map +1 -0
  389. package/dist/types/gateio-raw.d.ts +104 -0
  390. package/dist/types/gateio-raw.d.ts.map +1 -0
  391. package/dist/types/gateio-raw.js +7 -0
  392. package/dist/types/gateio-raw.js.map +1 -0
  393. package/dist/types/gateio.d.ts +41 -0
  394. package/dist/types/gateio.d.ts.map +1 -0
  395. package/dist/types/gateio.js +8 -0
  396. package/dist/types/gateio.js.map +1 -0
  397. package/dist/types/grid.d.ts +77 -0
  398. package/dist/types/grid.d.ts.map +1 -1
  399. package/dist/types/index.d.ts +6 -0
  400. package/dist/types/index.d.ts.map +1 -1
  401. package/dist/types/index.js +6 -0
  402. package/dist/types/index.js.map +1 -1
  403. package/dist/types/kraken-raw.d.ts +89 -0
  404. package/dist/types/kraken-raw.d.ts.map +1 -0
  405. package/dist/types/kraken-raw.js +10 -0
  406. package/dist/types/kraken-raw.js.map +1 -0
  407. package/dist/types/kraken.d.ts +44 -0
  408. package/dist/types/kraken.d.ts.map +1 -0
  409. package/dist/types/kraken.js +3 -0
  410. package/dist/types/kraken.js.map +1 -0
  411. package/dist/types/mexc.d.ts +9 -0
  412. package/dist/types/mexc.d.ts.map +1 -1
  413. package/dist/types/price-aggregation.d.ts +31 -0
  414. package/dist/types/price-aggregation.d.ts.map +1 -0
  415. package/dist/types/price-aggregation.js +6 -0
  416. package/dist/types/price-aggregation.js.map +1 -0
  417. package/dist/types/price.d.ts +23 -0
  418. package/dist/types/price.d.ts.map +1 -1
  419. package/dist/types/strategy.d.ts +5 -0
  420. package/dist/types/strategy.d.ts.map +1 -1
  421. package/dist/utils/crypto.d.ts +15 -0
  422. package/dist/utils/crypto.d.ts.map +1 -0
  423. package/dist/utils/crypto.js +50 -0
  424. package/dist/utils/crypto.js.map +1 -0
  425. package/dist/utils/exchange-utils.d.ts +194 -0
  426. package/dist/utils/exchange-utils.d.ts.map +1 -0
  427. package/dist/utils/exchange-utils.js +455 -0
  428. package/dist/utils/exchange-utils.js.map +1 -0
  429. package/dist/utils/index.d.ts +1 -0
  430. package/dist/utils/index.d.ts.map +1 -1
  431. package/dist/utils/index.js +3 -1
  432. package/dist/utils/index.js.map +1 -1
  433. package/dist/utils/logger.d.ts +1 -1
  434. package/dist/utils/logger.d.ts.map +1 -1
  435. package/dist/utils/logger.js +7 -7
  436. package/dist/utils/logger.js.map +1 -1
  437. package/dist/utils/validation.d.ts +36 -0
  438. package/dist/utils/validation.d.ts.map +1 -0
  439. package/dist/utils/validation.js +174 -0
  440. package/dist/utils/validation.js.map +1 -0
  441. package/package.json +7 -1
@@ -2,32 +2,207 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GridCalculator = void 0;
4
4
  class GridCalculator {
5
- calculateGridLevels(centerPrice, spacing, levels) {
6
- const gridLevels = [];
5
+ /**
6
+ * Generate a complete dynamic grid based on DynamicGridConfig.
7
+ * This is the main entry point for dynamic order level generation.
8
+ *
9
+ * @param centerPrice - Current mid-market price to build grid around
10
+ * @param config - Dynamic grid configuration (spacing model, size model, etc.)
11
+ * @param availableBalance - Available balance in quote currency for sizing
12
+ * @param minOrderValue - Minimum order value enforced by the exchange
13
+ * @returns Array of GridLevel with calculated prices and order sizes
14
+ */
15
+ generateDynamicGrid(centerPrice, config, availableBalance, minOrderValue) {
16
+ this.validateConfig(config);
17
+ const volatilityMultiplier = config.volatilityMultiplier ?? 1.0;
18
+ const spacings = this.calculateSpacings(config.levels, config.spacingModel, config.baseSpacing, volatilityMultiplier, config.spacingFactor, config.customSpacings);
19
+ const weights = this.calculateSizeWeights(config.levels, config.sizeModel, config.sizeWeights);
20
+ const gridLevels = this.buildGridLevels(centerPrice, spacings);
21
+ return this.assignDynamicOrderSizes(gridLevels, weights, config.baseSize, availableBalance, minOrderValue);
22
+ }
23
+ /**
24
+ * Calculate cumulative spacing offsets for each level.
25
+ * Returns an array where spacings[i] is the total offset from center for level i+1.
26
+ *
27
+ * For linear: [s, 2s, 3s, ...] (equal increments)
28
+ * For geometric: [s, s*f, s*f^2, ...] (each level multiplied by factor)
29
+ * For custom: user-provided cumulative offsets
30
+ */
31
+ calculateSpacings(levels, model, baseSpacing, volatilityMultiplier = 1.0, spacingFactor, customSpacings) {
32
+ let spacings;
33
+ switch (model) {
34
+ case 'linear':
35
+ spacings = this.calculateLinearSpacings(levels, baseSpacing);
36
+ break;
37
+ case 'geometric':
38
+ spacings = this.calculateGeometricSpacings(levels, baseSpacing, spacingFactor ?? 1.3);
39
+ break;
40
+ case 'custom':
41
+ if (!customSpacings || customSpacings.length !== levels) {
42
+ throw new Error(`Custom spacing model requires exactly ${levels} spacing values, got ${customSpacings?.length ?? 0}`);
43
+ }
44
+ spacings = [...customSpacings];
45
+ break;
46
+ default:
47
+ throw new Error(`Unsupported spacing model: ${model}`);
48
+ }
49
+ if (volatilityMultiplier !== 1.0) {
50
+ spacings = spacings.map(s => s * volatilityMultiplier);
51
+ }
52
+ return spacings;
53
+ }
54
+ /**
55
+ * Linear spacing: equal distance between each level.
56
+ * Level 1 = baseSpacing, Level 2 = 2 * baseSpacing, etc.
57
+ */
58
+ calculateLinearSpacings(levels, baseSpacing) {
59
+ const spacings = [];
7
60
  for (let i = 1; i <= levels; i++) {
8
- const buyPrice = centerPrice * (1 - spacing * i);
9
- const sellPrice = centerPrice * (1 + spacing * i);
61
+ spacings.push(baseSpacing * i);
62
+ }
63
+ return spacings;
64
+ }
65
+ /**
66
+ * Geometric spacing: each level's individual gap is multiplied by spacingFactor.
67
+ * Level 1 gap = baseSpacing
68
+ * Level 2 gap = baseSpacing * factor
69
+ * Level 3 gap = baseSpacing * factor^2
70
+ * Cumulative offsets are the running sum of these gaps.
71
+ *
72
+ * Example with baseSpacing=0.005, factor=1.5:
73
+ * Gaps: [0.5%, 0.75%, 1.125%, 1.6875%]
74
+ * Cumul: [0.5%, 1.25%, 2.375%, 4.0625%]
75
+ */
76
+ calculateGeometricSpacings(levels, baseSpacing, spacingFactor) {
77
+ const spacings = [];
78
+ let cumulative = 0;
79
+ for (let i = 0; i < levels; i++) {
80
+ const gap = baseSpacing * Math.pow(spacingFactor, i);
81
+ cumulative += gap;
82
+ spacings.push(cumulative);
83
+ }
84
+ return spacings;
85
+ }
86
+ /**
87
+ * Calculate size weight multipliers for each level.
88
+ *
89
+ * - flat: all weights = 1.0 (equal sizing)
90
+ * - pyramidal: weights decrease from center outward (level 1 gets most, level N gets least)
91
+ * - custom: user-provided weight multipliers
92
+ */
93
+ calculateSizeWeights(levels, model, customWeights) {
94
+ switch (model) {
95
+ case 'flat':
96
+ return new Array(levels).fill(1.0);
97
+ case 'pyramidal': {
98
+ // Weights decrease linearly: level 1 = levels, level 2 = levels-1, ..., level N = 1
99
+ // Then normalize so they sum to `levels` (preserving total capital allocation)
100
+ const rawWeights = [];
101
+ for (let i = 0; i < levels; i++) {
102
+ rawWeights.push(levels - i);
103
+ }
104
+ const sum = rawWeights.reduce((a, b) => a + b, 0);
105
+ const normFactor = levels / sum;
106
+ return rawWeights.map(w => w * normFactor);
107
+ }
108
+ case 'custom':
109
+ if (!customWeights || customWeights.length !== levels) {
110
+ throw new Error(`Custom size model requires exactly ${levels} weight values, got ${customWeights?.length ?? 0}`);
111
+ }
112
+ return [...customWeights];
113
+ default:
114
+ throw new Error(`Unsupported size model: ${model}`);
115
+ }
116
+ }
117
+ /**
118
+ * Build grid levels from center price and spacing offsets.
119
+ * Creates both buy (below center) and sell (above center) levels.
120
+ */
121
+ buildGridLevels(centerPrice, spacings) {
122
+ const gridLevels = [];
123
+ for (const spacing of spacings) {
10
124
  gridLevels.push({
11
- price: buyPrice,
125
+ price: centerPrice * (1 - spacing),
12
126
  side: 'buy',
13
- orderSize: 0
127
+ orderSize: 0,
14
128
  });
15
129
  gridLevels.push({
16
- price: sellPrice,
130
+ price: centerPrice * (1 + spacing),
17
131
  side: 'sell',
18
- orderSize: 0
132
+ orderSize: 0,
19
133
  });
20
134
  }
21
135
  return gridLevels;
22
136
  }
23
- calculateOrderSizes(availableBalance, levels) {
24
- return (availableBalance * 0.8) / (levels * 2);
137
+ /**
138
+ * Assign order sizes to grid levels using weight multipliers.
139
+ *
140
+ * The baseSize is the per-level order size in quote currency.
141
+ * Weights scale individual levels relative to baseSize.
142
+ * Total allocation is capped at 80% of available balance.
143
+ */
144
+ assignDynamicOrderSizes(gridLevels, weights, baseSize, availableBalance, minOrderValue) {
145
+ // Total desired allocation = sum of (baseSize * weight) for each side
146
+ const totalWeightedSize = weights.reduce((sum, w) => sum + w, 0) * baseSize * 2; // *2 for buy+sell
147
+ const maxAllocation = availableBalance * 0.8;
148
+ // Scale factor to ensure we don't exceed available balance
149
+ const scaleFactor = totalWeightedSize > maxAllocation ? maxAllocation / totalWeightedSize : 1.0;
150
+ return gridLevels.map((level, index) => {
151
+ const weightIndex = Math.floor(index / 2);
152
+ const weight = weights[weightIndex];
153
+ const sizeInQuote = baseSize * weight * scaleFactor;
154
+ const effectiveSize = minOrderValue ? Math.max(sizeInQuote, minOrderValue) : sizeInQuote;
155
+ return {
156
+ ...level,
157
+ orderSize: effectiveSize / level.price,
158
+ };
159
+ });
25
160
  }
26
- assignOrderSizes(gridLevels, orderSize) {
27
- return gridLevels.map(level => ({
28
- ...level,
29
- orderSize
30
- }));
161
+ /**
162
+ * Validate dynamic grid configuration
163
+ */
164
+ validateConfig(config) {
165
+ if (config.levels < 1 || config.levels > 10) {
166
+ throw new Error(`Grid levels must be between 1 and 10, got ${config.levels}`);
167
+ }
168
+ if (config.baseSpacing <= 0 || config.baseSpacing >= 1) {
169
+ throw new Error(`Base spacing must be between 0 and 1 (exclusive), got ${config.baseSpacing}`);
170
+ }
171
+ if (config.baseSize <= 0) {
172
+ throw new Error(`Base size must be positive, got ${config.baseSize}`);
173
+ }
174
+ if (config.spacingModel === 'geometric') {
175
+ const factor = config.spacingFactor ?? 1.3;
176
+ if (factor <= 0) {
177
+ throw new Error(`Spacing factor must be positive, got ${factor}`);
178
+ }
179
+ }
180
+ if (config.spacingModel === 'custom') {
181
+ if (!config.customSpacings || config.customSpacings.length !== config.levels) {
182
+ throw new Error(`Custom spacing model requires exactly ${config.levels} spacing values`);
183
+ }
184
+ for (let i = 0; i < config.customSpacings.length; i++) {
185
+ if (config.customSpacings[i] <= 0) {
186
+ throw new Error(`Custom spacing at index ${i} must be positive`);
187
+ }
188
+ if (i > 0 && config.customSpacings[i] <= config.customSpacings[i - 1]) {
189
+ throw new Error(`Custom spacings must be in increasing order`);
190
+ }
191
+ }
192
+ }
193
+ if (config.sizeModel === 'custom') {
194
+ if (!config.sizeWeights || config.sizeWeights.length !== config.levels) {
195
+ throw new Error(`Custom size model requires exactly ${config.levels} weight values`);
196
+ }
197
+ for (let i = 0; i < config.sizeWeights.length; i++) {
198
+ if (config.sizeWeights[i] <= 0) {
199
+ throw new Error(`Size weight at index ${i} must be positive`);
200
+ }
201
+ }
202
+ }
203
+ if (config.volatilityMultiplier !== undefined && config.volatilityMultiplier <= 0) {
204
+ throw new Error(`Volatility multiplier must be positive, got ${config.volatilityMultiplier}`);
205
+ }
31
206
  }
32
207
  }
33
208
  exports.GridCalculator = GridCalculator;
@@ -1 +1 @@
1
- {"version":3,"file":"grid-calculator.js","sourceRoot":"","sources":["../../../src/strategies/grid/grid-calculator.ts"],"names":[],"mappings":";;;AAEA,MAAa,cAAc;IACzB,mBAAmB,CAAC,WAAmB,EAAE,OAAe,EAAE,MAAc;QACtE,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;YAElD,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,QAAQ;gBACf,IAAI,EAAE,KAAK;gBACX,SAAS,EAAE,CAAC;aACb,CAAC,CAAC;YAEH,UAAU,CAAC,IAAI,CAAC;gBACd,KAAK,EAAE,SAAS;gBAChB,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,CAAC;aACb,CAAC,CAAC;QACL,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,mBAAmB,CAAC,gBAAwB,EAAE,MAAc;QAC1D,OAAO,CAAC,gBAAgB,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,gBAAgB,CAAC,UAAuB,EAAE,SAAiB;QACzD,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9B,GAAG,KAAK;YACR,SAAS;SACV,CAAC,CAAC,CAAC;IACN,CAAC;CACF;AAlCD,wCAkCC"}
1
+ {"version":3,"file":"grid-calculator.js","sourceRoot":"","sources":["../../../src/strategies/grid/grid-calculator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Order, OrderSide, GridLevel, GridOrderManagerConfig } from '../../types';
1
+ import { Order, OrderSide, GridLevel, GridOrderManagerConfig, DynamicGridConfig } from '../../types';
2
2
  export declare class GridOrderManager {
3
3
  private gridCalculator;
4
4
  private logger;
@@ -8,11 +8,16 @@ export declare class GridOrderManager {
8
8
  private lastAdjustmentTime;
9
9
  private currentGridCenter;
10
10
  constructor(config: GridOrderManagerConfig);
11
+ setCurrentGridCenter(price: number): void;
11
12
  placeInitialGrid(levels: GridLevel[], placeOrderFn: (side: OrderSide, amount: number, price: number) => Promise<Order>): Promise<Order[]>;
12
- handleOrderFill(filledOrder: Order, currentPrice: number, gridSpacing: number, gridLevels: number, availableBalance: number, placeOrderFn: (side: OrderSide, amount: number, price: number) => Promise<Order>, cancelAllOrdersFn: (symbol: string) => Promise<void>): Promise<void>;
13
- handlePriceDeviation(newPrice: number, gridSpacing: number, gridLevels: number, availableBalance: number, placeOrderFn: (side: OrderSide, amount: number, price: number) => Promise<Order>, cancelAllOrdersFn: (symbol: string) => Promise<void>, symbol: string): Promise<void>;
13
+ handleOrderFill(filledOrder: Order, currentPrice: number, availableBalance: number, placeOrderFn: (side: OrderSide, amount: number, price: number) => Promise<Order>, cancelAllOrdersFn: (symbol: string) => Promise<void>, dynamicGridConfig: DynamicGridConfig, minOrderValue?: number, cancelOrderFn?: (orderId: string, symbol: string) => Promise<void>): Promise<void>;
14
+ handlePriceDeviation(newPrice: number, availableBalance: number, placeOrderFn: (side: OrderSide, amount: number, price: number) => Promise<Order>, cancelAllOrdersFn: (symbol: string) => Promise<void>, symbol: string, dynamicGridConfig: DynamicGridConfig, minOrderValue?: number, cancelOrderFn?: (orderId: string, symbol: string) => Promise<void>): Promise<void>;
14
15
  private cancelAllOrders;
15
- private recreateGridAtPrice;
16
+ /**
17
+ * Recreate the grid using the dynamic grid calculator.
18
+ * This replaces the old recreateGridAtPrice method with full dynamic support.
19
+ */
20
+ private recreateGrid;
16
21
  getActiveOrders(): Order[];
17
22
  /**
18
23
  * Check if grid adjustment is currently in progress
@@ -1 +1 @@
1
- {"version":3,"file":"grid-order-manager.d.ts","sourceRoot":"","sources":["../../../src/strategies/grid/grid-order-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAIlF,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,iBAAiB,CAAK;gBAElB,MAAM,EAAE,sBAAsB;IAKpC,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAuBzI,eAAe,CACnB,WAAW,EAAE,KAAK,EAClB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,EAChF,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACnD,OAAO,CAAC,IAAI,CAAC;IAkBV,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,EAChF,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACpD,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;YAgBF,eAAe;YAmBf,mBAAmB;IAejC,eAAe,IAAI,KAAK,EAAE;IAK1B;;;OAGG;IACH,oBAAoB,IAAI,OAAO;CAGhC"}
1
+ {"version":3,"file":"grid-order-manager.d.ts","sourceRoot":"","sources":["../../../src/strategies/grid/grid-order-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,SAAS,EACT,SAAS,EACT,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAIrB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,iBAAiB,CAAK;gBAElB,MAAM,EAAE,sBAAsB;IAK1C,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC,gBAAgB,CACpB,MAAM,EAAE,SAAS,EAAE,EACnB,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,GAC/E,OAAO,CAAC,KAAK,EAAE,CAAC;IA6Bb,eAAe,CACnB,WAAW,EAAE,KAAK,EAClB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,EAChF,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACpD,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACjE,OAAO,CAAC,IAAI,CAAC;IAyCV,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,EACxB,YAAY,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,EAChF,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACpD,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACjE,OAAO,CAAC,IAAI,CAAC;YA8BF,eAAe;IAwD7B;;;OAGG;YACW,YAAY;IAkB1B,eAAe,IAAI,KAAK,EAAE;IAK1B;;;OAGG;IACH,oBAAoB,IAAI,OAAO;CAGhC"}
@@ -13,6 +13,9 @@ class GridOrderManager {
13
13
  this.config = config;
14
14
  this.gridCalculator = new grid_calculator_1.GridCalculator();
15
15
  }
16
+ setCurrentGridCenter(price) {
17
+ this.currentGridCenter = price;
18
+ }
16
19
  async placeInitialGrid(levels, placeOrderFn) {
17
20
  const orders = [];
18
21
  for (const level of levels) {
@@ -22,64 +25,104 @@ class GridOrderManager {
22
25
  this.logger.info(`Placed ${level.side.toUpperCase()} order: ${level.orderSize.toFixed(3)} @ $${level.price.toFixed(6)}`, { orderId: order.id });
23
26
  }
24
27
  catch (error) {
25
- this.logger.error(`Failed to place ${level.side} order at ${level.price}`, { error: error instanceof Error ? error.message : String(error) });
28
+ this.logger.error(`Failed to place ${level.side} order at ${level.price}`, {
29
+ error: error instanceof Error ? error.message : String(error),
30
+ });
26
31
  }
27
32
  }
28
33
  this.activeOrders = orders;
29
34
  if (levels.length > 0) {
30
35
  const buyLevels = levels.filter(l => l.side === 'buy');
31
36
  const sellLevels = levels.filter(l => l.side === 'sell');
32
- this.currentGridCenter = (Math.max(...buyLevels.map(l => l.price)) + Math.min(...sellLevels.map(l => l.price))) / 2;
37
+ this.currentGridCenter =
38
+ (Math.max(...buyLevels.map(l => l.price)) + Math.min(...sellLevels.map(l => l.price))) / 2;
33
39
  }
34
40
  return orders;
35
41
  }
36
- async handleOrderFill(filledOrder, currentPrice, gridSpacing, gridLevels, availableBalance, placeOrderFn, cancelAllOrdersFn) {
42
+ async handleOrderFill(filledOrder, currentPrice, availableBalance, placeOrderFn, cancelAllOrdersFn, dynamicGridConfig, minOrderValue, cancelOrderFn) {
37
43
  this.logger.info(`Order FILLED: ${filledOrder.side.toUpperCase()} ${filledOrder.filled} @ $${filledOrder.price}`, { orderId: filledOrder.id });
38
44
  if (this.isAdjusting || Date.now() - this.lastAdjustmentTime < this.config.adjustmentDebounce) {
39
45
  return;
40
46
  }
41
47
  this.isAdjusting = true;
42
48
  this.lastAdjustmentTime = Date.now();
49
+ this.activeOrders = this.activeOrders.filter(o => o.id !== filledOrder.id);
43
50
  try {
44
- await this.cancelAllOrders(cancelAllOrdersFn, filledOrder.symbol);
45
- await this.recreateGridAtPrice(currentPrice, gridSpacing, gridLevels, availableBalance, placeOrderFn);
51
+ const cancelled = await this.cancelAllOrders(cancelAllOrdersFn, filledOrder.symbol, cancelOrderFn);
52
+ if (!cancelled) {
53
+ this.logger.error('❌ Order cancellation failed - aborting grid recreation to prevent duplicate orders');
54
+ return;
55
+ }
56
+ await this.recreateGrid(currentPrice, dynamicGridConfig, availableBalance, placeOrderFn, minOrderValue);
46
57
  }
47
58
  finally {
48
59
  this.isAdjusting = false;
49
60
  }
50
61
  }
51
- async handlePriceDeviation(newPrice, gridSpacing, gridLevels, availableBalance, placeOrderFn, cancelAllOrdersFn, symbol) {
62
+ async handlePriceDeviation(newPrice, availableBalance, placeOrderFn, cancelAllOrdersFn, symbol, dynamicGridConfig, minOrderValue, cancelOrderFn) {
52
63
  const deviation = Math.abs(newPrice - this.currentGridCenter) / this.currentGridCenter;
53
64
  if (deviation > this.config.priceDeviationThreshold && !this.isAdjusting) {
54
65
  this.isAdjusting = true;
55
66
  this.lastAdjustmentTime = Date.now();
56
67
  try {
57
- await this.cancelAllOrders(cancelAllOrdersFn, symbol);
58
- await this.recreateGridAtPrice(newPrice, gridSpacing, gridLevels, availableBalance, placeOrderFn);
68
+ const cancelled = await this.cancelAllOrders(cancelAllOrdersFn, symbol, cancelOrderFn);
69
+ if (!cancelled) {
70
+ this.logger.error('❌ Order cancellation failed - aborting grid recreation to prevent duplicate orders');
71
+ return;
72
+ }
73
+ await this.recreateGrid(newPrice, dynamicGridConfig, availableBalance, placeOrderFn, minOrderValue);
59
74
  }
60
75
  finally {
61
76
  this.isAdjusting = false;
62
77
  }
63
78
  }
64
79
  }
65
- async cancelAllOrders(cancelAllOrdersFn, symbol) {
80
+ async cancelAllOrders(cancelAllOrdersFn, symbol, cancelOrderFn) {
66
81
  if (this.activeOrders.length === 0) {
67
- return;
82
+ return true;
68
83
  }
69
84
  try {
70
85
  await cancelAllOrdersFn(symbol);
71
86
  this.activeOrders = [];
87
+ this.logger.info(`✅ Successfully cancelled all orders for ${symbol}`);
88
+ return true;
72
89
  }
73
90
  catch (error) {
74
91
  this.logger.warn(`⚠️ Bulk cancellation failed for ${symbol}, falling back to individual cancellation`, {
75
- error: error instanceof Error ? error.message : String(error)
92
+ error: error instanceof Error ? error.message : String(error),
76
93
  });
94
+ if (!cancelOrderFn) {
95
+ this.logger.error('❌ Individual order cancellation not available - cannot recover from bulk cancellation failure');
96
+ return false;
97
+ }
98
+ const failedCancellations = [];
99
+ const ordersToCancel = [...this.activeOrders];
100
+ for (const order of ordersToCancel) {
101
+ try {
102
+ await cancelOrderFn(order.id, order.symbol);
103
+ this.activeOrders = this.activeOrders.filter(o => o.id !== order.id);
104
+ }
105
+ catch (cancelError) {
106
+ this.logger.error(`Failed to cancel order ${order.id}:`, {
107
+ error: cancelError instanceof Error ? cancelError.message : String(cancelError),
108
+ });
109
+ failedCancellations.push(order.id);
110
+ }
111
+ }
112
+ if (failedCancellations.length > 0) {
113
+ this.logger.error(`❌ Failed to cancel ${failedCancellations.length} orders. Aborting grid recreation.`);
114
+ return false;
115
+ }
116
+ this.activeOrders = [];
117
+ return true;
77
118
  }
78
119
  }
79
- async recreateGridAtPrice(centerPrice, gridSpacing, gridLevels, availableBalance, placeOrderFn) {
80
- const levels = this.gridCalculator.calculateGridLevels(centerPrice, gridSpacing, gridLevels);
81
- const orderSize = this.gridCalculator.calculateOrderSizes(availableBalance, gridLevels);
82
- const gridWithSizes = this.gridCalculator.assignOrderSizes(levels, orderSize);
120
+ /**
121
+ * Recreate the grid using the dynamic grid calculator.
122
+ * This replaces the old recreateGridAtPrice method with full dynamic support.
123
+ */
124
+ async recreateGrid(centerPrice, dynamicGridConfig, availableBalance, placeOrderFn, minOrderValue) {
125
+ const gridWithSizes = this.gridCalculator.generateDynamicGrid(centerPrice, dynamicGridConfig, availableBalance, minOrderValue);
83
126
  await this.placeInitialGrid(gridWithSizes, placeOrderFn);
84
127
  this.currentGridCenter = centerPrice;
85
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grid-order-manager.js","sourceRoot":"","sources":["../../../src/strategies/grid/grid-order-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grid-order-manager.js","sourceRoot":"","sources":["../../../src/strategies/grid/grid-order-manager.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export declare class GridStrategy extends BaseStrategy {
8
8
  private calculator;
9
9
  private exchangeConnector?;
10
10
  private gridConfig?;
11
+ private volatilityTracker?;
11
12
  private priceUpdateInterval?;
12
13
  private logger;
13
14
  constructor(id: string);
@@ -19,7 +20,17 @@ export declare class GridStrategy extends BaseStrategy {
19
20
  onOrderUpdate(order: Order): Promise<void>;
20
21
  setExchangeConnector(connector: BaseExchangeConnector): void;
21
22
  setRiskConfig(riskConfig: RiskManagerConfig): void;
23
+ /**
24
+ * Get the DynamicGridConfig from the current gridConfig.
25
+ * dynamicGrid is always set by the StrategyFactory.
26
+ */
27
+ private getDynamicGridConfig;
28
+ /**
29
+ * Log the active grid configuration for visibility
30
+ */
31
+ private logGridConfiguration;
22
32
  private placeOrder;
33
+ private cancelOrder;
23
34
  private cancelAllOrders;
24
35
  private getAvailableBalance;
25
36
  private getSymbol;
@@ -1 +1 @@
1
- {"version":3,"file":"grid-strategy.d.ts","sourceRoot":"","sources":["../../../src/strategies/grid/grid-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAa,cAAc,EAA0D,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1I,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAQpF,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,iBAAiB,CAAC,CAAwB;IAClD,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,mBAAmB,CAAC,CAAiB;IAC7C,OAAO,CAAC,MAAM,CAAiC;gBAEnC,EAAE,EAAE,MAAM;IAoBtB,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAShD,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBrB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB3D,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BhD,oBAAoB,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI;IAI5D,aAAa,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;YAIpC,UAAU;YASV,eAAe;YAQf,mBAAmB;IAiBjC,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,oBAAoB;YAYd,sBAAsB;CAcrC"}
1
+ {"version":3,"file":"grid-strategy.d.ts","sourceRoot":"","sources":["../../../src/strategies/grid/grid-strategy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EACL,KAAK,EAEL,cAAc,EAId,iBAAiB,EAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AASpF,qBAAa,YAAa,SAAQ,YAAY;IAC5C,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,iBAAiB,CAAC,CAAwB;IAClD,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,OAAO,CAAC,mBAAmB,CAAC,CAAiB;IAC7C,OAAO,CAAC,MAAM,CAAiC;gBAEnC,EAAE,EAAE,MAAM;IAoBtB,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAShD,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BjD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6EtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBrB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2B3D,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAsChD,oBAAoB,CAAC,SAAS,EAAE,qBAAqB,GAAG,IAAI;IAI5D,aAAa,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAIlD;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAO5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;YAkBd,UAAU;YASV,WAAW;YAQX,eAAe;YAQf,mBAAmB;IAiBjC,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,oBAAoB;YAmCd,sBAAsB;CAmBrC"}