From dad0b1cd6cd39d2525f23b1b33df19932fc4cddb Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 29 Jun 2026 11:28:27 +0800
Subject: [PATCH] 止损追单逻辑(多仓/空仓对称): 触发 → 查询 → 计算 → 下单 清理:取消相邻网格旧挂单 + 取消最远止盈单 一句话总结:每次止损触发补回 quantity*2 张,但总持仓不超 maxPositionSize,也不再累加放大。
---
src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdMaStrategy.java | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdMaStrategy.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdMaStrategy.java
index 48f80ab..f5ebaf3 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdMaStrategy.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdMaStrategy.java
@@ -11,6 +11,8 @@
import lombok.extern.slf4j.Slf4j;
import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
/**
@@ -264,7 +266,10 @@
*/
private boolean isLongEntryCondition(MACDResult macdResult, List<BigDecimal> closePrices, List<BigDecimal> close1DPrices) {
// 1. 计算200日EMA(趋势过滤)
- List<BigDecimal> trendEma = EMACalculator.calculateEMA(close1DPrices, trendPeriod, true);
+ // 复制并反转日线数据,确保从旧到新计算EMA
+ List<BigDecimal> reversed1DPrices = new ArrayList<>(close1DPrices);
+ Collections.reverse(reversed1DPrices);
+ List<BigDecimal> trendEma = EMACalculator.calculateEMA(reversed1DPrices, trendPeriod, true);
BigDecimal latestTrendEma = trendEma.get(trendEma.size() - 1);
BigDecimal latestPrice = closePrices.get(0);
log.info( "200日EMA:{}, 最新价格:{}", latestTrendEma, latestPrice);
@@ -298,7 +303,10 @@
*/
private boolean isShortEntryCondition(MACDResult macdResult, List<BigDecimal> closePrices, List<BigDecimal> close1DPrices) {
// 1. 计算200日EMA(趋势过滤)
- List<BigDecimal> trendEma = EMACalculator.calculateEMA(close1DPrices, trendPeriod, true);
+ // 复制并反转日线数据,确保从旧到新计算EMA
+ List<BigDecimal> reversed1DPrices = new ArrayList<>(close1DPrices);
+ Collections.reverse(reversed1DPrices);
+ List<BigDecimal> trendEma = EMACalculator.calculateEMA(reversed1DPrices, trendPeriod, true);
BigDecimal latestTrendEma = trendEma.get(trendEma.size() - 1);
BigDecimal latestPrice = closePrices.get(0);
--
Gitblit v1.9.1