| | |
| | | |
| | | import com.xcong.excoin.modules.gateApi.wsHandler.handler.AutoOrdersChannelHandler; |
| | | import com.xcong.excoin.modules.gateApi.wsHandler.handler.CandlestickChannelHandler; |
| | | import com.xcong.excoin.modules.gateApi.wsHandler.handler.OrdersChannelHandler; |
| | | import com.xcong.excoin.modules.gateApi.wsHandler.handler.PositionClosesChannelHandler; |
| | | import com.xcong.excoin.modules.gateApi.wsHandler.handler.PositionsChannelHandler; |
| | | import com.xcong.excoin.modules.gateApi.wsHandler.handler.UserTradesChannelHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | |
| | | try { |
| | | //实盘 |
| | | config = GateConfig.builder() |
| | | .apiKey("08d6108fc29378fe64d6f0e89745b3fb") |
| | | .apiSecret("4d16e40117477a2344f6fd5872c5b075dc9664a599e65422d3e6791ff64379f1") |
| | | .apiKey("8a995c9662bbdfb0b2577f5f56cf4210") |
| | | .apiSecret("4aaf5e7c97cf3bd14450c6703d4dc2af8647dee4c0a72272fa04280e83545d96") |
| | | .contract("ETH_USDT") |
| | | .leverage("100") |
| | | .marginMode("CROSS") |
| | | .positionMode("dual") |
| | | .gridRate(new BigDecimal("0.0025")) |
| | | .expectedProfit(new BigDecimal("0.05")) |
| | | .maxLoss(new BigDecimal("1.5")) |
| | | .baseQuantity("1") |
| | | .quantity("1") |
| | | .gridRate(new BigDecimal("0.004")) |
| | | .expectedProfit(new BigDecimal("25")) |
| | | .maxLoss(new BigDecimal("15")) |
| | | .baseQuantity("39") |
| | | .quantity("13") |
| | | .restartGridSpan(2) |
| | | .maxPositionSize(2) |
| | | .priceScale(2) |
| | | .contractMultiplier(new BigDecimal("0.01")) |
| | |
| | | .isProduction(true) |
| | | .reopenMaxRetries(3) |
| | | .build(); |
| | | // //测试盘 |
| | | // config = GateConfig.builder() |
| | | // .apiKey("d90ca272391992b8e74f8f92cedb21ec") |
| | | // .apiSecret("1861e4f52de4bb53369ea3208d9ede38ece4777368030f96c77d27934c46c274") |
| | | // .contract("ETH_USDT") |
| | | // .leverage("100") |
| | | // .marginMode("CROSS") |
| | | // .positionMode("dual") |
| | | // .gridRate(new BigDecimal("0.002")) |
| | | // .expectedProfit(new BigDecimal("1")) |
| | | // .maxLoss(new BigDecimal("15")) |
| | | // .quantity("1") |
| | | // .priceScale(1) |
| | | // .contractMultiplier(new BigDecimal("0.01")) |
| | | // .unrealizedPnlPriceMode(GateConfig.PnLPriceMode.LAST_PRICE) |
| | | // .isProduction(false) |
| | | // .reopenMaxRetries(3) |
| | | // .build(); |
| | | |
| | | // 1. 初始化交易服务:查用户ID → 切持仓模式 → 清条件单 → 平已有仓位 → 设杠杆 |
| | | gridTradeService = new GateGridTradeService(config); |
| | |
| | | config.getApiKey(), config.getApiSecret(), config.getContract(), gridTradeService)); |
| | | wsClient.addChannelHandler(new PositionClosesChannelHandler( |
| | | config.getApiKey(), config.getApiSecret(), config.getContract(), gridTradeService)); |
| | | wsClient.addChannelHandler(new OrdersChannelHandler( |
| | | config.getApiKey(), config.getApiSecret(), config.getContract(), gridTradeService)); |
| | | wsClient.addChannelHandler(new UserTradesChannelHandler( |
| | | config.getApiKey(), config.getApiSecret(), config.getContract(), gridTradeService)); |
| | | wsClient.addChannelHandler(new AutoOrdersChannelHandler( |
| | | config.getApiKey(), config.getApiSecret(), config.getContract(), gridTradeService)); |
| | | gridTradeService.setWsClient(wsClient); |
| | | wsClient.init(); |
| | | log.info("[管理器] WS已连接, 已注册 6 个频道处理器"); |
| | | log.info("[管理器] WS已连接, 已注册 4 个频道处理器"); |
| | | |
| | | // 3. 激活策略,等待首根 K 线触发基底双开 |
| | | gridTradeService.startGrid(); |