From 4c2987e3566f34087aa6251006b78326b4973dd9 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 08 Jun 2026 11:04:54 +0800
Subject: [PATCH] fix(gateApi): 修复网格交易盈亏计算逻辑
---
src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java | 9 +++++----
1 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
index b1c496b..1076394 100644
--- a/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
+++ b/src/main/java/com/xcong/excoin/modules/gateApi/GateGridTradeService.java
@@ -1598,14 +1598,15 @@
BigDecimal totalEquity = unrealisedPnl.add(available);
// 估算平仓手续费:(多仓张数+空仓张数) × 合约面值 × 当前价 × taker费率
- BigDecimal closeContractValue = longPositionSize.add(shortPositionSize)
- .multiply(CT_VAL).multiply(lastKlinePrice != null ? lastKlinePrice : BigDecimal.ZERO);
+ BigDecimal totalSize = longPositionSize.abs().add(shortPositionSize.abs());
+ BigDecimal closeContractValue =
+ totalSize.multiply(CT_VAL).multiply(lastKlinePrice != null ? lastKlinePrice : BigDecimal.ZERO);
BigDecimal estimatedFee = closeContractValue.multiply(TAKER_FEE_RATE);
BigDecimal netEquity = totalEquity.subtract(estimatedFee);
BigDecimal target = initialPrincipal.add(config.getExpectedProfit());
- log.info("[Gate] 盈亏检查 upl:{}, avail:{}, 合计:{}, 估手续费:{}, 净权益:{}, 目标:{}",
- unrealisedPnl, available, totalEquity, estimatedFee, netEquity, target);
+ log.info("[Gate] 盈亏检查,总张数:{}, upl:{}, avail:{}, 合计:{}, 估手续费:{}, 净权益:{}, 目标:{}",
+ totalSize,unrealisedPnl, available, totalEquity, estimatedFee, netEquity, target);
if (netEquity.compareTo(target) > 0) {
log.info("[Gate] 盈亏达标(净权益{}>目标{}),重置策略", netEquity, target);
state = StrategyState.STOPPED;
--
Gitblit v1.9.1