fix(strategy): 修复MACD策略日志输出和网格止损逻辑
- 修复MACD策略中EMA价格变量名错误导致的日志输出问题
- 修复网格止损操作中错误调用开仓方法的问题
- 添加持仓检查逻辑,避免无持仓时执行止损操作
- 添加交易类型设置,确保无持仓时正确处理交易状态
| | |
| | | doOpen(client.getWebSocketClient(),accountName, tradingOrderOpenOpen, closePx); |
| | | } |
| | | if (ObjectUtil.isNotEmpty(tradingOrderOpenClose)){ |
| | | doOpen(client.getWebSocketClient(),accountName, tradingOrderOpenClose, closePx); |
| | | doclose(client.getWebSocketClient(),accountName, tradingOrderOpenClose, closePx); |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | String positionAccountName = PositionsWs.initAccountName(accountName, posSide); |
| | | BigDecimal pos = PositionsWs.getAccountMap(positionAccountName).get("pos"); |
| | | if (BigDecimal.ZERO.compareTo( pos) >= 0) { |
| | | log.error("历史网格止损方向没有持仓"); |
| | | tradeRequestParam.setTradeType(OrderParamEnums.TRADE_NO.getValue()); |
| | | } |
| | | tradeRequestParam.setSz(String.valueOf(pos)); |
| | | TradeOrderWs.orderZhiYingZhiSunEventNoState(webSocketClient, tradeRequestParam); |
| | | } |
| | |
| | | boolean isTopDivergence = MACDCalculator.isTopDivergence(closePrices, macdResult); |
| | | |
| | | log.info("空头信号检查, 200日EMA价格{}位于下方: {}, 死叉: {}, MACD柱状线由正转负: {}, 顶背离: {}", |
| | | isBelowTrend, isDeathCross, isMacdHistTurningNegative, isTopDivergence); |
| | | latestTrendEma,isBelowTrend, isDeathCross, isMacdHistTurningNegative, isTopDivergence); |
| | | |
| | | // 空头开仓条件:柱状线转弱 + 死叉 + (趋势向下或顶背离) |
| | | return isMacdHistTurningNegative && isDeathCross && ( isBelowTrend || isTopDivergence); |