Administrator
6 days ago 36c1ee6acf1e2185924ca3fc817c8641d44c4d39
fix(strategy): 修复MACD策略日志输出和网格止损逻辑

- 修复MACD策略中EMA价格变量名错误导致的日志输出问题
- 修复网格止损操作中错误调用开仓方法的问题
- 添加持仓检查逻辑,避免无持仓时执行止损操作
- 添加交易类型设置,确保无持仓时正确处理交易状态
2 files modified
8 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxKlineWebSocketClient.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdEmaStrategy.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxKlineWebSocketClient.java
@@ -375,7 +375,7 @@
                                doOpen(client.getWebSocketClient(),accountName, tradingOrderOpenOpen, closePx);
                            }
                            if (ObjectUtil.isNotEmpty(tradingOrderOpenClose)){
                                doOpen(client.getWebSocketClient(),accountName, tradingOrderOpenClose, closePx);
                                doclose(client.getWebSocketClient(),accountName, tradingOrderOpenClose, closePx);
                            }
                        }
                    }
@@ -405,6 +405,10 @@
        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);
    }
src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MacdEmaStrategy.java
@@ -315,7 +315,7 @@
        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);