From e45e705c22df5bc979e72db6014dd1ff9637be42 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 24 Jun 2026 22:21:58 +0800
Subject: [PATCH] fix(okx): 修复网格交易成交日志记录问题

---
 src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientMain.java |   63 +++++++++++++++++++++++++++++++
 1 files changed, 63 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientMain.java b/src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientMain.java
new file mode 100644
index 0000000..5e8823e
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientMain.java
@@ -0,0 +1,63 @@
+package com.xcong.excoin.modules.okxApi;
+
+import com.xcong.excoin.modules.okxApi.wsHandler.handler.MarkPriceOkxChannelHandler;
+import com.xcong.excoin.modules.okxApi.wsHandler.handler.OrdersOkxChannelHandler;
+import com.xcong.excoin.modules.okxApi.wsHandler.handler.PositionsOkxChannelHandler;
+
+import java.math.BigDecimal;
+import java.util.concurrent.CountDownLatch;
+
+/**
+ * OKX 网格策略独立启动入口(用于测试或非 Spring 环境)。
+ *
+ * @author Administrator
+ */
+public class OkxWebSocketClientMain {
+
+    public static void main(String[] args) throws InterruptedException {
+        OkxConfig config = OkxConfig.builder()
+                .apiKey("YOUR_OKX_API_KEY")
+                .apiSecret("YOUR_OKX_API_SECRET")
+                .passphrase("YOUR_OKX_PASSPHRASE")
+                .contract("ETH-USDT-SWAP")
+                .leverage("100")
+                .marginMode("cross")
+                .positionMode("long_short_mode")
+                .gridRate(new BigDecimal("0.003"))
+                .expectedProfit(new BigDecimal("25"))
+                .maxLoss(new BigDecimal("15"))
+                .baseQuantity("15")
+                .quantity("15")
+                .restartGridSpan(6)
+                .priceScale(2)
+                .contractMultiplier(new BigDecimal("0.01"))
+                .isProduction(false)
+                .build();
+
+        OkxGridTradeService gridTradeService = new OkxGridTradeService(config);
+        gridTradeService.init();
+
+        OkxKlineWebSocketClient wsClient = new OkxKlineWebSocketClient(config);
+
+        wsClient.addPublicHandler(new MarkPriceOkxChannelHandler(
+                config.getContract(), gridTradeService));
+        wsClient.addPrivateHandler(new PositionsOkxChannelHandler(
+                config, gridTradeService));
+        wsClient.addPrivateHandler(new OrdersOkxChannelHandler(
+                config, gridTradeService));
+
+        gridTradeService.setWsClient(wsClient);
+        wsClient.init();
+
+        gridTradeService.startGrid();
+
+        // 保持主线程不退出
+        CountDownLatch latch = new CountDownLatch(1);
+        Runtime.getRuntime().addShutdownHook(new Thread(() -> {
+            gridTradeService.stopGrid();
+            wsClient.destroy();
+            latch.countDown();
+        }));
+        latch.await();
+    }
+}

--
Gitblit v1.9.1