From 249e016826505a9bcd02c43dad8012188f9b5163 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Sat, 20 Dec 2025 00:30:27 +0800
Subject: [PATCH] feat(okx): 实现止盈订单功能并优化相关逻辑

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxNewPriceWebSocketClient.java |   28 ++++------------------------
 1 files changed, 4 insertions(+), 24 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxNewPriceWebSocketClient.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxNewPriceWebSocketClient.java
index 9a59528..782467e 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxNewPriceWebSocketClient.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxNewPriceWebSocketClient.java
@@ -110,7 +110,7 @@
 
     private static final String WS_URL_MONIPAN = "wss://wspap.okx.com:8443/ws/v5/public";
     private static final String WS_URL_SHIPAN = "wss://ws.okx.com:8443/ws/v5/public";
-    private static final boolean isAccountType = false;
+    private static final boolean isAccountType = true;
 
     /**
      * 建立与 OKX WebSocket 服务器的连接。
@@ -310,7 +310,7 @@
             }
             // 获取所有OkxQuantWebSocketClient实例
             for (OkxQuantWebSocketClient client : clientManager.getAllClients()) {
-                String accountName = getAccountNameFromClient(client);
+                String accountName = client.getAccountName();
                 if (accountName != null) {
                     /**
                      * 处理历史网格的订单
@@ -319,7 +319,7 @@
                      *      如果不一致则需要处理
                      */
                     String fangXiang = gridByPriceNew.getFang_xiang();
-                    String fangXiangOld = CoinEnums.POSSIDE_LONG.equals(fangXiang) ? CoinEnums.POSSIDE_SHORT.getCode() : CoinEnums.POSSIDE_LONG.getCode();
+                    String fangXiangOld = CoinEnums.POSSIDE_LONG.getCode().equals(fangXiang) ? CoinEnums.POSSIDE_SHORT.getCode() : CoinEnums.POSSIDE_LONG.getCode();
                     log.info("历史网格方向为:{}", fangXiangOld);
                     if (!fangXiang.equals(fangXiangOld)){
                         TradeRequestParam tradeRequestParamOld = caoZuoService.caoZuoZhiSunEvent(accountName, markPx, fangXiangOld);
@@ -338,26 +338,6 @@
             }
         } catch (Exception e) {
             log.error("触发量化操作失败", e);
-        }
-    }
-    
-    /**
-     * 从OkxQuantWebSocketClient实例中获取账号名称
-     * 由于OkxQuantWebSocketClient没有直接暴露账号名称的方法,这里需要通过反射获取
-     * 更好的方式是修改OkxQuantWebSocketClient,添加getAccountName方法
-     */
-    private String getAccountNameFromClient(OkxQuantWebSocketClient client) {
-        try {
-            // 通过反射获取account字段的值
-            java.lang.reflect.Field accountField = OkxQuantWebSocketClient.class.getDeclaredField("account");
-            accountField.setAccessible(true);
-            Object account = accountField.get(client);
-            // 调用account的name()方法获取账号名称
-            java.lang.reflect.Method nameMethod = account.getClass().getMethod("name");
-            return (String) nameMethod.invoke(account);
-        } catch (Exception e) {
-            log.error("获取账号名称失败", e);
-            return null;
         }
     }
 
@@ -450,7 +430,7 @@
      */
     private void reconnectWithBackoff() throws InterruptedException {
         int attempt = 0;
-        int maxAttempts = 5;
+        int maxAttempts = 3;
         long delayMs = 5000;
 
         while (attempt < maxAttempts) {

--
Gitblit v1.9.1