@3rd-eye-labs/openmm 0.0.1 → 0.1.1
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.
- package/README.md +6 -1
- package/dist/cli/cli.js +4 -5
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands/balance.d.ts.map +1 -1
- package/dist/cli/commands/balance.js +1 -1
- package/dist/cli/commands/balance.js.map +1 -1
- package/dist/cli/commands/grid.d.ts +3 -0
- package/dist/cli/commands/grid.d.ts.map +1 -0
- package/dist/cli/commands/grid.js +103 -0
- package/dist/cli/commands/grid.js.map +1 -0
- package/dist/cli/commands/multi-trade.d.ts +3 -0
- package/dist/cli/commands/multi-trade.d.ts.map +1 -0
- package/dist/cli/commands/multi-trade.js +175 -0
- package/dist/cli/commands/multi-trade.js.map +1 -0
- package/dist/cli/commands/orderbook.js +1 -1
- package/dist/cli/commands/orderbook.js.map +1 -1
- package/dist/cli/commands/orders.d.ts.map +1 -1
- package/dist/cli/commands/orders.js +3 -4
- package/dist/cli/commands/orders.js.map +1 -1
- package/dist/cli/commands/pool-discovery.d.ts.map +1 -1
- package/dist/cli/commands/pool-discovery.js +15 -8
- package/dist/cli/commands/pool-discovery.js.map +1 -1
- package/dist/cli/commands/price-comparison.d.ts +3 -0
- package/dist/cli/commands/price-comparison.d.ts.map +1 -0
- package/dist/cli/commands/price-comparison.js +103 -0
- package/dist/cli/commands/price-comparison.js.map +1 -0
- package/dist/cli/commands/ticker.d.ts.map +1 -1
- package/dist/cli/commands/ticker.js.map +1 -1
- package/dist/cli/commands/trade.d.ts.map +1 -1
- package/dist/cli/commands/trade.js +135 -18
- package/dist/cli/commands/trade.js.map +1 -1
- package/dist/cli/commands/trades.d.ts.map +1 -1
- package/dist/cli/commands/trades.js +2 -3
- package/dist/cli/commands/trades.js.map +1 -1
- package/dist/cli/exchange-factory.d.ts.map +1 -1
- package/dist/cli/exchange-factory.js +6 -6
- package/dist/cli/exchange-factory.js.map +1 -1
- package/dist/cli/pool-discovery-core.d.ts +2 -1
- package/dist/cli/pool-discovery-core.d.ts.map +1 -1
- package/dist/cli/pool-discovery-core.js +69 -39
- package/dist/cli/pool-discovery-core.js.map +1 -1
- package/dist/cli/pool-discovery.d.ts +56 -0
- package/dist/cli/pool-discovery.d.ts.map +1 -0
- package/dist/cli/pool-discovery.js +283 -0
- package/dist/cli/pool-discovery.js.map +1 -0
- package/dist/cli/utils/error-handler.d.ts.map +1 -1
- package/dist/cli/utils/error-handler.js +6 -5
- package/dist/cli/utils/error-handler.js.map +1 -1
- package/dist/config/environment.d.ts.map +1 -1
- package/dist/config/environment.js +3 -1
- package/dist/config/environment.js.map +1 -1
- package/dist/config/launcher-config.d.ts +13 -0
- package/dist/config/launcher-config.d.ts.map +1 -1
- package/dist/config/launcher-config.js +3 -1
- package/dist/config/launcher-config.js.map +1 -1
- package/dist/config/price-aggregation.d.ts +1 -1
- package/dist/config/price-aggregation.d.ts.map +1 -1
- package/dist/config/price-aggregation.js +20 -20
- package/dist/config/price-aggregation.js.map +1 -1
- package/dist/core/exchange/base-exchange-connector.d.ts.map +1 -1
- package/dist/core/exchange/base-exchange-connector.js +1 -5
- package/dist/core/exchange/base-exchange-connector.js.map +1 -1
- package/dist/core/exchange/base-exchange-data-mapper.d.ts.map +1 -1
- package/dist/core/exchange/base-exchange-data-mapper.js +1 -1
- package/dist/core/exchange/base-exchange-data-mapper.js.map +1 -1
- package/dist/core/price-aggregation/cardano-price-service.d.ts +2 -2
- package/dist/core/price-aggregation/cardano-price-service.d.ts.map +1 -1
- package/dist/core/price-aggregation/cardano-price-service.js +13 -13
- package/dist/core/price-aggregation/cardano-price-service.js.map +1 -1
- package/dist/core/price-aggregation/index.d.ts +1 -1
- package/dist/core/price-aggregation/index.d.ts.map +1 -1
- package/dist/core/price-aggregation/iris-api-client.d.ts.map +1 -1
- package/dist/core/price-aggregation/iris-api-client.js +5 -5
- package/dist/core/price-aggregation/iris-api-client.js.map +1 -1
- package/dist/core/price-aggregation/iris-pool-discovery.d.ts +2 -2
- package/dist/core/price-aggregation/iris-pool-discovery.d.ts.map +1 -1
- package/dist/core/price-aggregation/iris-pool-discovery.js +3 -3
- package/dist/core/price-aggregation/iris-pool-discovery.js.map +1 -1
- package/dist/core/price-aggregation/multi-exchange-price-service.d.ts +38 -0
- package/dist/core/price-aggregation/multi-exchange-price-service.d.ts.map +1 -0
- package/dist/core/price-aggregation/multi-exchange-price-service.js +123 -0
- package/dist/core/price-aggregation/multi-exchange-price-service.js.map +1 -0
- package/dist/core/price-aggregation/price-cache.d.ts +55 -0
- package/dist/core/price-aggregation/price-cache.d.ts.map +1 -0
- package/dist/core/price-aggregation/price-cache.js +152 -0
- package/dist/core/price-aggregation/price-cache.js.map +1 -0
- package/dist/core/price-aggregation/price-calculator.d.ts.map +1 -1
- package/dist/core/price-aggregation/price-calculator.js +3 -3
- package/dist/core/price-aggregation/price-calculator.js.map +1 -1
- package/dist/core/risk-management/risk-manager.d.ts.map +1 -1
- package/dist/core/risk-management/risk-manager.js +2 -2
- package/dist/core/risk-management/risk-manager.js.map +1 -1
- package/dist/core/strategy/strategy-factory.d.ts +5 -0
- package/dist/core/strategy/strategy-factory.d.ts.map +1 -1
- package/dist/core/strategy/strategy-factory.js +127 -5
- package/dist/core/strategy/strategy-factory.js.map +1 -1
- package/dist/examples/mexc-connector-comprehensive-test.d.ts +15 -0
- package/dist/examples/mexc-connector-comprehensive-test.d.ts.map +1 -0
- package/dist/examples/mexc-connector-comprehensive-test.js +514 -0
- package/dist/examples/mexc-connector-comprehensive-test.js.map +1 -0
- package/dist/examples/mexc-order-update-test.d.ts +4 -0
- package/dist/examples/mexc-order-update-test.d.ts.map +1 -0
- package/dist/examples/mexc-order-update-test.js +186 -0
- package/dist/examples/mexc-order-update-test.js.map +1 -0
- package/dist/examples/mexc-test.d.ts +9 -0
- package/dist/examples/mexc-test.d.ts.map +1 -0
- package/dist/examples/mexc-test.js +218 -0
- package/dist/examples/mexc-test.js.map +1 -0
- package/dist/examples/mexc-trades-debug.d.ts +2 -0
- package/dist/examples/mexc-trades-debug.d.ts.map +1 -0
- package/dist/examples/mexc-trades-debug.js +101 -0
- package/dist/examples/mexc-trades-debug.js.map +1 -0
- package/dist/examples/mexc-trades-subscription-debug.d.ts +2 -0
- package/dist/examples/mexc-trades-subscription-debug.d.ts.map +1 -0
- package/dist/examples/mexc-trades-subscription-debug.js +150 -0
- package/dist/examples/mexc-trades-subscription-debug.js.map +1 -0
- package/dist/examples/mexc-websocket-test.d.ts +8 -0
- package/dist/examples/mexc-websocket-test.d.ts.map +1 -0
- package/dist/examples/mexc-websocket-test.js +115 -0
- package/dist/examples/mexc-websocket-test.js.map +1 -0
- package/dist/examples/test-protobuf-status-detection.d.ts +9 -0
- package/dist/examples/test-protobuf-status-detection.d.ts.map +1 -0
- package/dist/examples/test-protobuf-status-detection.js +83 -0
- package/dist/examples/test-protobuf-status-detection.js.map +1 -0
- package/dist/exchanges/base-exchange-connector.d.ts +33 -0
- package/dist/exchanges/base-exchange-connector.d.ts.map +1 -0
- package/dist/exchanges/base-exchange-connector.js +55 -0
- package/dist/exchanges/base-exchange-connector.js.map +1 -0
- package/dist/exchanges/bitget/bitget-auth.d.ts +66 -0
- package/dist/exchanges/bitget/bitget-auth.d.ts.map +1 -0
- package/dist/exchanges/bitget/bitget-auth.js +203 -0
- package/dist/exchanges/bitget/bitget-auth.js.map +1 -0
- package/dist/exchanges/bitget/bitget-connector.d.ts +255 -0
- package/dist/exchanges/bitget/bitget-connector.d.ts.map +1 -0
- package/dist/exchanges/bitget/bitget-connector.js +709 -0
- package/dist/exchanges/bitget/bitget-connector.js.map +1 -0
- package/dist/exchanges/bitget/bitget-data-mapper.d.ts +47 -0
- package/dist/exchanges/bitget/bitget-data-mapper.d.ts.map +1 -0
- package/dist/exchanges/bitget/bitget-data-mapper.js +147 -0
- package/dist/exchanges/bitget/bitget-data-mapper.js.map +1 -0
- package/dist/exchanges/bitget/bitget-user-stream.d.ts +126 -0
- package/dist/exchanges/bitget/bitget-user-stream.d.ts.map +1 -0
- package/dist/exchanges/bitget/bitget-user-stream.js +474 -0
- package/dist/exchanges/bitget/bitget-user-stream.js.map +1 -0
- package/dist/exchanges/bitget/bitget-utils.d.ts +17 -0
- package/dist/exchanges/bitget/bitget-utils.d.ts.map +1 -0
- package/dist/exchanges/bitget/bitget-utils.js +60 -0
- package/dist/exchanges/bitget/bitget-utils.js.map +1 -0
- package/dist/exchanges/bitget/bitget-websocket.d.ts +124 -0
- package/dist/exchanges/bitget/bitget-websocket.d.ts.map +1 -0
- package/dist/exchanges/bitget/bitget-websocket.js +434 -0
- package/dist/exchanges/bitget/bitget-websocket.js.map +1 -0
- package/dist/exchanges/gateio/gateio-auth.d.ts +69 -0
- package/dist/exchanges/gateio/gateio-auth.d.ts.map +1 -0
- package/dist/exchanges/gateio/gateio-auth.js +205 -0
- package/dist/exchanges/gateio/gateio-auth.js.map +1 -0
- package/dist/exchanges/gateio/gateio-connector.d.ts +182 -0
- package/dist/exchanges/gateio/gateio-connector.d.ts.map +1 -0
- package/dist/exchanges/gateio/gateio-connector.js +605 -0
- package/dist/exchanges/gateio/gateio-connector.js.map +1 -0
- package/dist/exchanges/gateio/gateio-data-mapper.d.ts +57 -0
- package/dist/exchanges/gateio/gateio-data-mapper.d.ts.map +1 -0
- package/dist/exchanges/gateio/gateio-data-mapper.js +184 -0
- package/dist/exchanges/gateio/gateio-data-mapper.js.map +1 -0
- package/dist/exchanges/gateio/gateio-user-stream.d.ts +120 -0
- package/dist/exchanges/gateio/gateio-user-stream.d.ts.map +1 -0
- package/dist/exchanges/gateio/gateio-user-stream.js +384 -0
- package/dist/exchanges/gateio/gateio-user-stream.js.map +1 -0
- package/dist/exchanges/gateio/gateio-utils.d.ts +45 -0
- package/dist/exchanges/gateio/gateio-utils.d.ts.map +1 -0
- package/dist/exchanges/gateio/gateio-utils.js +138 -0
- package/dist/exchanges/gateio/gateio-utils.js.map +1 -0
- package/dist/exchanges/gateio/gateio-websocket.d.ts +145 -0
- package/dist/exchanges/gateio/gateio-websocket.d.ts.map +1 -0
- package/dist/exchanges/gateio/gateio-websocket.js +469 -0
- package/dist/exchanges/gateio/gateio-websocket.js.map +1 -0
- package/dist/exchanges/kraken/kraken-auth.d.ts +12 -0
- package/dist/exchanges/kraken/kraken-auth.d.ts.map +1 -0
- package/dist/exchanges/kraken/kraken-auth.js +68 -0
- package/dist/exchanges/kraken/kraken-auth.js.map +1 -0
- package/dist/exchanges/kraken/kraken-connector.d.ts +38 -0
- package/dist/exchanges/kraken/kraken-connector.d.ts.map +1 -0
- package/dist/exchanges/kraken/kraken-connector.js +355 -0
- package/dist/exchanges/kraken/kraken-connector.js.map +1 -0
- package/dist/exchanges/kraken/kraken-data-mapper.d.ts +14 -0
- package/dist/exchanges/kraken/kraken-data-mapper.d.ts.map +1 -0
- package/dist/exchanges/kraken/kraken-data-mapper.js +169 -0
- package/dist/exchanges/kraken/kraken-data-mapper.js.map +1 -0
- package/dist/exchanges/kraken/kraken-utils.d.ts +52 -0
- package/dist/exchanges/kraken/kraken-utils.d.ts.map +1 -0
- package/dist/exchanges/kraken/kraken-utils.js +206 -0
- package/dist/exchanges/kraken/kraken-utils.js.map +1 -0
- package/dist/exchanges/kraken/kraken-websocket.d.ts +64 -0
- package/dist/exchanges/kraken/kraken-websocket.d.ts.map +1 -0
- package/dist/exchanges/kraken/kraken-websocket.js +667 -0
- package/dist/exchanges/kraken/kraken-websocket.js.map +1 -0
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts +19 -0
- package/dist/exchanges/kraken/test-kraken-websocket.d.ts.map +1 -0
- package/dist/exchanges/kraken/test-kraken-websocket.js +413 -0
- package/dist/exchanges/kraken/test-kraken-websocket.js.map +1 -0
- package/dist/exchanges/mexc/mexc-auth.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-auth.js +5 -5
- package/dist/exchanges/mexc/mexc-auth.js.map +1 -1
- package/dist/exchanges/mexc/mexc-connector.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-connector.js +12 -13
- package/dist/exchanges/mexc/mexc-connector.js.map +1 -1
- package/dist/exchanges/mexc/mexc-data-mapper.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-data-mapper.js +6 -6
- package/dist/exchanges/mexc/mexc-data-mapper.js.map +1 -1
- package/dist/exchanges/mexc/mexc-protobuf-decoder.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-protobuf-decoder.js +14 -13
- package/dist/exchanges/mexc/mexc-protobuf-decoder.js.map +1 -1
- package/dist/exchanges/mexc/mexc-user-stream.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-user-stream.js +5 -5
- package/dist/exchanges/mexc/mexc-user-stream.js.map +1 -1
- package/dist/exchanges/mexc/mexc-utils.d.ts +1 -5
- package/dist/exchanges/mexc/mexc-utils.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-utils.js +33 -39
- package/dist/exchanges/mexc/mexc-utils.js.map +1 -1
- package/dist/exchanges/mexc/mexc-websocket.d.ts.map +1 -1
- package/dist/exchanges/mexc/mexc-websocket.js +45 -31
- package/dist/exchanges/mexc/mexc-websocket.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/resources/index.d.ts +3 -0
- package/dist/mcp/resources/index.d.ts.map +1 -0
- package/dist/mcp/resources/index.js +11 -0
- package/dist/mcp/resources/index.js.map +1 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +29 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +3 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +12 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/strategies/grid/grid-calculator.d.ts +63 -4
- package/dist/strategies/grid/grid-calculator.d.ts.map +1 -1
- package/dist/strategies/grid/grid-calculator.js +190 -15
- package/dist/strategies/grid/grid-calculator.js.map +1 -1
- package/dist/strategies/grid/grid-order-manager.d.ts +9 -4
- package/dist/strategies/grid/grid-order-manager.d.ts.map +1 -1
- package/dist/strategies/grid/grid-order-manager.js +58 -15
- package/dist/strategies/grid/grid-order-manager.js.map +1 -1
- package/dist/strategies/grid/grid-strategy.d.ts +11 -0
- package/dist/strategies/grid/grid-strategy.d.ts.map +1 -1
- package/dist/strategies/grid/grid-strategy.js +127 -20
- package/dist/strategies/grid/grid-strategy.js.map +1 -1
- package/dist/strategies/grid/volatility-tracker.d.ts +67 -0
- package/dist/strategies/grid/volatility-tracker.d.ts.map +1 -0
- package/dist/strategies/grid/volatility-tracker.js +109 -0
- package/dist/strategies/grid/volatility-tracker.js.map +1 -0
- package/dist/tests/fixtures/test-helpers.d.ts +5 -0
- package/dist/tests/fixtures/test-helpers.d.ts.map +1 -0
- package/dist/tests/fixtures/test-helpers.js +8 -0
- package/dist/tests/fixtures/test-helpers.js.map +1 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts +2 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.d.ts.map +1 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js +237 -0
- package/dist/tests/integration/exchanges/mexc/mexc-integration.test.js.map +1 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts +2 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js +57 -0
- package/dist/tests/integration/price-aggregation/cardano-price-service.test.js.map +1 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts +2 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.d.ts.map +1 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js +141 -0
- package/dist/tests/integration/price-aggregation/price-aggregation-integration.test.js.map +1 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts +2 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.d.ts.map +1 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js +375 -0
- package/dist/tests/integration/strategies/grid/grid-strategy-e2e.test.js.map +1 -0
- package/dist/tests/unit/cli/exchange-factory.test.d.ts +2 -0
- package/dist/tests/unit/cli/exchange-factory.test.d.ts.map +1 -0
- package/dist/tests/unit/cli/exchange-factory.test.js +148 -0
- package/dist/tests/unit/cli/exchange-factory.test.js.map +1 -0
- package/dist/tests/unit/config/environment.test.d.ts +2 -0
- package/dist/tests/unit/config/environment.test.d.ts.map +1 -0
- package/dist/tests/unit/config/environment.test.js +158 -0
- package/dist/tests/unit/config/environment.test.js.map +1 -0
- package/dist/tests/unit/config/launcher-config.test.d.ts +2 -0
- package/dist/tests/unit/config/launcher-config.test.d.ts.map +1 -0
- package/dist/tests/unit/config/launcher-config.test.js +117 -0
- package/dist/tests/unit/config/launcher-config.test.js.map +1 -0
- package/dist/tests/unit/config/price-aggregation.test.d.ts +2 -0
- package/dist/tests/unit/config/price-aggregation.test.d.ts.map +1 -0
- package/dist/tests/unit/config/price-aggregation.test.js +144 -0
- package/dist/tests/unit/config/price-aggregation.test.js.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts +2 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.d.ts.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js +191 -0
- package/dist/tests/unit/core/exchange/base-exchange-connector.test.js.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts +2 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.d.ts.map +1 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js +324 -0
- package/dist/tests/unit/core/exchange/base-exchange-data-mapper.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js +177 -0
- package/dist/tests/unit/core/price-aggregation/cardano-price-service.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js +168 -0
- package/dist/tests/unit/core/price-aggregation/iris-api-client.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js +217 -0
- package/dist/tests/unit/core/price-aggregation/iris-pool-discovery.test.js.map +1 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts +2 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.d.ts.map +1 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js +229 -0
- package/dist/tests/unit/core/price-aggregation/price-calculator.test.js.map +1 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts +2 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.d.ts.map +1 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.js +194 -0
- package/dist/tests/unit/core/risk-management/risk-manager.test.js.map +1 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts +2 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.d.ts.map +1 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.js +254 -0
- package/dist/tests/unit/core/strategy/base-strategy.test.js.map +1 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts +2 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.d.ts.map +1 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.js +213 -0
- package/dist/tests/unit/core/strategy/strategy-factory.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js +452 -0
- package/dist/tests/unit/exchanges/mexc/mexc-auth.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js +1419 -0
- package/dist/tests/unit/exchanges/mexc/mexc-connector.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js +435 -0
- package/dist/tests/unit/exchanges/mexc/mexc-data-mapper.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js +314 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-decoder.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js +178 -0
- package/dist/tests/unit/exchanges/mexc/mexc-protobuf-status-detection.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js +502 -0
- package/dist/tests/unit/exchanges/mexc/mexc-user-stream.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js +317 -0
- package/dist/tests/unit/exchanges/mexc/mexc-utils.test.js.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts +2 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.d.ts.map +1 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js +843 -0
- package/dist/tests/unit/exchanges/mexc/mexc-websocket.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js +67 -0
- package/dist/tests/unit/strategies/grid/grid-calculator.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js +211 -0
- package/dist/tests/unit/strategies/grid/grid-order-manager.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js +197 -0
- package/dist/tests/unit/strategies/grid/grid-strategy-simple.test.js.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts +2 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.d.ts.map +1 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js +429 -0
- package/dist/tests/unit/strategies/grid/grid-strategy.test.js.map +1 -0
- package/dist/tests/unit/utils/logger.test.d.ts +2 -0
- package/dist/tests/unit/utils/logger.test.d.ts.map +1 -0
- package/dist/tests/unit/utils/logger.test.js +260 -0
- package/dist/tests/unit/utils/logger.test.js.map +1 -0
- package/dist/tests/unit/utils/symbol-utils.test.d.ts +2 -0
- package/dist/tests/unit/utils/symbol-utils.test.d.ts.map +1 -0
- package/dist/tests/unit/utils/symbol-utils.test.js +178 -0
- package/dist/tests/unit/utils/symbol-utils.test.js.map +1 -0
- package/dist/types/bitget-raw.d.ts +75 -0
- package/dist/types/bitget-raw.d.ts.map +1 -0
- package/dist/types/bitget-raw.js +10 -0
- package/dist/types/bitget-raw.js.map +1 -0
- package/dist/types/bitget.d.ts +35 -0
- package/dist/types/bitget.d.ts.map +1 -0
- package/dist/types/bitget.js +8 -0
- package/dist/types/bitget.js.map +1 -0
- package/dist/types/gateio-raw.d.ts +104 -0
- package/dist/types/gateio-raw.d.ts.map +1 -0
- package/dist/types/gateio-raw.js +7 -0
- package/dist/types/gateio-raw.js.map +1 -0
- package/dist/types/gateio.d.ts +41 -0
- package/dist/types/gateio.d.ts.map +1 -0
- package/dist/types/gateio.js +8 -0
- package/dist/types/gateio.js.map +1 -0
- package/dist/types/grid.d.ts +77 -0
- package/dist/types/grid.d.ts.map +1 -1
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/kraken-raw.d.ts +89 -0
- package/dist/types/kraken-raw.d.ts.map +1 -0
- package/dist/types/kraken-raw.js +10 -0
- package/dist/types/kraken-raw.js.map +1 -0
- package/dist/types/kraken.d.ts +44 -0
- package/dist/types/kraken.d.ts.map +1 -0
- package/dist/types/kraken.js +3 -0
- package/dist/types/kraken.js.map +1 -0
- package/dist/types/mexc.d.ts +9 -0
- package/dist/types/mexc.d.ts.map +1 -1
- package/dist/types/price-aggregation.d.ts +31 -0
- package/dist/types/price-aggregation.d.ts.map +1 -0
- package/dist/types/price-aggregation.js +6 -0
- package/dist/types/price-aggregation.js.map +1 -0
- package/dist/types/price.d.ts +23 -0
- package/dist/types/price.d.ts.map +1 -1
- package/dist/types/strategy.d.ts +5 -0
- package/dist/types/strategy.d.ts.map +1 -1
- package/dist/utils/crypto.d.ts +15 -0
- package/dist/utils/crypto.d.ts.map +1 -0
- package/dist/utils/crypto.js +50 -0
- package/dist/utils/crypto.js.map +1 -0
- package/dist/utils/exchange-utils.d.ts +194 -0
- package/dist/utils/exchange-utils.d.ts.map +1 -0
- package/dist/utils/exchange-utils.js +455 -0
- package/dist/utils/exchange-utils.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.d.ts +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +7 -7
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/validation.d.ts +36 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +174 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +7 -1
|
@@ -6,6 +6,7 @@ const price_aggregation_1 = require("../../core/price-aggregation");
|
|
|
6
6
|
const risk_manager_1 = require("../../core/risk-management/risk-manager");
|
|
7
7
|
const grid_order_manager_1 = require("./grid-order-manager");
|
|
8
8
|
const grid_calculator_1 = require("./grid-calculator");
|
|
9
|
+
const volatility_tracker_1 = require("./volatility-tracker");
|
|
9
10
|
const symbol_utils_1 = require("../../utils/symbol-utils");
|
|
10
11
|
const utils_1 = require("../../utils");
|
|
11
12
|
class GridStrategy extends base_strategy_1.BaseStrategy {
|
|
@@ -17,12 +18,12 @@ class GridStrategy extends base_strategy_1.BaseStrategy {
|
|
|
17
18
|
const riskConfig = {
|
|
18
19
|
maxPositionSize: 0.8,
|
|
19
20
|
safetyReservePercentage: 0.2,
|
|
20
|
-
minConfidence: 0.6
|
|
21
|
+
minConfidence: 0.6,
|
|
21
22
|
};
|
|
22
23
|
this.riskManager = new risk_manager_1.RiskManager(riskConfig);
|
|
23
24
|
const orderManagerConfig = {
|
|
24
25
|
priceDeviationThreshold: 0.015,
|
|
25
|
-
adjustmentDebounce: 2000
|
|
26
|
+
adjustmentDebounce: 2000,
|
|
26
27
|
};
|
|
27
28
|
this.orderManager = new grid_order_manager_1.GridOrderManager(orderManagerConfig);
|
|
28
29
|
}
|
|
@@ -38,6 +39,19 @@ class GridStrategy extends base_strategy_1.BaseStrategy {
|
|
|
38
39
|
const gridStrategyConfig = config;
|
|
39
40
|
this.config = config;
|
|
40
41
|
this.gridConfig = gridStrategyConfig.gridConfig;
|
|
42
|
+
// Initialize volatility tracker if configured
|
|
43
|
+
if (this.gridConfig.volatilityConfig?.enabled) {
|
|
44
|
+
const vc = this.gridConfig.volatilityConfig;
|
|
45
|
+
this.volatilityTracker = new volatility_tracker_1.VolatilityTracker({
|
|
46
|
+
windowSize: vc.windowSize,
|
|
47
|
+
lowThreshold: vc.lowThreshold,
|
|
48
|
+
highThreshold: vc.highThreshold,
|
|
49
|
+
lowMultiplier: vc.lowMultiplier,
|
|
50
|
+
highMultiplier: vc.highMultiplier,
|
|
51
|
+
});
|
|
52
|
+
this.logger.info(`📈 Volatility tracking enabled (window: ${vc.windowSize} samples, ` +
|
|
53
|
+
`thresholds: ${(vc.lowThreshold * 100).toFixed(1)}%/${(vc.highThreshold * 100).toFixed(1)}%)`);
|
|
54
|
+
}
|
|
41
55
|
this.setStatus('idle');
|
|
42
56
|
}
|
|
43
57
|
async start() {
|
|
@@ -52,15 +66,43 @@ class GridStrategy extends base_strategy_1.BaseStrategy {
|
|
|
52
66
|
throw new Error(`Price confidence too low: ${aggregatedPrice.confidence} < ${this.gridConfig.minConfidence}`);
|
|
53
67
|
}
|
|
54
68
|
const balance = await this.getAvailableBalance();
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
const
|
|
69
|
+
const ticker = await this.exchangeConnector.getTicker(this.getSymbol());
|
|
70
|
+
const exchangeMidPrice = (ticker.bid + ticker.ask) / 2;
|
|
71
|
+
const dynamicConfig = this.getDynamicGridConfig();
|
|
72
|
+
const minOrderValue = this.config
|
|
73
|
+
? utils_1.ExchangeUtils.getMinimumOrderValue(this.config.exchange, this.config.symbol)
|
|
74
|
+
: 0;
|
|
75
|
+
const gridWithSizes = this.calculator.generateDynamicGrid(exchangeMidPrice, dynamicConfig, balance, minOrderValue);
|
|
76
|
+
this.logGridConfiguration(dynamicConfig, gridWithSizes.length);
|
|
77
|
+
await this.setupOrderSubscription();
|
|
78
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
58
79
|
await this.orderManager.placeInitialGrid(gridWithSizes, (side, amount, price) => this.placeOrder(side, amount, price));
|
|
80
|
+
this.orderManager.setCurrentGridCenter(exchangeMidPrice);
|
|
81
|
+
const openOrders = await this.exchangeConnector?.getOpenOrders(this.getSymbol());
|
|
82
|
+
const expectedOrderCount = dynamicConfig.levels * 2; // buy + sell orders
|
|
83
|
+
const actualOrderCount = openOrders?.length || 0;
|
|
84
|
+
if (actualOrderCount < expectedOrderCount) {
|
|
85
|
+
this.logger.info(`${expectedOrderCount - actualOrderCount} orders filled immediately, recreating grid...`);
|
|
86
|
+
setTimeout(async () => {
|
|
87
|
+
try {
|
|
88
|
+
const ticker = await this.exchangeConnector?.getTicker(this.getSymbol());
|
|
89
|
+
if (ticker) {
|
|
90
|
+
const exchangeMidPrice = (ticker.bid + ticker.ask) / 2;
|
|
91
|
+
await this.onPriceUpdate(this.getSymbol(), exchangeMidPrice);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
this.logger.error('Failed to recreate grid after immediate fills:', {
|
|
96
|
+
error: String(error),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}, 2000);
|
|
100
|
+
}
|
|
59
101
|
this.startPriceMonitoring();
|
|
60
|
-
await this.setupOrderSubscription();
|
|
61
102
|
}
|
|
62
103
|
catch (error) {
|
|
63
|
-
this.
|
|
104
|
+
this.logger.error('❌ Grid strategy start failed:', { error: String(error) });
|
|
105
|
+
throw error;
|
|
64
106
|
}
|
|
65
107
|
}
|
|
66
108
|
async stop() {
|
|
@@ -77,7 +119,7 @@ class GridStrategy extends base_strategy_1.BaseStrategy {
|
|
|
77
119
|
await this.exchangeConnector.cancelOrder(order.id, order.symbol);
|
|
78
120
|
}
|
|
79
121
|
catch (error) {
|
|
80
|
-
this.logger.error(`Failed to cancel order ${order.id}:`, { error });
|
|
122
|
+
this.logger.error(`Failed to cancel order ${order.id}:`, { error: String(error) });
|
|
81
123
|
}
|
|
82
124
|
}
|
|
83
125
|
}
|
|
@@ -92,10 +134,14 @@ class GridStrategy extends base_strategy_1.BaseStrategy {
|
|
|
92
134
|
}
|
|
93
135
|
try {
|
|
94
136
|
const balance = await this.getAvailableBalance();
|
|
95
|
-
|
|
137
|
+
const dynamicConfig = this.getDynamicGridConfig();
|
|
138
|
+
const minOrderValue = this.config
|
|
139
|
+
? utils_1.ExchangeUtils.getMinimumOrderValue(this.config.exchange, this.config.symbol)
|
|
140
|
+
: 0;
|
|
141
|
+
await this.orderManager.handlePriceDeviation(price, balance, (side, amount, price) => this.placeOrder(side, amount, price), (symbol) => this.cancelAllOrders(symbol), symbol, dynamicConfig, minOrderValue, (orderId, symbol) => this.cancelOrder(orderId, symbol));
|
|
96
142
|
}
|
|
97
143
|
catch (error) {
|
|
98
|
-
this.logger.error('Price update handling failed:', { error });
|
|
144
|
+
this.logger.error('Price update handling failed:', { error: String(error) });
|
|
99
145
|
}
|
|
100
146
|
}
|
|
101
147
|
async onOrderUpdate(order) {
|
|
@@ -104,17 +150,23 @@ class GridStrategy extends base_strategy_1.BaseStrategy {
|
|
|
104
150
|
}
|
|
105
151
|
if ((order.status === 'filled' || order.status === 'partially_filled') && this.gridConfig) {
|
|
106
152
|
if (this.orderManager.isCurrentlyAdjusting()) {
|
|
107
|
-
this.logger.info(`⏸️
|
|
153
|
+
this.logger.info(`⏸️ Grid adjustment in progress, ignoring ${order.status} event`);
|
|
108
154
|
return;
|
|
109
155
|
}
|
|
110
156
|
try {
|
|
111
|
-
const
|
|
112
|
-
|
|
157
|
+
const ticker = await this.exchangeConnector?.getTicker(this.getSymbol());
|
|
158
|
+
if (!ticker)
|
|
159
|
+
return;
|
|
160
|
+
const exchangeMidPrice = (ticker.bid + ticker.ask) / 2;
|
|
113
161
|
const balance = await this.getAvailableBalance();
|
|
114
|
-
|
|
162
|
+
const dynamicConfig = this.getDynamicGridConfig();
|
|
163
|
+
const minOrderValue = this.config
|
|
164
|
+
? utils_1.ExchangeUtils.getMinimumOrderValue(this.config.exchange, this.config.symbol)
|
|
165
|
+
: 0;
|
|
166
|
+
await this.orderManager.handleOrderFill(order, exchangeMidPrice, balance, (side, amount, price) => this.placeOrder(side, amount, price), (symbol) => this.cancelAllOrders(symbol), dynamicConfig, minOrderValue, (orderId, symbol) => this.cancelOrder(orderId, symbol));
|
|
115
167
|
}
|
|
116
168
|
catch (error) {
|
|
117
|
-
this.logger.error('Order fill handling failed:', { error });
|
|
169
|
+
this.logger.error('Order fill handling failed:', { error: String(error) });
|
|
118
170
|
}
|
|
119
171
|
}
|
|
120
172
|
}
|
|
@@ -124,6 +176,36 @@ class GridStrategy extends base_strategy_1.BaseStrategy {
|
|
|
124
176
|
setRiskConfig(riskConfig) {
|
|
125
177
|
this.riskManager = new risk_manager_1.RiskManager(riskConfig);
|
|
126
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Get the DynamicGridConfig from the current gridConfig.
|
|
181
|
+
* dynamicGrid is always set by the StrategyFactory.
|
|
182
|
+
*/
|
|
183
|
+
getDynamicGridConfig() {
|
|
184
|
+
if (!this.gridConfig?.dynamicGrid) {
|
|
185
|
+
throw new Error('DynamicGridConfig is required but not set in gridConfig');
|
|
186
|
+
}
|
|
187
|
+
return this.gridConfig.dynamicGrid;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Log the active grid configuration for visibility
|
|
191
|
+
*/
|
|
192
|
+
logGridConfiguration(config, totalOrders) {
|
|
193
|
+
this.logger.info(`📊 Grid Configuration:`);
|
|
194
|
+
this.logger.info(` Levels: ${config.levels} per side (${totalOrders} total orders)`);
|
|
195
|
+
this.logger.info(` Spacing Model: ${config.spacingModel}`);
|
|
196
|
+
this.logger.info(` Base Spacing: ${(config.baseSpacing * 100).toFixed(2)}%`);
|
|
197
|
+
if (config.spacingModel === 'geometric') {
|
|
198
|
+
this.logger.info(` Spacing Factor: ${config.spacingFactor}`);
|
|
199
|
+
}
|
|
200
|
+
this.logger.info(` Size Model: ${config.sizeModel}`);
|
|
201
|
+
this.logger.info(` Base Size: $${config.baseSize}`);
|
|
202
|
+
if (config.volatilityMultiplier && config.volatilityMultiplier !== 1.0) {
|
|
203
|
+
this.logger.info(` Volatility Multiplier: ${config.volatilityMultiplier}`);
|
|
204
|
+
}
|
|
205
|
+
if (this.volatilityTracker) {
|
|
206
|
+
this.logger.info(` Volatility Tracking: enabled`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
127
209
|
async placeOrder(side, amount, price) {
|
|
128
210
|
if (!this.exchangeConnector) {
|
|
129
211
|
throw new Error('Exchange connector not set');
|
|
@@ -131,6 +213,12 @@ class GridStrategy extends base_strategy_1.BaseStrategy {
|
|
|
131
213
|
const symbol = this.getSymbol();
|
|
132
214
|
return await this.exchangeConnector.createOrder(symbol, 'limit', side, amount, price);
|
|
133
215
|
}
|
|
216
|
+
async cancelOrder(orderId, symbol) {
|
|
217
|
+
if (!this.exchangeConnector) {
|
|
218
|
+
throw new Error('Exchange connector not set');
|
|
219
|
+
}
|
|
220
|
+
await this.exchangeConnector.cancelOrder(orderId, symbol);
|
|
221
|
+
}
|
|
134
222
|
async cancelAllOrders(symbol) {
|
|
135
223
|
if (!this.exchangeConnector) {
|
|
136
224
|
throw new Error('Exchange connector not set');
|
|
@@ -157,12 +245,28 @@ class GridStrategy extends base_strategy_1.BaseStrategy {
|
|
|
157
245
|
startPriceMonitoring() {
|
|
158
246
|
this.priceUpdateInterval = setInterval(async () => {
|
|
159
247
|
try {
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
248
|
+
const ticker = await this.exchangeConnector?.getTicker(this.getSymbol());
|
|
249
|
+
if (ticker) {
|
|
250
|
+
const exchangeMidPrice = (ticker.bid + ticker.ask) / 2;
|
|
251
|
+
// Record price for volatility tracking
|
|
252
|
+
if (this.volatilityTracker) {
|
|
253
|
+
this.volatilityTracker.recordPrice(exchangeMidPrice);
|
|
254
|
+
if (this.volatilityTracker.hasMultiplierChanged()) {
|
|
255
|
+
const newMultiplier = this.volatilityTracker.getMultiplier();
|
|
256
|
+
const dynamicConfig = this.getDynamicGridConfig();
|
|
257
|
+
dynamicConfig.volatilityMultiplier = newMultiplier;
|
|
258
|
+
this.logger.info(`🔄 Volatility adjustment: spreading grid with multiplier ${newMultiplier}x ` +
|
|
259
|
+
`(volatility: ${(this.volatilityTracker.getVolatility() * 100).toFixed(2)}%)`);
|
|
260
|
+
// Trigger grid recreation with updated multiplier
|
|
261
|
+
await this.onPriceUpdate(this.getSymbol(), exchangeMidPrice);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
await this.onPriceUpdate(this.getSymbol(), exchangeMidPrice);
|
|
266
|
+
}
|
|
163
267
|
}
|
|
164
268
|
catch (error) {
|
|
165
|
-
this.logger.error('Price monitoring failed:', { error });
|
|
269
|
+
this.logger.error('Price monitoring failed:', { error: String(error) });
|
|
166
270
|
}
|
|
167
271
|
}, 30000);
|
|
168
272
|
}
|
|
@@ -175,9 +279,12 @@ class GridStrategy extends base_strategy_1.BaseStrategy {
|
|
|
175
279
|
await this.exchangeConnector.subscribeUserOrders((order) => {
|
|
176
280
|
this.onOrderUpdate(order);
|
|
177
281
|
});
|
|
282
|
+
if (!this.exchangeConnector.isUserDataStreamConnected()) {
|
|
283
|
+
throw new Error('Failed to establish user data stream connection');
|
|
284
|
+
}
|
|
178
285
|
}
|
|
179
286
|
catch (error) {
|
|
180
|
-
this.logger.error('Failed to setup order subscription:', { error });
|
|
287
|
+
this.logger.error('Failed to setup order subscription:', { error: String(error) });
|
|
181
288
|
}
|
|
182
289
|
}
|
|
183
290
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid-strategy.js","sourceRoot":"","sources":["../../../src/strategies/grid/grid-strategy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"grid-strategy.js","sourceRoot":"","sources":["../../../src/strategies/grid/grid-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export interface VolatilityTrackerConfig {
|
|
2
|
+
/** Number of price samples to keep in the rolling window (default: 10) */
|
|
3
|
+
windowSize: number;
|
|
4
|
+
/** Volatility below this threshold → multiplier stays at 1.0 (default: 0.02 = 2%) */
|
|
5
|
+
lowThreshold: number;
|
|
6
|
+
/** Volatility above this threshold → highest multiplier (default: 0.05 = 5%) */
|
|
7
|
+
highThreshold: number;
|
|
8
|
+
/** Multiplier applied when volatility is between low and high thresholds (default: 1.5) */
|
|
9
|
+
lowMultiplier: number;
|
|
10
|
+
/** Multiplier applied when volatility exceeds high threshold (default: 2.0) */
|
|
11
|
+
highMultiplier: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Tracks price volatility over a rolling window and maps it to a spread multiplier.
|
|
15
|
+
*
|
|
16
|
+
* Volatility is measured as (max - min) / average over the rolling buffer.
|
|
17
|
+
* The multiplier widens grid spacing during volatile periods and tightens it
|
|
18
|
+
* when the market calms down.
|
|
19
|
+
*
|
|
20
|
+
* Multiplier mapping:
|
|
21
|
+
* - volatility < lowThreshold → 1.0 (normal)
|
|
22
|
+
* - lowThreshold ≤ volatility < highThreshold → lowMultiplier (elevated)
|
|
23
|
+
* - volatility ≥ highThreshold → highMultiplier (high)
|
|
24
|
+
*/
|
|
25
|
+
export declare class VolatilityTracker {
|
|
26
|
+
private prices;
|
|
27
|
+
private lastAppliedMultiplier;
|
|
28
|
+
private config;
|
|
29
|
+
private logger;
|
|
30
|
+
constructor(config?: Partial<VolatilityTrackerConfig>);
|
|
31
|
+
/**
|
|
32
|
+
* Record a new price sample into the rolling buffer.
|
|
33
|
+
* Oldest samples are dropped when the buffer is full.
|
|
34
|
+
*/
|
|
35
|
+
recordPrice(price: number): void;
|
|
36
|
+
/**
|
|
37
|
+
* Calculate current volatility as (max - min) / average over the buffer.
|
|
38
|
+
* Returns 0 if fewer than 2 samples are available.
|
|
39
|
+
*/
|
|
40
|
+
getVolatility(): number;
|
|
41
|
+
/**
|
|
42
|
+
* Map the current volatility to a spread multiplier.
|
|
43
|
+
* - Below lowThreshold: 1.0 (normal spacing)
|
|
44
|
+
* - Between thresholds: lowMultiplier (elevated spacing)
|
|
45
|
+
* - Above highThreshold: highMultiplier (wide spacing)
|
|
46
|
+
*/
|
|
47
|
+
getMultiplier(): number;
|
|
48
|
+
/**
|
|
49
|
+
* Check if the multiplier has changed since it was last applied.
|
|
50
|
+
* If changed, updates the internal tracking so subsequent calls
|
|
51
|
+
* return false until the multiplier changes again.
|
|
52
|
+
*/
|
|
53
|
+
hasMultiplierChanged(): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Get the number of price samples currently in the buffer.
|
|
56
|
+
*/
|
|
57
|
+
getBufferSize(): number;
|
|
58
|
+
/**
|
|
59
|
+
* Get the current configuration.
|
|
60
|
+
*/
|
|
61
|
+
getConfig(): VolatilityTrackerConfig;
|
|
62
|
+
/**
|
|
63
|
+
* Reset the tracker, clearing all recorded prices.
|
|
64
|
+
*/
|
|
65
|
+
reset(): void;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=volatility-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volatility-tracker.d.ts","sourceRoot":"","sources":["../../../src/strategies/grid/volatility-tracker.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,aAAa,EAAE,MAAM,CAAC;IACtB,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;CACxB;AAUD;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,qBAAqB,CAAe;IAC5C,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,MAAM,CAAsC;gBAExC,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAIrD;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAOhC;;;OAGG;IACH,aAAa,IAAI,MAAM;IAgBvB;;;;;OAKG;IACH,aAAa,IAAI,MAAM;IAcvB;;;;OAIG;IACH,oBAAoB,IAAI,OAAO;IAa/B;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,SAAS,IAAI,uBAAuB;IAIpC;;OAEG;IACH,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VolatilityTracker = void 0;
|
|
4
|
+
const utils_1 = require("../../utils");
|
|
5
|
+
const DEFAULT_CONFIG = {
|
|
6
|
+
windowSize: 10,
|
|
7
|
+
lowThreshold: 0.02,
|
|
8
|
+
highThreshold: 0.05,
|
|
9
|
+
lowMultiplier: 1.5,
|
|
10
|
+
highMultiplier: 2.0,
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Tracks price volatility over a rolling window and maps it to a spread multiplier.
|
|
14
|
+
*
|
|
15
|
+
* Volatility is measured as (max - min) / average over the rolling buffer.
|
|
16
|
+
* The multiplier widens grid spacing during volatile periods and tightens it
|
|
17
|
+
* when the market calms down.
|
|
18
|
+
*
|
|
19
|
+
* Multiplier mapping:
|
|
20
|
+
* - volatility < lowThreshold → 1.0 (normal)
|
|
21
|
+
* - lowThreshold ≤ volatility < highThreshold → lowMultiplier (elevated)
|
|
22
|
+
* - volatility ≥ highThreshold → highMultiplier (high)
|
|
23
|
+
*/
|
|
24
|
+
class VolatilityTracker {
|
|
25
|
+
constructor(config) {
|
|
26
|
+
this.prices = [];
|
|
27
|
+
this.lastAppliedMultiplier = 1.0;
|
|
28
|
+
this.logger = (0, utils_1.createLogger)('volatility-tracker');
|
|
29
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Record a new price sample into the rolling buffer.
|
|
33
|
+
* Oldest samples are dropped when the buffer is full.
|
|
34
|
+
*/
|
|
35
|
+
recordPrice(price) {
|
|
36
|
+
this.prices.push(price);
|
|
37
|
+
if (this.prices.length > this.config.windowSize) {
|
|
38
|
+
this.prices.shift();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Calculate current volatility as (max - min) / average over the buffer.
|
|
43
|
+
* Returns 0 if fewer than 2 samples are available.
|
|
44
|
+
*/
|
|
45
|
+
getVolatility() {
|
|
46
|
+
if (this.prices.length < 2) {
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
const min = Math.min(...this.prices);
|
|
50
|
+
const max = Math.max(...this.prices);
|
|
51
|
+
const avg = this.prices.reduce((sum, p) => sum + p, 0) / this.prices.length;
|
|
52
|
+
if (avg === 0) {
|
|
53
|
+
return 0;
|
|
54
|
+
}
|
|
55
|
+
return (max - min) / avg;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Map the current volatility to a spread multiplier.
|
|
59
|
+
* - Below lowThreshold: 1.0 (normal spacing)
|
|
60
|
+
* - Between thresholds: lowMultiplier (elevated spacing)
|
|
61
|
+
* - Above highThreshold: highMultiplier (wide spacing)
|
|
62
|
+
*/
|
|
63
|
+
getMultiplier() {
|
|
64
|
+
const volatility = this.getVolatility();
|
|
65
|
+
if (volatility >= this.config.highThreshold) {
|
|
66
|
+
return this.config.highMultiplier;
|
|
67
|
+
}
|
|
68
|
+
if (volatility >= this.config.lowThreshold) {
|
|
69
|
+
return this.config.lowMultiplier;
|
|
70
|
+
}
|
|
71
|
+
return 1.0;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Check if the multiplier has changed since it was last applied.
|
|
75
|
+
* If changed, updates the internal tracking so subsequent calls
|
|
76
|
+
* return false until the multiplier changes again.
|
|
77
|
+
*/
|
|
78
|
+
hasMultiplierChanged() {
|
|
79
|
+
const current = this.getMultiplier();
|
|
80
|
+
if (current !== this.lastAppliedMultiplier) {
|
|
81
|
+
this.logger.info(`Volatility multiplier changed: ${this.lastAppliedMultiplier} → ${current} ` +
|
|
82
|
+
`(volatility: ${(this.getVolatility() * 100).toFixed(2)}%)`);
|
|
83
|
+
this.lastAppliedMultiplier = current;
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get the number of price samples currently in the buffer.
|
|
90
|
+
*/
|
|
91
|
+
getBufferSize() {
|
|
92
|
+
return this.prices.length;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the current configuration.
|
|
96
|
+
*/
|
|
97
|
+
getConfig() {
|
|
98
|
+
return { ...this.config };
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Reset the tracker, clearing all recorded prices.
|
|
102
|
+
*/
|
|
103
|
+
reset() {
|
|
104
|
+
this.prices = [];
|
|
105
|
+
this.lastAppliedMultiplier = 1.0;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
exports.VolatilityTracker = VolatilityTracker;
|
|
109
|
+
//# sourceMappingURL=volatility-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"volatility-tracker.js","sourceRoot":"","sources":["../../../src/strategies/grid/volatility-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../../src/tests/fixtures/test-helpers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;CAG3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../../src/tests/fixtures/test-helpers.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG;IAC7B,MAAM,EAAE,kBAAkB;IAC1B,SAAS,EAAE,qBAAqB;CACjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mexc-integration.test.d.ts","sourceRoot":"","sources":["../../../../../src/tests/integration/exchanges/mexc/mexc-integration.test.ts"],"names":[],"mappings":""}
|