From de704d4f87680600aa03782bcd905487e3e81e5f Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 06 Jan 2026 14:20:50 +0800
Subject: [PATCH] refactor(okxNewPrice): 优化MACD策略日志输出和交易逻辑

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdEmaStrategy.java |   19 ++++++++-----------
 1 files changed, 8 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdEmaStrategy.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdEmaStrategy.java
index d6bab5f..4b4bae2 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdEmaStrategy.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdEmaStrategy.java
@@ -266,8 +266,7 @@
         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);
-        
+
         // 2. 价格必须位于200日EMA上方(多头趋势确认)
         boolean isAboveTrend = latestPrice.compareTo(latestTrendEma) > 0;
         
@@ -280,11 +279,11 @@
         // 5. 底背离检查(增强多头信号可靠性)
         boolean isBottomDivergence = MACDCalculator.isBottomDivergence(closePrices, macdResult);
 
-        log.info("多头信号检查, 价格位于200日EMA上方: {}, 金叉: {}, MACD柱状线由负转正: {}, 底背离: {}",
-                isAboveTrend, isGoldenCross, isMacdHistTurningPositive, isBottomDivergence);
+        log.info("多头信号检查, 200日EMA价格{}位于上方: {}, 金叉: {}, MACD柱状线由负转正: {}, 底背离: {}",
+                latestTrendEma,isAboveTrend, isGoldenCross, isMacdHistTurningPositive, isBottomDivergence);
         
-        // 多头开仓条件:趋势向上 + 金叉 + (柱状线转强或底背离)
-        return isAboveTrend && isGoldenCross && (isMacdHistTurningPositive || isBottomDivergence);
+        // 多头开仓条件:柱状线转强 + 金叉 + (趋势向上或底背离)
+        return isMacdHistTurningPositive && isGoldenCross && ( isAboveTrend|| isBottomDivergence);
     }
 
     /**
@@ -303,8 +302,6 @@
         BigDecimal latestTrendEma = trendEma.get(trendEma.size() - 1);
         BigDecimal latestPrice = closePrices.get(0);
 
-        log.info( "200日EMA:{}, 最新价格:{}", latestTrendEma,  latestPrice);
-        
         // 2. 价格必须位于200日EMA下方(空头趋势确认)
         boolean isBelowTrend = latestPrice.compareTo(latestTrendEma) < 0;
         
@@ -317,11 +314,11 @@
         // 5. 顶背离检查(增强空头信号可靠性)
         boolean isTopDivergence = MACDCalculator.isTopDivergence(closePrices, macdResult);
 
-        log.info("空头信号检查, 价格位于200日EMA下方: {}, 死叉: {}, MACD柱状线由正转负: {}, 顶背离: {}",
+        log.info("空头信号检查, 200日EMA价格{}位于下方: {}, 死叉: {}, MACD柱状线由正转负: {}, 顶背离: {}",
                 isBelowTrend, isDeathCross, isMacdHistTurningNegative, isTopDivergence);
         
-        // 空头开仓条件:趋势向下 + 死叉 + (柱状线转弱或顶背离)
-        return isBelowTrend && isDeathCross && (isMacdHistTurningNegative || isTopDivergence);
+        // 空头开仓条件:柱状线转弱 + 死叉 + (趋势向下或顶背离)
+        return isMacdHistTurningNegative && isDeathCross && ( isBelowTrend || isTopDivergence);
     }
 
     // 平仓条件检查方法

--
Gitblit v1.9.1