From 23ece6103fd890655f0eef79331d3d73921611a2 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Wed, 07 Jan 2026 11:59:23 +0800
Subject: [PATCH] feat(trade): 优化交易系统止损逻辑和订单处理机制
---
src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java | 11 +++++++++++
1 files changed, 11 insertions(+), 0 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..db8cd0c 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);
--
Gitblit v1.9.1