@catalyst-team/poly-sdk 0.3.0 → 0.4.3
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 +133 -1
- package/README.zh-CN.md +2 -0
- package/dist/scripts/dip-arb/auto-trade.d.ts +20 -0
- package/dist/scripts/dip-arb/auto-trade.d.ts.map +1 -0
- package/dist/scripts/dip-arb/auto-trade.js +373 -0
- package/dist/scripts/dip-arb/auto-trade.js.map +1 -0
- package/dist/scripts/dip-arb/example-basic.d.ts +30 -0
- package/dist/scripts/dip-arb/example-basic.d.ts.map +1 -0
- package/dist/scripts/dip-arb/example-basic.js +222 -0
- package/dist/scripts/dip-arb/example-basic.js.map +1 -0
- package/dist/scripts/dip-arb/redeem-positions.d.ts +11 -0
- package/dist/scripts/dip-arb/redeem-positions.d.ts.map +1 -0
- package/dist/scripts/dip-arb/redeem-positions.js +201 -0
- package/dist/scripts/dip-arb/redeem-positions.js.map +1 -0
- package/dist/scripts/dip-arb/scan-markets.d.ts +6 -0
- package/dist/scripts/dip-arb/scan-markets.d.ts.map +1 -0
- package/dist/scripts/dip-arb/scan-markets.js +73 -0
- package/dist/scripts/dip-arb/scan-markets.js.map +1 -0
- package/dist/src/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/bridge-client.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/ctf-client.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
- package/dist/{__tests__ → src/__tests__}/integration/data-api.integration.test.js +21 -18
- package/dist/src/__tests__/integration/data-api.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/gamma-api.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
- package/dist/{__tests__ → src/__tests__}/integration/market-service.integration.test.js +7 -0
- package/dist/src/__tests__/integration/market-service.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
- package/dist/src/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
- package/dist/src/__tests__/integration/trading-service.integration.test.js.map +1 -0
- package/dist/src/__tests__/test-utils.d.ts.map +1 -0
- package/dist/src/__tests__/test-utils.js.map +1 -0
- package/dist/src/catalyst/catalyst-query-service.d.ts +109 -0
- package/dist/src/catalyst/catalyst-query-service.d.ts.map +1 -0
- package/dist/src/catalyst/catalyst-query-service.js +141 -0
- package/dist/src/catalyst/catalyst-query-service.js.map +1 -0
- package/dist/src/catalyst/catalyst-realtime-service.d.ts +40 -0
- package/dist/src/catalyst/catalyst-realtime-service.d.ts.map +1 -0
- package/dist/src/catalyst/catalyst-realtime-service.js +125 -0
- package/dist/src/catalyst/catalyst-realtime-service.js.map +1 -0
- package/dist/src/catalyst/index.d.ts +4 -0
- package/dist/src/catalyst/index.d.ts.map +1 -0
- package/dist/src/catalyst/index.js +4 -0
- package/dist/src/catalyst/index.js.map +1 -0
- package/dist/src/catalyst/types.d.ts +178 -0
- package/dist/src/catalyst/types.d.ts.map +1 -0
- package/dist/src/catalyst/types.js +2 -0
- package/dist/src/catalyst/types.js.map +1 -0
- package/dist/src/clients/bridge-client.d.ts.map +1 -0
- package/dist/src/clients/bridge-client.js.map +1 -0
- package/dist/{clients → src/clients}/ctf-client.d.ts +6 -4
- package/dist/src/clients/ctf-client.d.ts.map +1 -0
- package/dist/src/clients/ctf-client.js.map +1 -0
- package/dist/{clients → src/clients}/data-api.d.ts +94 -20
- package/dist/src/clients/data-api.d.ts.map +1 -0
- package/dist/{clients → src/clients}/data-api.js +119 -52
- package/dist/src/clients/data-api.js.map +1 -0
- package/dist/{clients → src/clients}/gamma-api.d.ts +74 -0
- package/dist/src/clients/gamma-api.d.ts.map +1 -0
- package/dist/{clients → src/clients}/gamma-api.js +7 -0
- package/dist/src/clients/gamma-api.js.map +1 -0
- package/dist/src/clients/subgraph.d.ts.map +1 -0
- package/dist/src/clients/subgraph.js.map +1 -0
- package/dist/src/core/cache-adapter-bridge.d.ts.map +1 -0
- package/dist/src/core/cache-adapter-bridge.js.map +1 -0
- package/dist/{core → src/core}/cache.d.ts +2 -0
- package/dist/src/core/cache.d.ts.map +1 -0
- package/dist/{core → src/core}/cache.js +4 -0
- package/dist/src/core/cache.js.map +1 -0
- package/dist/src/core/errors.d.ts.map +1 -0
- package/dist/src/core/errors.js.map +1 -0
- package/dist/{core → src/core}/rate-limiter.d.ts +2 -1
- package/dist/src/core/rate-limiter.d.ts.map +1 -0
- package/dist/{core → src/core}/rate-limiter.js +7 -0
- package/dist/src/core/rate-limiter.js.map +1 -0
- package/dist/{core → src/core}/types.d.ts +105 -1
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js +49 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/core/types.test.d.ts.map +1 -0
- package/dist/src/core/types.test.js.map +1 -0
- package/dist/src/core/unified-cache.d.ts.map +1 -0
- package/dist/src/core/unified-cache.js.map +1 -0
- package/dist/{index.d.ts → src/index.d.ts} +24 -5
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{index.js → src/index.js} +38 -4
- package/dist/src/index.js.map +1 -0
- package/dist/src/insider-scan/index.d.ts +3 -0
- package/dist/src/insider-scan/index.d.ts.map +1 -0
- package/dist/src/insider-scan/index.js +3 -0
- package/dist/src/insider-scan/index.js.map +1 -0
- package/dist/src/insider-scan/insider-scan-service.d.ts +63 -0
- package/dist/src/insider-scan/insider-scan-service.d.ts.map +1 -0
- package/dist/src/insider-scan/insider-scan-service.js +153 -0
- package/dist/src/insider-scan/insider-scan-service.js.map +1 -0
- package/dist/src/insider-scan/types.d.ts +205 -0
- package/dist/src/insider-scan/types.d.ts.map +1 -0
- package/dist/src/insider-scan/types.js +7 -0
- package/dist/src/insider-scan/types.js.map +1 -0
- package/dist/src/services/arbitrage-service.d.ts.map +1 -0
- package/dist/{services → src/services}/arbitrage-service.js +14 -4
- package/dist/src/services/arbitrage-service.js.map +1 -0
- package/dist/src/services/authorization-service.d.ts.map +1 -0
- package/dist/src/services/authorization-service.js.map +1 -0
- package/dist/src/services/binance-service.d.ts +154 -0
- package/dist/src/services/binance-service.d.ts.map +1 -0
- package/dist/src/services/binance-service.js +266 -0
- package/dist/src/services/binance-service.js.map +1 -0
- package/dist/src/services/dip-arb-service.d.ts +245 -0
- package/dist/src/services/dip-arb-service.d.ts.map +1 -0
- package/dist/src/services/dip-arb-service.js +1865 -0
- package/dist/src/services/dip-arb-service.js.map +1 -0
- package/dist/src/services/dip-arb-types.d.ts +553 -0
- package/dist/src/services/dip-arb-types.d.ts.map +1 -0
- package/dist/src/services/dip-arb-types.js +164 -0
- package/dist/src/services/dip-arb-types.js.map +1 -0
- package/dist/src/services/market-service.d.ts +431 -0
- package/dist/src/services/market-service.d.ts.map +1 -0
- package/dist/{services → src/services}/market-service.js +501 -17
- package/dist/src/services/market-service.js.map +1 -0
- package/dist/{services → src/services}/onchain-service.d.ts +10 -2
- package/dist/src/services/onchain-service.d.ts.map +1 -0
- package/dist/{services → src/services}/onchain-service.js +8 -0
- package/dist/src/services/onchain-service.js.map +1 -0
- package/dist/{services → src/services}/realtime-service-v2.d.ts +6 -0
- package/dist/src/services/realtime-service-v2.d.ts.map +1 -0
- package/dist/{services → src/services}/realtime-service-v2.js +44 -8
- package/dist/src/services/realtime-service-v2.js.map +1 -0
- package/dist/src/services/smart-money-service.d.ts +769 -0
- package/dist/src/services/smart-money-service.d.ts.map +1 -0
- package/dist/src/services/smart-money-service.js +1448 -0
- package/dist/src/services/smart-money-service.js.map +1 -0
- package/dist/src/services/swap-service.d.ts.map +1 -0
- package/dist/src/services/swap-service.js.map +1 -0
- package/dist/{services → src/services}/trading-service.d.ts +26 -0
- package/dist/src/services/trading-service.d.ts.map +1 -0
- package/dist/{services → src/services}/trading-service.js +72 -1
- package/dist/src/services/trading-service.js.map +1 -0
- package/dist/{services → src/services}/wallet-service.d.ts +81 -4
- package/dist/src/services/wallet-service.d.ts.map +1 -0
- package/dist/{services → src/services}/wallet-service.js +126 -8
- package/dist/src/services/wallet-service.js.map +1 -0
- package/dist/src/signal/index.d.ts +8 -0
- package/dist/src/signal/index.d.ts.map +1 -0
- package/dist/src/signal/index.js +7 -0
- package/dist/src/signal/index.js.map +1 -0
- package/dist/src/signal/signal-service.d.ts +89 -0
- package/dist/src/signal/signal-service.d.ts.map +1 -0
- package/dist/src/signal/signal-service.js +226 -0
- package/dist/src/signal/signal-service.js.map +1 -0
- package/dist/src/signal/types.d.ts +280 -0
- package/dist/src/signal/types.d.ts.map +1 -0
- package/dist/src/signal/types.js +7 -0
- package/dist/src/signal/types.js.map +1 -0
- package/dist/src/utils/price-utils.d.ts.map +1 -0
- package/dist/src/utils/price-utils.js.map +1 -0
- package/dist/src/utils/price-utils.test.d.ts.map +1 -0
- package/dist/src/utils/price-utils.test.js.map +1 -0
- package/dist/src/wallet-report/index.d.ts +3 -0
- package/dist/src/wallet-report/index.d.ts.map +1 -0
- package/dist/src/wallet-report/index.js +3 -0
- package/dist/src/wallet-report/index.js.map +1 -0
- package/dist/src/wallet-report/types.d.ts +187 -0
- package/dist/src/wallet-report/types.d.ts.map +1 -0
- package/dist/src/wallet-report/types.js +7 -0
- package/dist/src/wallet-report/types.js.map +1 -0
- package/dist/src/wallet-report/wallet-report-service.d.ts +91 -0
- package/dist/src/wallet-report/wallet-report-service.d.ts.map +1 -0
- package/dist/src/wallet-report/wallet-report-service.js +208 -0
- package/dist/src/wallet-report/wallet-report-service.js.map +1 -0
- package/dist/src/wallets/hot-wallet-service.d.ts +162 -0
- package/dist/src/wallets/hot-wallet-service.d.ts.map +1 -0
- package/dist/src/wallets/hot-wallet-service.js +251 -0
- package/dist/src/wallets/hot-wallet-service.js.map +1 -0
- package/dist/src/wallets/index.d.ts +15 -0
- package/dist/src/wallets/index.d.ts.map +1 -0
- package/dist/src/wallets/index.js +26 -0
- package/dist/src/wallets/index.js.map +1 -0
- package/package.json +7 -7
- package/dist/__tests__/clob-api.test.d.ts +0 -5
- package/dist/__tests__/clob-api.test.d.ts.map +0 -1
- package/dist/__tests__/clob-api.test.js +0 -240
- package/dist/__tests__/clob-api.test.js.map +0 -1
- package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/arbitrage-service.integration.test.js.map +0 -1
- package/dist/__tests__/integration/bridge-client.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/bridge-client.integration.test.js.map +0 -1
- package/dist/__tests__/integration/clob-api.integration.test.d.ts +0 -13
- package/dist/__tests__/integration/clob-api.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/clob-api.integration.test.js +0 -170
- package/dist/__tests__/integration/clob-api.integration.test.js.map +0 -1
- package/dist/__tests__/integration/ctf-client.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/ctf-client.integration.test.js.map +0 -1
- package/dist/__tests__/integration/data-api.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/data-api.integration.test.js.map +0 -1
- package/dist/__tests__/integration/gamma-api.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/gamma-api.integration.test.js.map +0 -1
- package/dist/__tests__/integration/market-service.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/market-service.integration.test.js.map +0 -1
- package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/realtime-service-v2.integration.test.js.map +0 -1
- package/dist/__tests__/integration/trading-service.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/trading-service.integration.test.js.map +0 -1
- package/dist/__tests__/test-utils.d.ts.map +0 -1
- package/dist/__tests__/test-utils.js.map +0 -1
- package/dist/clients/bridge-client.d.ts.map +0 -1
- package/dist/clients/bridge-client.js.map +0 -1
- package/dist/clients/clob-api.d.ts +0 -391
- package/dist/clients/clob-api.d.ts.map +0 -1
- package/dist/clients/clob-api.js +0 -448
- package/dist/clients/clob-api.js.map +0 -1
- package/dist/clients/ctf-client.d.ts.map +0 -1
- package/dist/clients/ctf-client.js.map +0 -1
- package/dist/clients/data-api.d.ts.map +0 -1
- package/dist/clients/data-api.js.map +0 -1
- package/dist/clients/gamma-api.d.ts.map +0 -1
- package/dist/clients/gamma-api.js.map +0 -1
- package/dist/clients/subgraph.d.ts.map +0 -1
- package/dist/clients/subgraph.js.map +0 -1
- package/dist/clients/trading-client.d.ts +0 -252
- package/dist/clients/trading-client.d.ts.map +0 -1
- package/dist/clients/trading-client.js +0 -543
- package/dist/clients/trading-client.js.map +0 -1
- package/dist/clients/websocket-manager.d.ts +0 -103
- package/dist/clients/websocket-manager.d.ts.map +0 -1
- package/dist/clients/websocket-manager.js +0 -200
- package/dist/clients/websocket-manager.js.map +0 -1
- package/dist/core/cache-adapter-bridge.d.ts.map +0 -1
- package/dist/core/cache-adapter-bridge.js.map +0 -1
- package/dist/core/cache.d.ts.map +0 -1
- package/dist/core/cache.js.map +0 -1
- package/dist/core/errors.d.ts.map +0 -1
- package/dist/core/errors.js.map +0 -1
- package/dist/core/rate-limiter.d.ts.map +0 -1
- package/dist/core/rate-limiter.js.map +0 -1
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -19
- package/dist/core/types.js.map +0 -1
- package/dist/core/types.test.d.ts.map +0 -1
- package/dist/core/types.test.js.map +0 -1
- package/dist/core/unified-cache.d.ts.map +0 -1
- package/dist/core/unified-cache.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/services/arbitrage-service.d.ts.map +0 -1
- package/dist/services/arbitrage-service.js.map +0 -1
- package/dist/services/authorization-service.d.ts.map +0 -1
- package/dist/services/authorization-service.js.map +0 -1
- package/dist/services/market-service.d.ts +0 -208
- package/dist/services/market-service.d.ts.map +0 -1
- package/dist/services/market-service.js.map +0 -1
- package/dist/services/onchain-service.d.ts.map +0 -1
- package/dist/services/onchain-service.js.map +0 -1
- package/dist/services/realtime-service-v2.d.ts.map +0 -1
- package/dist/services/realtime-service-v2.js.map +0 -1
- package/dist/services/realtime-service.d.ts +0 -82
- package/dist/services/realtime-service.d.ts.map +0 -1
- package/dist/services/realtime-service.js +0 -182
- package/dist/services/realtime-service.js.map +0 -1
- package/dist/services/smart-money-service.d.ts +0 -196
- package/dist/services/smart-money-service.d.ts.map +0 -1
- package/dist/services/smart-money-service.js +0 -358
- package/dist/services/smart-money-service.js.map +0 -1
- package/dist/services/swap-service.d.ts.map +0 -1
- package/dist/services/swap-service.js.map +0 -1
- package/dist/services/trading-service.d.ts.map +0 -1
- package/dist/services/trading-service.js.map +0 -1
- package/dist/services/wallet-service.d.ts.map +0 -1
- package/dist/services/wallet-service.js.map +0 -1
- package/dist/utils/price-utils.d.ts.map +0 -1
- package/dist/utils/price-utils.js.map +0 -1
- package/dist/utils/price-utils.test.d.ts.map +0 -1
- package/dist/utils/price-utils.test.js.map +0 -1
- /package/dist/{__tests__ → src/__tests__}/integration/arbitrage-service.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/arbitrage-service.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/bridge-client.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/bridge-client.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/ctf-client.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/ctf-client.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/data-api.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/gamma-api.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/gamma-api.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/market-service.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/realtime-service-v2.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/realtime-service-v2.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/trading-service.integration.test.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/integration/trading-service.integration.test.js +0 -0
- /package/dist/{__tests__ → src/__tests__}/test-utils.d.ts +0 -0
- /package/dist/{__tests__ → src/__tests__}/test-utils.js +0 -0
- /package/dist/{clients → src/clients}/bridge-client.d.ts +0 -0
- /package/dist/{clients → src/clients}/bridge-client.js +0 -0
- /package/dist/{clients → src/clients}/ctf-client.js +0 -0
- /package/dist/{clients → src/clients}/subgraph.d.ts +0 -0
- /package/dist/{clients → src/clients}/subgraph.js +0 -0
- /package/dist/{core → src/core}/cache-adapter-bridge.d.ts +0 -0
- /package/dist/{core → src/core}/cache-adapter-bridge.js +0 -0
- /package/dist/{core → src/core}/errors.d.ts +0 -0
- /package/dist/{core → src/core}/errors.js +0 -0
- /package/dist/{core → src/core}/types.test.d.ts +0 -0
- /package/dist/{core → src/core}/types.test.js +0 -0
- /package/dist/{core → src/core}/unified-cache.d.ts +0 -0
- /package/dist/{core → src/core}/unified-cache.js +0 -0
- /package/dist/{services → src/services}/arbitrage-service.d.ts +0 -0
- /package/dist/{services → src/services}/authorization-service.d.ts +0 -0
- /package/dist/{services → src/services}/authorization-service.js +0 -0
- /package/dist/{services → src/services}/swap-service.d.ts +0 -0
- /package/dist/{services → src/services}/swap-service.js +0 -0
- /package/dist/{utils → src/utils}/price-utils.d.ts +0 -0
- /package/dist/{utils → src/utils}/price-utils.js +0 -0
- /package/dist/{utils → src/utils}/price-utils.test.d.ts +0 -0
- /package/dist/{utils → src/utils}/price-utils.test.js +0 -0
package/README.md
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
**Builder**: [@hhhx402](https://x.com/hhhx402) | **Project**: [Catalyst.fun](https://x.com/catalystdotfun)
|
|
9
9
|
|
|
10
|
+
☕ **Buy Me a Coffee (Polygon):** `0x58d2ff253998bc2f3b8f5bdbe9c52cad7b022739`
|
|
11
|
+
|
|
10
12
|
[中文文档](README.zh-CN.md)
|
|
11
13
|
|
|
12
14
|
---
|
|
@@ -26,6 +28,7 @@
|
|
|
26
28
|
- [WalletService](#walletservice)
|
|
27
29
|
- [SmartMoneyService](#smartmoneyservice)
|
|
28
30
|
- [ArbitrageService](#arbitrageservice)
|
|
31
|
+
- [DipArbService](#diparbservice)
|
|
29
32
|
- [Low-Level Clients](#low-level-clients)
|
|
30
33
|
- [Breaking Changes (v0.3.0)](#breaking-changes-v030)
|
|
31
34
|
- [Examples](#examples)
|
|
@@ -110,6 +113,12 @@ poly-sdk Architecture
|
|
|
110
113
|
│ │ • Market scanning • Auto execution • Rebalancer • Smart clearing │ │
|
|
111
114
|
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
|
112
115
|
│ │
|
|
116
|
+
│ ┌─────────────────────────────────────────────────────────────────────────┐ │
|
|
117
|
+
│ │ DipArbService │ │
|
|
118
|
+
│ │ ───────────────────────────────────────────────────────────────────── │ │
|
|
119
|
+
│ │ • 15m crypto UP/DOWN • Dip detection • Auto-rotate • Background redeem│
|
|
120
|
+
│ └─────────────────────────────────────────────────────────────────────────┘ │
|
|
121
|
+
│ │
|
|
113
122
|
├──────────────────────────────────────────────────────────────────────────────┤
|
|
114
123
|
│ │
|
|
115
124
|
│ Layer 2: Low-Level Clients (Advanced Users / Raw API Access) │
|
|
@@ -152,6 +161,7 @@ poly-sdk Architecture
|
|
|
152
161
|
| **WalletService** | Wallet/trader analysis |
|
|
153
162
|
| **SmartMoneyService** | Smart money tracking |
|
|
154
163
|
| **ArbitrageService** | Arbitrage detection & execution |
|
|
164
|
+
| **DipArbService** | Dip arbitrage for 15m crypto markets |
|
|
155
165
|
|
|
156
166
|
---
|
|
157
167
|
|
|
@@ -247,6 +257,7 @@ sdk.markets // Market data
|
|
|
247
257
|
sdk.wallets // Wallet analysis
|
|
248
258
|
sdk.realtime // WebSocket real-time data
|
|
249
259
|
sdk.smartMoney // Smart money tracking & copy trading
|
|
260
|
+
sdk.dipArb // Dip arbitrage for 15m crypto markets
|
|
250
261
|
sdk.dataApi // Direct Data API access
|
|
251
262
|
sdk.gammaApi // Direct Gamma API access
|
|
252
263
|
sdk.subgraph // On-chain data via Goldsky
|
|
@@ -266,8 +277,13 @@ sdk.stop(); // Disconnect all services
|
|
|
266
277
|
|
|
267
278
|
Order management using `@polymarket/clob-client`.
|
|
268
279
|
|
|
280
|
+
**Important: Polymarket Order Minimums**
|
|
281
|
+
- **Minimum order size**: 5 shares (`MIN_ORDER_SIZE_SHARES`)
|
|
282
|
+
- **Minimum order value**: $1 USDC (`MIN_ORDER_VALUE_USDC`)
|
|
283
|
+
- Orders below these limits are validated and rejected before sending to API
|
|
284
|
+
|
|
269
285
|
```typescript
|
|
270
|
-
import { TradingService } from '@catalyst-team/poly-sdk';
|
|
286
|
+
import { TradingService, MIN_ORDER_SIZE_SHARES, MIN_ORDER_VALUE_USDC } from '@catalyst-team/poly-sdk';
|
|
271
287
|
|
|
272
288
|
const trading = new TradingService(rateLimiter, cache, {
|
|
273
289
|
privateKey: process.env.POLYMARKET_PRIVATE_KEY!,
|
|
@@ -639,6 +655,107 @@ console.log(`Recovered: $${clearResult.totalUsdcRecovered.toFixed(2)}`);
|
|
|
639
655
|
|
|
640
656
|
---
|
|
641
657
|
|
|
658
|
+
### DipArbService
|
|
659
|
+
|
|
660
|
+
**Dip Arbitrage** for Polymarket 15-minute crypto UP/DOWN markets (BTC, ETH, SOL, XRP).
|
|
661
|
+
|
|
662
|
+
**Strategy**: Detect sudden price dips → Buy dipped side (Leg1) → Wait for opposite to drop → Buy opposite (Leg2) → Lock profit (UP + DOWN = $1)
|
|
663
|
+
|
|
664
|
+
#### Quick Start
|
|
665
|
+
|
|
666
|
+
```bash
|
|
667
|
+
# One command to start auto trading
|
|
668
|
+
PRIVATE_KEY=0x... npx tsx scripts/dip-arb/auto-trade.ts
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
#### Features
|
|
672
|
+
|
|
673
|
+
| Feature | Description |
|
|
674
|
+
|---------|-------------|
|
|
675
|
+
| **Dip Detection** | Detects 15%+ price drops within 10s sliding window |
|
|
676
|
+
| **Two-Leg Execution** | Leg1 (buy dip) + Leg2 (buy opposite when cost < target) |
|
|
677
|
+
| **Auto-Rotate** | Automatically switches to next market when current ends |
|
|
678
|
+
| **Background Redeem** | Waits for Oracle resolution (~5min) then redeems winning positions |
|
|
679
|
+
| **WebSocket Reconnect** | Auto re-subscribes on disconnect |
|
|
680
|
+
|
|
681
|
+
#### Programmatic Usage
|
|
682
|
+
|
|
683
|
+
```typescript
|
|
684
|
+
import { PolymarketSDK } from '@catalyst-team/poly-sdk';
|
|
685
|
+
|
|
686
|
+
const sdk = new PolymarketSDK({ privateKey: '0x...' });
|
|
687
|
+
|
|
688
|
+
// Configure strategy
|
|
689
|
+
sdk.dipArb.updateConfig({
|
|
690
|
+
shares: 10, // Shares per trade
|
|
691
|
+
sumTarget: 0.9, // Leg2 triggers when cost ≤ 0.9 (11% profit)
|
|
692
|
+
dipThreshold: 0.15, // 15% dip triggers Leg1
|
|
693
|
+
windowMinutes: 14, // Trade window after round start
|
|
694
|
+
autoExecute: true, // Auto-execute signals
|
|
695
|
+
});
|
|
696
|
+
|
|
697
|
+
// Listen to events
|
|
698
|
+
sdk.dipArb.on('signal', (signal) => {
|
|
699
|
+
console.log(`${signal.type}: ${signal.side} @ ${signal.price}`);
|
|
700
|
+
});
|
|
701
|
+
|
|
702
|
+
sdk.dipArb.on('execution', (result) => {
|
|
703
|
+
console.log(`${result.leg} ${result.success ? '✅' : '❌'}`);
|
|
704
|
+
});
|
|
705
|
+
|
|
706
|
+
sdk.dipArb.on('roundComplete', (result) => {
|
|
707
|
+
console.log(`Profit: $${result.profit?.toFixed(2)}`);
|
|
708
|
+
});
|
|
709
|
+
|
|
710
|
+
// Find and start monitoring
|
|
711
|
+
const market = await sdk.dipArb.findAndStart({
|
|
712
|
+
coin: 'ETH',
|
|
713
|
+
preferDuration: '15m',
|
|
714
|
+
});
|
|
715
|
+
|
|
716
|
+
// Enable auto-rotate with redemption
|
|
717
|
+
sdk.dipArb.enableAutoRotate({
|
|
718
|
+
enabled: true,
|
|
719
|
+
underlyings: ['ETH'],
|
|
720
|
+
duration: '15m',
|
|
721
|
+
settleStrategy: 'redeem',
|
|
722
|
+
redeemWaitMinutes: 5,
|
|
723
|
+
});
|
|
724
|
+
|
|
725
|
+
// Get stats
|
|
726
|
+
const stats = sdk.dipArb.getStats();
|
|
727
|
+
console.log(`Signals: ${stats.signalsDetected}, L1: ${stats.leg1Filled}, L2: ${stats.leg2Filled}`);
|
|
728
|
+
|
|
729
|
+
// Cleanup
|
|
730
|
+
await sdk.dipArb.stop();
|
|
731
|
+
sdk.stop();
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
#### Events
|
|
735
|
+
|
|
736
|
+
| Event | Data | Description |
|
|
737
|
+
|-------|------|-------------|
|
|
738
|
+
| `started` | `DipArbMarketConfig` | Started monitoring market |
|
|
739
|
+
| `stopped` | - | Stopped monitoring |
|
|
740
|
+
| `newRound` | `{ roundId, upOpen, downOpen }` | New trading round |
|
|
741
|
+
| `signal` | `DipArbSignalEvent` | Leg1/Leg2 signal detected |
|
|
742
|
+
| `execution` | `DipArbExecutionResult` | Trade execution result |
|
|
743
|
+
| `roundComplete` | `{ profit, profitRate }` | Round finished |
|
|
744
|
+
| `rotate` | `{ reason, newMarket }` | Switched to new market |
|
|
745
|
+
| `settled` | `{ success, amountReceived }` | Position redeemed |
|
|
746
|
+
|
|
747
|
+
#### Scripts
|
|
748
|
+
|
|
749
|
+
```bash
|
|
750
|
+
# Auto trading (monitors + trades)
|
|
751
|
+
PRIVATE_KEY=0x... npx tsx scripts/dip-arb/auto-trade.ts
|
|
752
|
+
|
|
753
|
+
# Redeem ended positions
|
|
754
|
+
PRIVATE_KEY=0x... npx tsx scripts/dip-arb/redeem-positions.ts
|
|
755
|
+
```
|
|
756
|
+
|
|
757
|
+
---
|
|
758
|
+
|
|
642
759
|
## Low-Level Clients
|
|
643
760
|
|
|
644
761
|
For advanced users who need direct API access:
|
|
@@ -736,6 +853,13 @@ pnpm example:arb-service # Arbitrage service
|
|
|
736
853
|
| [11-live-arbitrage-scan.ts](examples/11-live-arbitrage-scan.ts) | Scan markets for opportunities |
|
|
737
854
|
| [12-trending-arb-monitor.ts](examples/12-trending-arb-monitor.ts) | Real-time trending monitor |
|
|
738
855
|
| [13-arbitrage-service.ts](examples/13-arbitrage-service.ts) | Full arbitrage workflow |
|
|
856
|
+
| [14-dip-arb-service.ts](examples/14-dip-arb-service.ts) | Dip arbitrage for 15m crypto |
|
|
857
|
+
|
|
858
|
+
**DipArb Scripts** (in `scripts/dip-arb/`):
|
|
859
|
+
| Script | Description |
|
|
860
|
+
|--------|-------------|
|
|
861
|
+
| [auto-trade.ts](scripts/dip-arb/auto-trade.ts) | One-click auto trading with rotation |
|
|
862
|
+
| [redeem-positions.ts](scripts/dip-arb/redeem-positions.ts) | Redeem ended market positions |
|
|
739
863
|
|
|
740
864
|
---
|
|
741
865
|
|
|
@@ -798,6 +922,14 @@ import type {
|
|
|
798
922
|
ArbitrageServiceConfig,
|
|
799
923
|
ScanResult,
|
|
800
924
|
ClearPositionResult,
|
|
925
|
+
|
|
926
|
+
// DipArb
|
|
927
|
+
DipArbServiceConfig,
|
|
928
|
+
DipArbMarketConfig,
|
|
929
|
+
DipArbSignalEvent,
|
|
930
|
+
DipArbExecutionResult,
|
|
931
|
+
DipArbRoundState,
|
|
932
|
+
DipArbStats,
|
|
801
933
|
} from '@catalyst-team/poly-sdk';
|
|
802
934
|
```
|
|
803
935
|
|
package/README.zh-CN.md
CHANGED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* DipArb Auto Trading - 15m Crypto Markets
|
|
4
|
+
*
|
|
5
|
+
* 策略原理:
|
|
6
|
+
* 1. 检测 10 秒内 5% 以上的瞬时暴跌
|
|
7
|
+
* 2. 买入暴跌侧 (Leg1)
|
|
8
|
+
* 3. 等待对侧价格下降,满足 sumTarget 后买入 (Leg2)
|
|
9
|
+
* 4. 双持仓锁定利润:UP + DOWN = $1
|
|
10
|
+
*
|
|
11
|
+
* 日志:每个市场单独一个日志文件,存放在 /tmp/dip-arb-logs/
|
|
12
|
+
*
|
|
13
|
+
* Run with:
|
|
14
|
+
* npx tsx scripts/dip-arb/auto-trade.ts --eth
|
|
15
|
+
* npx tsx scripts/dip-arb/auto-trade.ts --btc
|
|
16
|
+
* npx tsx scripts/dip-arb/auto-trade.ts --sol
|
|
17
|
+
* npx tsx scripts/dip-arb/auto-trade.ts --xrp
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=auto-trade.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-trade.d.ts","sourceRoot":"","sources":["../../../scripts/dip-arb/auto-trade.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* DipArb Auto Trading - 15m Crypto Markets
|
|
4
|
+
*
|
|
5
|
+
* 策略原理:
|
|
6
|
+
* 1. 检测 10 秒内 5% 以上的瞬时暴跌
|
|
7
|
+
* 2. 买入暴跌侧 (Leg1)
|
|
8
|
+
* 3. 等待对侧价格下降,满足 sumTarget 后买入 (Leg2)
|
|
9
|
+
* 4. 双持仓锁定利润:UP + DOWN = $1
|
|
10
|
+
*
|
|
11
|
+
* 日志:每个市场单独一个日志文件,存放在 /tmp/dip-arb-logs/
|
|
12
|
+
*
|
|
13
|
+
* Run with:
|
|
14
|
+
* npx tsx scripts/dip-arb/auto-trade.ts --eth
|
|
15
|
+
* npx tsx scripts/dip-arb/auto-trade.ts --btc
|
|
16
|
+
* npx tsx scripts/dip-arb/auto-trade.ts --sol
|
|
17
|
+
* npx tsx scripts/dip-arb/auto-trade.ts --xrp
|
|
18
|
+
*/
|
|
19
|
+
import * as fs from 'fs';
|
|
20
|
+
import * as path from 'path';
|
|
21
|
+
import { PolymarketSDK } from '../../src/index.js';
|
|
22
|
+
function parseArgs() {
|
|
23
|
+
const args = process.argv.slice(2);
|
|
24
|
+
// 解析币种
|
|
25
|
+
let coin = 'ETH';
|
|
26
|
+
if (args.includes('--btc') || args.includes('-b'))
|
|
27
|
+
coin = 'BTC';
|
|
28
|
+
else if (args.includes('--eth') || args.includes('-e'))
|
|
29
|
+
coin = 'ETH';
|
|
30
|
+
else if (args.includes('--sol') || args.includes('-s'))
|
|
31
|
+
coin = 'SOL';
|
|
32
|
+
else if (args.includes('--xrp') || args.includes('-x'))
|
|
33
|
+
coin = 'XRP';
|
|
34
|
+
// 解析数值参数
|
|
35
|
+
const getArgValue = (name, defaultVal) => {
|
|
36
|
+
const arg = args.find(a => a.startsWith(`--${name}=`));
|
|
37
|
+
if (arg) {
|
|
38
|
+
const val = parseFloat(arg.split('=')[1]);
|
|
39
|
+
return isNaN(val) ? defaultVal : val;
|
|
40
|
+
}
|
|
41
|
+
return defaultVal;
|
|
42
|
+
};
|
|
43
|
+
// 币种默认参数
|
|
44
|
+
const coinDefaults = {
|
|
45
|
+
XRP: { dipThreshold: 0.40, slidingWindowMs: 3000, leg2TimeoutSeconds: 60, sumTarget: 0.85 },
|
|
46
|
+
SOL: { dipThreshold: 0.40, slidingWindowMs: 3000, leg2TimeoutSeconds: 60, sumTarget: 0.85 },
|
|
47
|
+
ETH: { dipThreshold: 0.30, slidingWindowMs: 5000, leg2TimeoutSeconds: 60, sumTarget: 0.93 },
|
|
48
|
+
BTC: { dipThreshold: 0.20, slidingWindowMs: 5000, leg2TimeoutSeconds: 60, sumTarget: 0.95 },
|
|
49
|
+
};
|
|
50
|
+
const defaults = coinDefaults[coin];
|
|
51
|
+
return {
|
|
52
|
+
coin,
|
|
53
|
+
dipThreshold: getArgValue('dip', defaults.dipThreshold),
|
|
54
|
+
slidingWindowMs: getArgValue('window', defaults.slidingWindowMs),
|
|
55
|
+
leg2TimeoutSeconds: getArgValue('timeout', defaults.leg2TimeoutSeconds),
|
|
56
|
+
sumTarget: getArgValue('target', defaults.sumTarget),
|
|
57
|
+
shares: getArgValue('shares', 25),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const CLI_ARGS = parseArgs();
|
|
61
|
+
const SELECTED_COIN = CLI_ARGS.coin;
|
|
62
|
+
// Config
|
|
63
|
+
const PRIVATE_KEY = process.env.PRIVATE_KEY || '';
|
|
64
|
+
const MONITOR_DURATION_MS = 60 * 60 * 1000; // 1 hour
|
|
65
|
+
const LOG_DIR = '/tmp/dip-arb-logs';
|
|
66
|
+
if (!PRIVATE_KEY) {
|
|
67
|
+
console.error('Error: PRIVATE_KEY environment variable is required');
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
// Ensure log directory exists
|
|
71
|
+
if (!fs.existsSync(LOG_DIR)) {
|
|
72
|
+
fs.mkdirSync(LOG_DIR, { recursive: true });
|
|
73
|
+
}
|
|
74
|
+
// ========================================
|
|
75
|
+
// Per-Market Logging
|
|
76
|
+
// ========================================
|
|
77
|
+
let currentMarketSlug = null;
|
|
78
|
+
let currentLogs = [];
|
|
79
|
+
let currentLogPath = null;
|
|
80
|
+
function getLogFilename(marketSlug) {
|
|
81
|
+
const date = new Date().toISOString().slice(0, 10); // YYYY-MM-DD
|
|
82
|
+
const time = new Date().toISOString().slice(11, 19).replace(/:/g, ''); // HHMMSS
|
|
83
|
+
return path.join(LOG_DIR, `${date}_${time}_${marketSlug}.log`);
|
|
84
|
+
}
|
|
85
|
+
function log(msg) {
|
|
86
|
+
const timestamp = new Date().toISOString().slice(11, 19);
|
|
87
|
+
const line = `[${timestamp}] ${msg}`;
|
|
88
|
+
console.log(line);
|
|
89
|
+
currentLogs.push(line);
|
|
90
|
+
}
|
|
91
|
+
function sdkLogHandler(message) {
|
|
92
|
+
const timestamp = new Date().toISOString().slice(11, 19);
|
|
93
|
+
const line = `[${timestamp}] ${message}`;
|
|
94
|
+
console.log(line);
|
|
95
|
+
currentLogs.push(line);
|
|
96
|
+
}
|
|
97
|
+
function saveCurrentLog(suffix) {
|
|
98
|
+
if (currentLogs.length === 0)
|
|
99
|
+
return;
|
|
100
|
+
const logPath = currentLogPath || path.join(LOG_DIR, `unknown_${Date.now()}.log`);
|
|
101
|
+
const finalPath = suffix ? logPath.replace('.log', `_${suffix}.log`) : logPath;
|
|
102
|
+
fs.writeFileSync(finalPath, currentLogs.join('\n'));
|
|
103
|
+
console.log(`📁 Log saved: ${finalPath} (${currentLogs.length} lines)`);
|
|
104
|
+
}
|
|
105
|
+
function startNewMarketLog(marketSlug) {
|
|
106
|
+
// Save previous market log if exists
|
|
107
|
+
if (currentLogs.length > 0 && currentMarketSlug) {
|
|
108
|
+
saveCurrentLog();
|
|
109
|
+
}
|
|
110
|
+
// Start new log
|
|
111
|
+
currentMarketSlug = marketSlug;
|
|
112
|
+
currentLogs = [];
|
|
113
|
+
currentLogPath = getLogFilename(marketSlug);
|
|
114
|
+
log(`📝 New log file: ${currentLogPath}`);
|
|
115
|
+
}
|
|
116
|
+
// ========================================
|
|
117
|
+
// Main
|
|
118
|
+
// ========================================
|
|
119
|
+
async function main() {
|
|
120
|
+
// ========================================
|
|
121
|
+
// Configuration
|
|
122
|
+
// ========================================
|
|
123
|
+
const config = {
|
|
124
|
+
// 交易参数 (支持命令行覆盖)
|
|
125
|
+
shares: CLI_ARGS.shares, // --shares=25
|
|
126
|
+
sumTarget: CLI_ARGS.sumTarget, // --target=0.95
|
|
127
|
+
// 订单拆分参数
|
|
128
|
+
splitOrders: 1, // 单笔下单,避免份额不匹配
|
|
129
|
+
orderIntervalMs: 500, // 订单间隔 500ms (仅在 splitOrders > 1 时使用)
|
|
130
|
+
// 信号检测参数 (支持命令行覆盖)
|
|
131
|
+
slidingWindowMs: CLI_ARGS.slidingWindowMs, // --window=10000 (毫秒)
|
|
132
|
+
dipThreshold: CLI_ARGS.dipThreshold, // --dip=0.30 (30%)
|
|
133
|
+
windowMinutes: 14, // 轮次开始后 14 分钟内可交易
|
|
134
|
+
// 执行参数
|
|
135
|
+
maxSlippage: 0.02, // 2% 滑点
|
|
136
|
+
autoExecute: true, // 自动执行
|
|
137
|
+
executionCooldown: 500, // 冷却时间 500ms
|
|
138
|
+
// 其他
|
|
139
|
+
enableSurge: false, // 禁用暴涨检测
|
|
140
|
+
autoMerge: true, // 自动 merge
|
|
141
|
+
leg2TimeoutSeconds: CLI_ARGS.leg2TimeoutSeconds, // --timeout=60 (秒)
|
|
142
|
+
debug: true, // 调试日志
|
|
143
|
+
// 日志处理器 - 将 SDK 日志也写入当前 market 的 logs 数组
|
|
144
|
+
logHandler: sdkLogHandler,
|
|
145
|
+
};
|
|
146
|
+
// 计算预期利润率
|
|
147
|
+
const expectedProfit = ((1 - config.sumTarget) / config.sumTarget * 100).toFixed(1);
|
|
148
|
+
// Start initial log
|
|
149
|
+
startNewMarketLog('init');
|
|
150
|
+
log('');
|
|
151
|
+
log('╔══════════════════════════════════════════════════════════╗');
|
|
152
|
+
log(`║ DipArb Auto Trading - ${SELECTED_COIN} Markets ║`);
|
|
153
|
+
log('╠══════════════════════════════════════════════════════════╣');
|
|
154
|
+
log(`║ Dip Threshold: ${(config.dipThreshold * 100).toFixed(0)}% in ${config.slidingWindowMs / 1000}s window ║`);
|
|
155
|
+
log(`║ Sum Target: ${config.sumTarget} (profit >= ${expectedProfit}%) ║`);
|
|
156
|
+
log(`║ Stop Loss: ${config.leg2TimeoutSeconds}s after Leg1 ║`);
|
|
157
|
+
log(`║ Shares/Trade: ${config.shares} ║`);
|
|
158
|
+
log(`║ Order Type: Market Order (Leg1 + Leg2 + Exit) ║`);
|
|
159
|
+
log(`║ Log Directory: ${LOG_DIR}`);
|
|
160
|
+
log('╚══════════════════════════════════════════════════════════╝');
|
|
161
|
+
log('');
|
|
162
|
+
log('Usage: npx tsx auto-trade.ts --xrp [--dip=0.40] [--window=3000] [--timeout=60] [--shares=25] [--target=0.95]');
|
|
163
|
+
log('');
|
|
164
|
+
// Initialize SDK
|
|
165
|
+
log('Initializing SDK...');
|
|
166
|
+
const sdk = new PolymarketSDK({
|
|
167
|
+
privateKey: PRIVATE_KEY,
|
|
168
|
+
});
|
|
169
|
+
sdk.dipArb.updateConfig(config);
|
|
170
|
+
// ========================================
|
|
171
|
+
// Event Listeners
|
|
172
|
+
// ========================================
|
|
173
|
+
sdk.dipArb.on('started', (market) => {
|
|
174
|
+
// Start new log for this market
|
|
175
|
+
startNewMarketLog(market.slug || market.conditionId.slice(0, 20));
|
|
176
|
+
log('');
|
|
177
|
+
log('┌──────────────────────────────────────────────────────────┐');
|
|
178
|
+
log('│ MARKET STARTED │');
|
|
179
|
+
log('├──────────────────────────────────────────────────────────┤');
|
|
180
|
+
log(`│ ${market.name.slice(0, 56)}`);
|
|
181
|
+
log(`│ ${market.underlying} ${market.durationMinutes}m`);
|
|
182
|
+
log(`│ End Time: ${market.endTime.toISOString()}`);
|
|
183
|
+
log(`│ Condition: ${market.conditionId.slice(0, 30)}...`);
|
|
184
|
+
log('└──────────────────────────────────────────────────────────┘');
|
|
185
|
+
});
|
|
186
|
+
sdk.dipArb.on('stopped', () => {
|
|
187
|
+
log('>>> SERVICE STOPPED');
|
|
188
|
+
});
|
|
189
|
+
sdk.dipArb.on('newRound', (event) => {
|
|
190
|
+
const sum = event.upOpen + event.downOpen;
|
|
191
|
+
log(`>>> NEW ROUND | UP: ${event.upOpen.toFixed(3)} | DOWN: ${event.downOpen.toFixed(3)} | Sum: ${sum.toFixed(3)}`);
|
|
192
|
+
});
|
|
193
|
+
sdk.dipArb.on('signal', (signal) => {
|
|
194
|
+
log('');
|
|
195
|
+
log('╔══════════════════════════════════════════════════════════╗');
|
|
196
|
+
if (signal.type === 'leg1') {
|
|
197
|
+
log(`║ LEG1 SIGNAL: Buy ${signal.dipSide} @ ${signal.currentPrice.toFixed(4)}`);
|
|
198
|
+
log(`║ Drop: ${(signal.dropPercent * 100).toFixed(1)}% | Opposite: ${signal.oppositeAsk.toFixed(4)}`);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
log(`║ LEG2 SIGNAL: Buy ${signal.hedgeSide} @ ${signal.currentPrice.toFixed(4)}`);
|
|
202
|
+
log(`║ Total Cost: ${signal.totalCost.toFixed(4)} | Profit: ${(signal.expectedProfitRate * 100).toFixed(2)}%`);
|
|
203
|
+
}
|
|
204
|
+
log('╚══════════════════════════════════════════════════════════╝');
|
|
205
|
+
});
|
|
206
|
+
sdk.dipArb.on('execution', (result) => {
|
|
207
|
+
if (result.success) {
|
|
208
|
+
log(`✅ ${result.leg.toUpperCase()} FILLED: ${result.side} @ ${result.price?.toFixed(4)} x${result.shares}`);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
log(`❌ ${result.leg.toUpperCase()} FAILED: ${result.error}`);
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
sdk.dipArb.on('roundComplete', (result) => {
|
|
215
|
+
log('');
|
|
216
|
+
log('┌──────────────────────────────────────────────────────────┐');
|
|
217
|
+
log(`│ ROUND ${result.status.toUpperCase()}`);
|
|
218
|
+
if (result.profit !== undefined) {
|
|
219
|
+
log(`│ Profit: $${result.profit.toFixed(4)} (${(result.profitRate * 100).toFixed(2)}%)`);
|
|
220
|
+
}
|
|
221
|
+
log('└──────────────────────────────────────────────────────────┘');
|
|
222
|
+
});
|
|
223
|
+
sdk.dipArb.on('rotate', (event) => {
|
|
224
|
+
// Save current market log before rotation
|
|
225
|
+
log('');
|
|
226
|
+
log('╔══════════════════════════════════════════════════════════╗');
|
|
227
|
+
log(`║ 🔄 MARKET ROTATION ║`);
|
|
228
|
+
log(`║ Reason: ${event.reason}`);
|
|
229
|
+
log(`║ Previous: ${event.previousMarket?.slice(0, 40) || 'none'}...`);
|
|
230
|
+
log(`║ New: ${event.newMarket.slice(0, 40)}...`);
|
|
231
|
+
log('╚══════════════════════════════════════════════════════════╝');
|
|
232
|
+
// Save old log and start new one
|
|
233
|
+
// Note: 'started' event will be triggered after rotate, which will start new log
|
|
234
|
+
});
|
|
235
|
+
sdk.dipArb.on('settled', (result) => {
|
|
236
|
+
log(`>>> SETTLED: ${result.strategy} | Success: ${result.success}`);
|
|
237
|
+
if (result.amountReceived) {
|
|
238
|
+
log(` Amount: $${result.amountReceived.toFixed(2)}`);
|
|
239
|
+
}
|
|
240
|
+
if (result.error) {
|
|
241
|
+
log(` Error: ${result.error}`);
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
sdk.dipArb.on('error', (error) => {
|
|
245
|
+
log(`[ERROR] ${error.message}`);
|
|
246
|
+
});
|
|
247
|
+
// ========================================
|
|
248
|
+
// Scan and Start
|
|
249
|
+
// ========================================
|
|
250
|
+
log(`Scanning for ${SELECTED_COIN} 15m markets...`);
|
|
251
|
+
const markets = await sdk.dipArb.scanUpcomingMarkets({
|
|
252
|
+
coin: SELECTED_COIN,
|
|
253
|
+
duration: '15m',
|
|
254
|
+
limit: 5,
|
|
255
|
+
});
|
|
256
|
+
log(`Found ${markets.length} markets:`);
|
|
257
|
+
for (const m of markets) {
|
|
258
|
+
const endIn = Math.round((m.endTime.getTime() - Date.now()) / 60000);
|
|
259
|
+
const status = endIn <= 0 ? '(ENDED)' : `(ends in ${endIn}m)`;
|
|
260
|
+
log(` - ${m.name.slice(0, 50)} ${status}`);
|
|
261
|
+
log(` Condition: ${m.conditionId.slice(0, 30)}...`);
|
|
262
|
+
log(` End: ${m.endTime.toISOString()}`);
|
|
263
|
+
}
|
|
264
|
+
if (markets.length === 0) {
|
|
265
|
+
log('No markets found. Exiting.');
|
|
266
|
+
saveCurrentLog('no-markets');
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
// Filter out already ended markets
|
|
270
|
+
const activeMarkets = markets.filter(m => m.endTime.getTime() > Date.now());
|
|
271
|
+
if (activeMarkets.length === 0) {
|
|
272
|
+
log('All markets have ended. Waiting for new markets...');
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
log(`Active markets: ${activeMarkets.length}`);
|
|
276
|
+
}
|
|
277
|
+
// Start
|
|
278
|
+
const market = await sdk.dipArb.findAndStart({
|
|
279
|
+
coin: SELECTED_COIN,
|
|
280
|
+
preferDuration: '15m',
|
|
281
|
+
});
|
|
282
|
+
if (!market) {
|
|
283
|
+
log('Failed to start. Exiting.');
|
|
284
|
+
saveCurrentLog('failed');
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
log(`Selected market ends at: ${market.endTime.toISOString()}`);
|
|
288
|
+
const timeUntilEnd = Math.round((market.endTime.getTime() - Date.now()) / 1000);
|
|
289
|
+
log(`Time until market end: ${timeUntilEnd}s (${Math.round(timeUntilEnd / 60)}m)`);
|
|
290
|
+
// Enable auto-rotate with redeem strategy
|
|
291
|
+
sdk.dipArb.enableAutoRotate({
|
|
292
|
+
enabled: true,
|
|
293
|
+
underlyings: [SELECTED_COIN],
|
|
294
|
+
duration: '15m',
|
|
295
|
+
settleStrategy: 'redeem', // 等待市场结算后赎回 (5分钟后)
|
|
296
|
+
autoSettle: true,
|
|
297
|
+
preloadMinutes: 2,
|
|
298
|
+
redeemWaitMinutes: 5, // 市场结束后等待 5 分钟再赎回
|
|
299
|
+
redeemRetryIntervalSeconds: 30, // 每 30 秒检查一次
|
|
300
|
+
});
|
|
301
|
+
log(`Auto-rotate enabled for ${SELECTED_COIN} (with background redemption)`);
|
|
302
|
+
log('');
|
|
303
|
+
log('═══════════════════════════════════════════════════════════');
|
|
304
|
+
log(' AUTO TRADING ACTIVE - Press Ctrl+C to stop');
|
|
305
|
+
log('═══════════════════════════════════════════════════════════');
|
|
306
|
+
log('');
|
|
307
|
+
// Status update every 30 seconds (more frequent to catch rotation)
|
|
308
|
+
let statusCount = 0;
|
|
309
|
+
const statusInterval = setInterval(() => {
|
|
310
|
+
const stats = sdk.dipArb.getStats();
|
|
311
|
+
const round = sdk.dipArb.getCurrentRound();
|
|
312
|
+
const currentMarket = sdk.dipArb.getMarket();
|
|
313
|
+
statusCount++;
|
|
314
|
+
// Check if market has ended
|
|
315
|
+
if (currentMarket) {
|
|
316
|
+
const timeLeft = Math.round((currentMarket.endTime.getTime() - Date.now()) / 1000);
|
|
317
|
+
const timeLeftStr = timeLeft > 0 ? `${timeLeft}s left` : `ENDED ${-timeLeft}s ago`;
|
|
318
|
+
log(`[Status #${statusCount}] Market: ${currentMarket.underlying} | ${timeLeftStr} | Signals: ${stats.signalsDetected} | L1: ${stats.leg1Filled} | L2: ${stats.leg2Filled}`);
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
log(`[Status #${statusCount}] No market active | Signals: ${stats.signalsDetected}`);
|
|
322
|
+
}
|
|
323
|
+
// Show current position
|
|
324
|
+
if (round) {
|
|
325
|
+
if (round.phase === 'leg1_filled' && round.leg1) {
|
|
326
|
+
log(` 📊 Position: ${round.leg1.shares}x ${round.leg1.side} @ ${round.leg1.price.toFixed(4)} | Waiting for Leg2...`);
|
|
327
|
+
}
|
|
328
|
+
else if (round.phase === 'completed' && round.leg1 && round.leg2) {
|
|
329
|
+
const totalCost = round.leg1.price + round.leg2.price;
|
|
330
|
+
const profit = (1 - totalCost) * round.leg1.shares;
|
|
331
|
+
log(` 📊 Position: ${round.leg1.shares}x UP + ${round.leg2.shares}x DOWN | Cost: ${totalCost.toFixed(4)} | Profit: $${profit.toFixed(2)}`);
|
|
332
|
+
}
|
|
333
|
+
else if (round.phase === 'waiting') {
|
|
334
|
+
log(` 📊 Position: None (waiting for signal)`);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}, 30000);
|
|
338
|
+
// Wait
|
|
339
|
+
await new Promise(resolve => setTimeout(resolve, MONITOR_DURATION_MS));
|
|
340
|
+
// Cleanup
|
|
341
|
+
clearInterval(statusInterval);
|
|
342
|
+
// Final stats
|
|
343
|
+
const stats = sdk.dipArb.getStats();
|
|
344
|
+
log('');
|
|
345
|
+
log('╔══════════════════════════════════════════════════════════╗');
|
|
346
|
+
log('║ FINAL STATS ║');
|
|
347
|
+
log('╠══════════════════════════════════════════════════════════╣');
|
|
348
|
+
log(`║ Running Time: ${Math.round(stats.runningTimeMs / 1000)}s`);
|
|
349
|
+
log(`║ Rounds Monitored: ${stats.roundsMonitored}`);
|
|
350
|
+
log(`║ Signals Detected: ${stats.signalsDetected}`);
|
|
351
|
+
log(`║ Leg1 Filled: ${stats.leg1Filled}`);
|
|
352
|
+
log(`║ Leg2 Filled: ${stats.leg2Filled}`);
|
|
353
|
+
log(`║ Total Profit: $${stats.totalProfit.toFixed(2)}`);
|
|
354
|
+
log('╚══════════════════════════════════════════════════════════╝');
|
|
355
|
+
await sdk.dipArb.stop();
|
|
356
|
+
sdk.stop();
|
|
357
|
+
// Save final log
|
|
358
|
+
saveCurrentLog('final');
|
|
359
|
+
}
|
|
360
|
+
// Handle Ctrl+C
|
|
361
|
+
process.on('SIGINT', async () => {
|
|
362
|
+
log('');
|
|
363
|
+
log('Interrupted. Saving logs...');
|
|
364
|
+
saveCurrentLog('interrupted');
|
|
365
|
+
process.exit(0);
|
|
366
|
+
});
|
|
367
|
+
main().catch((err) => {
|
|
368
|
+
log(`Fatal error: ${err.message}`);
|
|
369
|
+
console.error(err);
|
|
370
|
+
saveCurrentLog('error');
|
|
371
|
+
process.exit(1);
|
|
372
|
+
});
|
|
373
|
+
//# sourceMappingURL=auto-trade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-trade.js","sourceRoot":"","sources":["../../../scripts/dip-arb/auto-trade.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Example 14: DipArbService - Dip Arbitrage for 15m/5m UP/DOWN Markets
|
|
4
|
+
*
|
|
5
|
+
* Demonstrates the dip arbitrage workflow for Polymarket's short-term crypto markets:
|
|
6
|
+
* 1. Scan for upcoming BTC/ETH/SOL/XRP UP/DOWN markets
|
|
7
|
+
* 2. Auto-select and start monitoring a market
|
|
8
|
+
* 3. Detect dip signals (price drops > threshold)
|
|
9
|
+
* 4. Execute Leg1 + Leg2 trades for risk-free profit
|
|
10
|
+
* 5. Auto-rotate to next market when current ends
|
|
11
|
+
*
|
|
12
|
+
* Strategy Overview:
|
|
13
|
+
* - Leg1: Buy the dipped side when price drops >= dipThreshold (default 15%)
|
|
14
|
+
* - Leg2: Buy the opposite side when combined cost < sumTarget (default 0.95)
|
|
15
|
+
* - Profit: Total cost < $1 means guaranteed profit at settlement
|
|
16
|
+
*
|
|
17
|
+
* Environment variables:
|
|
18
|
+
* POLY_PRIVKEY - Private key for trading (required for execution)
|
|
19
|
+
*
|
|
20
|
+
* Run with:
|
|
21
|
+
* pnpm example:dip-arb
|
|
22
|
+
*
|
|
23
|
+
* Or monitor-only (no trading):
|
|
24
|
+
* npx tsx examples/14-dip-arb-service.ts --monitor-only
|
|
25
|
+
*
|
|
26
|
+
* With auto-rotate:
|
|
27
|
+
* npx tsx examples/14-dip-arb-service.ts --auto-rotate
|
|
28
|
+
*/
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=example-basic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example-basic.d.ts","sourceRoot":"","sources":["../../../scripts/dip-arb/example-basic.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG"}
|