From f2c1b2853b2f0d0a0efb95a9c8df95ec1da908ad Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 07 Jan 2026 11:13:36 +0800
Subject: [PATCH] fix(trading): 修复交易系统中的计算错误和日志级别问题

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxQuantWebSocketClient.java |   39 ++++++++++++++++++++++++++++++++-------
 1 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxQuantWebSocketClient.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxQuantWebSocketClient.java
index 8c97c0b..3a37a34 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxQuantWebSocketClient.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxQuantWebSocketClient.java
@@ -1,10 +1,13 @@
 package com.xcong.excoin.modules.okxNewPrice;
 
+import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.xcong.excoin.modules.okxNewPrice.celue.CaoZuoService;
 import com.xcong.excoin.modules.okxNewPrice.okxWs.*;
 import com.xcong.excoin.modules.okxNewPrice.okxWs.enums.ExchangeInfoEnum;
+import com.xcong.excoin.modules.okxNewPrice.okxWs.param.TradeRequestParam;
+import com.xcong.excoin.modules.okxNewPrice.okxWs.wanggeList.WangGeListService;
 import com.xcong.excoin.modules.okxNewPrice.utils.SSLConfig;
 import com.xcong.excoin.modules.okxNewPrice.wangge.WangGeService;
 import com.xcong.excoin.utils.RedisUtils;
@@ -19,6 +22,7 @@
 import javax.annotation.PreDestroy;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.List;
 import java.util.concurrent.*;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicReference;
@@ -33,6 +37,9 @@
 public class OkxQuantWebSocketClient {
     private final RedisUtils redisUtils;
     private final ExchangeInfoEnum account;
+
+    private final CaoZuoService caoZuoService;
+    private final WangGeListService wangGeListService;
 
     private WebSocketClient webSocketClient;
     private ScheduledExecutorService heartbeatExecutor;
@@ -51,10 +58,24 @@
         return webSocketClient;
     }
     
-    public OkxQuantWebSocketClient(ExchangeInfoEnum account,
-                                   RedisUtils redisUtils) {
+    /**
+     * 获取账号名称
+     * @return 账号名称
+     */
+    public String getAccountName() {
+        return account.name();
+    }
+    
+    public OkxQuantWebSocketClient(
+            ExchangeInfoEnum account,
+            RedisUtils redisUtils,
+            CaoZuoService caoZuoService,
+            WangGeListService wangGeListService
+    ) {
         this.account = account;
         this.redisUtils = redisUtils;
+        this.caoZuoService = caoZuoService;
+        this.wangGeListService = wangGeListService;
     }
 
     private static final String WS_URL_MONIPAN = "wss://wspap.okx.com:8443/ws/v5/private";
@@ -373,14 +394,18 @@
         // 注意:当前实现中,OrderInfoWs等类使用静态Map存储数据
         // 这会导致多账号之间的数据冲突。需要进一步修改这些类的设计,让数据存储与特定账号关联
         if (OrderInfoWs.ORDERINFOWS_CHANNEL.equals(channel)) {
-            OrderInfoWs.handleEvent(response, redisUtils, account.name());
+
+            TradeRequestParam tradeRequestParam = OrderInfoWs.handleEvent(response, redisUtils, account.name());
+            TradeOrderWs.orderZhiYingEvent(webSocketClient, tradeRequestParam);
         }else if (AccountWs.ACCOUNTWS_CHANNEL.equals(channel)) {
+
             AccountWs.handleEvent(response, account.name());
-//            String side = caoZuoService.caoZuo(account.name());
-//            TradeOrderWs.orderEvent(webSocketClient, side, account.name());
         } else if (PositionsWs.POSITIONSWS_CHANNEL.equals(channel)) {
-            PositionsWs.handleEvent(response, account.name());
+
+            List<TradeRequestParam> tradeRequestParams = PositionsWs.handleEvent(response, account.name());
+            TradeOrderWs.orderZhiSunEvent(webSocketClient, tradeRequestParams);
         } else if (BalanceAndPositionWs.CHANNEL_NAME.equals(channel)) {
+
             BalanceAndPositionWs.handleEvent(response);
         }
     }
@@ -477,7 +502,7 @@
         }
         
         int attempt = 0;
-        int maxAttempts = 5;
+        int maxAttempts = 3;
         long delayMs = 1000;
 
         while (attempt < maxAttempts && !isConnected.get()) {

--
Gitblit v1.9.1