From 69000af2f120d592927d03f58bc3c8abf5ff70ac Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 08 Jan 2026 10:09:24 +0800
Subject: [PATCH] config(okxNewPrice): 切换到UAT环境并更新网格交易配置
---
src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxNewPriceWebSocketClient.java | 62 +++++++++++++++++++++++--------
1 files changed, 46 insertions(+), 16 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 782467e..03a24c1 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxNewPriceWebSocketClient.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxNewPriceWebSocketClient.java
@@ -4,12 +4,16 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xcong.excoin.modules.okxNewPrice.celue.CaoZuoService;
+import com.xcong.excoin.modules.okxNewPrice.okxWs.AccountWs;
+import com.xcong.excoin.modules.okxNewPrice.okxWs.PositionsWs;
import com.xcong.excoin.modules.okxNewPrice.okxWs.TradeOrderWs;
import com.xcong.excoin.modules.okxNewPrice.okxWs.enums.CoinEnums;
+import com.xcong.excoin.modules.okxNewPrice.okxWs.enums.OrderParamEnums;
import com.xcong.excoin.modules.okxNewPrice.okxWs.param.TradeRequestParam;
import com.xcong.excoin.modules.okxNewPrice.okxWs.wanggeList.WangGeListEnum;
import com.xcong.excoin.modules.okxNewPrice.okxWs.wanggeList.WangGeListService;
import com.xcong.excoin.modules.okxNewPrice.utils.SSLConfig;
+import com.xcong.excoin.modules.okxNewPrice.utils.WsMapBuild;
import com.xcong.excoin.utils.RedisUtils;
import java.math.BigDecimal;
import lombok.extern.slf4j.Slf4j;
@@ -110,7 +114,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 = true;
+ private static final boolean isAccountType = false;
/**
* 建立与 OKX WebSocket 服务器的连接。
@@ -292,6 +296,8 @@
*/
private void triggerQuantOperations(String markPx) {
try {
+
+// markPx = String.valueOf(new BigDecimal(markPx).subtract(new BigDecimal("20")));
// 1. 判断当前价格属于哪个网格
WangGeListEnum gridByPriceNew = WangGeListEnum.getGridByPrice(new BigDecimal(markPx));
if (gridByPriceNew == null) {
@@ -312,24 +318,48 @@
for (OkxQuantWebSocketClient client : clientManager.getAllClients()) {
String accountName = client.getAccountName();
if (accountName != null) {
- /**
- * 处理历史网格的订单
- * 根据历史网格的开单方向,是否需要止损处理
- * 如果方向一致就不需要处理
- * 如果不一致则需要处理
- */
+ log.error("当前价格{}属于网格: {}-{}({}-{})", markPx, gridByPriceNew.getName(),gridByPriceNew.getFang_xiang(), gridByPriceNew.getJiage_xiaxian(), gridByPriceNew.getJiage_shangxian());
+ //处理历史网格信息
String fangXiang = gridByPriceNew.getFang_xiang();
- 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);
- TradeOrderWs.orderEvent(client.getWebSocketClient(), tradeRequestParamOld);
+ String posSideOld = null;
+ if (CoinEnums.POSSIDE_LONG.getCode().equals(fangXiang)) {
+ posSideOld = CoinEnums.POSSIDE_SHORT.getCode();
+ }
+ if (CoinEnums.POSSIDE_SHORT.getCode().equals(fangXiang)) {
+ posSideOld = CoinEnums.POSSIDE_LONG.getCode();
}
- /**
- * 处理当前网格的订单,触发量化操作
- */
- log.info("当前价格{}属于网格: {}-{}({}-{})", markPx, gridByPriceNew.getName(),gridByPriceNew.getFang_xiang(), gridByPriceNew.getJiage_xiaxian(), gridByPriceNew.getJiage_shangxian());
+ String positionAccountName = PositionsWs.initAccountName(accountName, posSideOld);
+ // 判断是否保证金超标
+ if (
+ PositionsWs.getAccountMap(positionAccountName).get("pos") != null
+ && PositionsWs.getAccountMap(positionAccountName).get("pos").compareTo(BigDecimal.ZERO) > 0
+ ){
+ BigDecimal avgPx = PositionsWs.getAccountMap(positionAccountName).get("avgPx");
+ WangGeListEnum gridByPriceOld = WangGeListEnum.getGridByPrice(avgPx);
+ if (gridByPriceOld != null){
+ String zhiSunDian = gridByPriceOld.getZhi_sun_dian();
+ if (CoinEnums.POSSIDE_SHORT.getCode().equals(posSideOld)) {
+ boolean flag = new BigDecimal(markPx).compareTo(new BigDecimal(zhiSunDian)) > 0;
+ log.error("{}历史网格方向{},当前价格大于止损点{}",gridByPriceOld.name(),posSideOld,flag);
+ if (flag){
+ TradeRequestParam tradeRequestParam = caoZuoService.caoZuoZhiSunEvent(accountName, markPx, posSideOld);
+ TradeOrderWs.orderEvent(client.getWebSocketClient(), tradeRequestParam);
+
+ }
+ }
+ if (CoinEnums.POSSIDE_LONG.getCode().equals(posSideOld)) {
+ boolean flag = new BigDecimal(markPx).compareTo(new BigDecimal(zhiSunDian)) < 0;
+ log.error("{}历史网格方向{},当前价格小于止损点{}",gridByPriceOld.name(),posSideOld,flag);
+ if (flag){
+ TradeRequestParam tradeRequestParam = caoZuoService.caoZuoZhiSunEvent(accountName, markPx, posSideOld);
+ TradeOrderWs.orderEvent(client.getWebSocketClient(), tradeRequestParam);
+ }
+ }
+ }
+ }
+
+ //当前下单
wangGeListService.initWangGe(markPx);
TradeRequestParam tradeRequestParam = caoZuoService.caoZuoHandler(accountName, markPx, gridByPriceNew.getFang_xiang());
TradeOrderWs.orderEvent(client.getWebSocketClient(), tradeRequestParam);
--
Gitblit v1.9.1