| | |
| | | // 1. 计算MACD指标 |
| | | MACDResult macdResult = MACDCalculator.calculateMACD( |
| | | closePrices, shortPeriod, longPeriod, signalPeriod); |
| | | log.info( "MACD计算结果:{}", macdResult.getMacdData().get( macdResult.getMacdData().size() -1)); |
| | | |
| | | |
| | | // 2. 计算波动率 |
| | | Volatility volatility = new Volatility(volatilityPeriod); |
| | |
| | | |
| | | // 5. 底背离检查(增强多头信号可靠性) |
| | | boolean isBottomDivergence = MACDCalculator.isBottomDivergence(closePrices, macdResult); |
| | | |
| | | log.info("多头信号形成, MACD有利状态: {}, 柱状线为正: {}, 波动率过滤: {}, 底背离: {}", |
| | | isMacdFavorable, macdPositive, volatilityFilter, isBottomDivergence); |
| | | |
| | | // 所有条件必须同时满足 |
| | | boolean result = macdPositive && volatilityFilter && (isMacdFavorable || isBottomDivergence); |
| | | |
| | | if (result) { |
| | | log.info("多头信号形成, MACD有利状态: {}, 柱状线为正: {}, 波动率过滤: {}, 底背离: {}", |
| | | isMacdFavorable, macdPositive, volatilityFilter, isBottomDivergence); |
| | | } |
| | | |
| | | return result; |
| | | } |
| | |
| | | |
| | | // 5. 顶背离检查(增强空头信号可靠性) |
| | | boolean isTopDivergence = MACDCalculator.isTopDivergence(closePrices, macdResult); |
| | | |
| | | |
| | | log.info("空头信号形成, MACD有利状态: {}, 柱状线为负: {}, 波动率过滤: {}, 顶背离: {}", |
| | | isMacdFavorable, macdNegative, volatilityFilter, isTopDivergence); |
| | | // 所有条件必须同时满足 |
| | | boolean result = macdNegative && volatilityFilter && (isMacdFavorable || isTopDivergence); |
| | | |
| | | if (result) { |
| | | log.info("空头信号形成, MACD有利状态: {}, 柱状线为负: {}, 波动率过滤: {}, 顶背离: {}", |
| | | isMacdFavorable, macdNegative, volatilityFilter, isTopDivergence); |
| | | } |
| | | |
| | | return result; |
| | | } |