From 75836d48785da412552e67050e2332a74da2a435 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Thu, 08 Jan 2026 09:42:54 +0800
Subject: [PATCH] fix(okx): 修复交易参数配置和网格策略
---
src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java | 19 ++++++++++++++++---
1 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
index 1adb9fd..8c57931 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java
@@ -81,6 +81,17 @@
// 账户预期亏损金额比这个还小时,立即止损
if (realKuiSunAmount.compareTo(zhiSunAmount) > 0){
log.warn("账户冷静止损......");
+ //目前止损掉损失较大的一个方向
+ String positionAccountName = PositionsWs.initAccountName(accountName, posSide);
+ BigDecimal upl = PositionsWs.getAccountMap(positionAccountName).get("upl");
+ String posSideOther = CoinEnums.POSSIDE_LONG.getCode().equals(posSide) ? CoinEnums.POSSIDE_SHORT.getCode() : CoinEnums.POSSIDE_LONG.getCode();
+ String positionAccountOther = PositionsWs.initAccountName(accountName, posSideOther);
+ BigDecimal uplOther = PositionsWs.getAccountMap(positionAccountOther).get("upl");
+ if (upl.compareTo(uplOther) > 0){
+ log.warn("{}的亏损{},{}的亏损{},止损{}......",posSide,upl,posSideOther,uplOther,uplOther);
+ posSide = posSideOther;
+ }
+
WsMapBuild.saveStringToMap(InstrumentsWs.getAccountMap(accountName), CoinEnums.OUT.name(), OrderParamEnums.OUT_YES.getValue());
tradeRequestParam.setTradeType(OrderParamEnums.TRADE_YES.getValue());
return caoZuoZhiSunEvent(accountName, markPx, posSide);
@@ -158,7 +169,7 @@
tradeRequestParam.setTradeType(OrderParamEnums.TRADE_NO.getValue());
}
tradeRequestParam.setSz(String.valueOf( pos));
- log.info("止损订单:{},方向:{}-{},数量:{}",clOrdId,posSide, side, pos);
+ log.error("止损订单:{},方向:{}-{},数量:{}",clOrdId,posSide, side, pos);
return tradeRequestParam;
}
@@ -453,7 +464,8 @@
BigDecimal divide = subtract.divide(new BigDecimal(buyCntTime), 0, RoundingMode.DOWN).add(BigDecimal.ONE);
log.info("倍数次数{}", divide);
String buyCntInit = InstrumentsWs.getAccountMap(accountName).get(CoinEnums.BUY_CNT_INIT.name());
- return String.valueOf(divide.multiply(new BigDecimal(buyCntInit)));
+// return String.valueOf(divide.multiply(new BigDecimal(buyCntInit)));
+ return buyCntInit;
}
private String buyCntTimeShortEvent(String accountName, BigDecimal avgPx, BigDecimal markPx){
@@ -466,7 +478,8 @@
BigDecimal divide = subtract.divide(new BigDecimal(buyCntTime), 0, RoundingMode.DOWN).add(BigDecimal.ONE);
log.info("倍数次数{}", divide);
String buyCntInit = InstrumentsWs.getAccountMap(accountName).get(CoinEnums.BUY_CNT_INIT.name());
- return String.valueOf(divide.multiply(new BigDecimal(buyCntInit)));
+// return String.valueOf(divide.multiply(new BigDecimal(buyCntInit)));
+ return buyCntInit;
}
/**
--
Gitblit v1.9.1