From c49fb826133d2e853e5d9a2558166ae223ff6fcc Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 12 Dec 2025 13:27:12 +0800
Subject: [PATCH] fix(okxNewPrice): 修复保证金和盈亏计算逻辑
---
src/main/java/com/xcong/excoin/modules/okxNewPrice/celue/CaoZuoServiceImpl.java | 7 ++++---
1 files changed, 4 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 58e1189..af63cd9 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
@@ -1,5 +1,6 @@
package com.xcong.excoin.modules.okxNewPrice.celue;
+import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.xcong.excoin.modules.okxNewPrice.okxWs.*;
import com.xcong.excoin.modules.okxNewPrice.okxWs.enums.CoinEnums;
@@ -80,7 +81,7 @@
*/
// 实际亏损金额
BigDecimal realKuiSunAmount = WsMapBuild.parseBigDecimalSafe(AccountWs.ACCOUNTWSMAP.get("upl"));
- log.info("实际亏损金额: {}", realKuiSunAmount);
+ log.info("未实现盈亏: {}", realKuiSunAmount);
String zhiSunPercent = InstrumentsWs.INSTRUMENTSWSMAP.get(CoinEnums.ZHI_SUN.name());
BigDecimal zhiSunAmount = cashBal.multiply(new BigDecimal(zhiSunPercent));
log.info("预期亏损金额: {}", zhiSunAmount);
@@ -104,14 +105,14 @@
}
}
- BigDecimal ordFrozImr = PositionsWs.POSITIONSWSMAP.get("imr");
+ BigDecimal ordFrozImr = ObjectUtil.isEmpty(PositionsWs.POSITIONSWSMAP.get("imr")) ? BigDecimal.ZERO : PositionsWs.POSITIONSWSMAP.get("imr");
if (BigDecimal.ZERO.compareTo( ordFrozImr) >= 0) {
log.error("占用保证金为零,进行初始化订单");
WsMapBuild.saveStringToMap(InstrumentsWs.INSTRUMENTSWSMAP, CoinEnums.STATE.name(), OrderParamEnums.STATE_4.getValue());
return OrderParamEnums.INIT.getValue();
}
// 判断是否保证金超标
- BigDecimal totalOrderUsdt = WsMapBuild.parseBigDecimalSafe(CoinEnums.TOTAL_ORDER_USDT.name());
+ BigDecimal totalOrderUsdt = WsMapBuild.parseBigDecimalSafe(InstrumentsWs.INSTRUMENTSWSMAP.get(CoinEnums.TOTAL_ORDER_USDT.name()));
if (ordFrozImr.compareTo(totalOrderUsdt) >= 0){
log.error("已满仓......");
return OrderParamEnums.HOLDING.getValue();
--
Gitblit v1.9.1