From 008adf30f3de561c01c595666fdd645b47dc1f25 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 24 Jun 2026 16:29:12 +0800
Subject: [PATCH] fix(okx): 修复OKX交易执行器和WebSocket客户端配置问题

---
 src/main/java/com/xcong/excoin/modules/okxApi/OkxTradeExecutor.java          |    6 +++++-
 src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientManager.java |    6 +++---
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxApi/OkxTradeExecutor.java b/src/main/java/com/xcong/excoin/modules/okxApi/OkxTradeExecutor.java
index a7ee107..29874b6 100644
--- a/src/main/java/com/xcong/excoin/modules/okxApi/OkxTradeExecutor.java
+++ b/src/main/java/com/xcong/excoin/modules/okxApi/OkxTradeExecutor.java
@@ -392,13 +392,17 @@
         executor.execute(() -> {
             try {
                 String side = isLong ? "buy" : "sell";
+                String posSide = isLong ? "long" : "short";
+                // OKX sz 必须为正数,strategy 层传入的负数需转正
+                String absSz = size.startsWith("-") ? size.substring(1) : size;
 
                 JSONObject body = new JSONObject();
                 body.put("instId", contract);
                 body.put("tdMode", "cross");
                 body.put("side", side);
+                body.put("posSide", posSide);            // 双向持仓模式必须指定
                 body.put("ordType", "trigger");          // 计划委托 = 触发后开仓
-                body.put("sz", size);
+                body.put("sz", absSz);
                 body.put("triggerPx", triggerPrice.stripTrailingZeros().toPlainString());
                 body.put("triggerPxType", "last");
                 body.put("orderPx", "-1");               // OKX 使用 orderPx,非 ordPx
diff --git a/src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientManager.java b/src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientManager.java
index 2021fd5..0ea9325 100644
--- a/src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientManager.java
+++ b/src/main/java/com/xcong/excoin/modules/okxApi/OkxWebSocketClientManager.java
@@ -58,11 +58,11 @@
                     .leverage("100")
                     .marginMode("cross")
                     .positionMode("long_short_mode")
-                    .gridRate(new BigDecimal("0.003"))
+                    .gridRate(new BigDecimal("0.0025"))
                     .expectedProfit(new BigDecimal("25"))
                     .maxLoss(new BigDecimal("15"))
-                    .baseQuantity("15")
-                    .quantity("15")
+                    .baseQuantity("1")
+                    .quantity("1")
                     .restartGridSpan(6)
                     .maxPositionSize(2)
                     .priceScale(2)

--
Gitblit v1.9.1