Administrator
7 days ago b70f32814aa9dc23ad284b43e91bbc6c96c70366
src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxKlineWebSocketClient.java
@@ -247,6 +247,11 @@
     */
    private void handleWebSocketMessage(String message) {
        try {
            if ("pong".equals(message)) {
                log.debug("{}: 收到心跳响应");
                cancelPongTimeout();
                return;
            }
            JSONObject response = JSON.parseObject(message);
            String event = response.getString("event");
@@ -338,34 +343,25 @@
                    // 创建策略实例
                    MacdMaStrategy strategy = new MacdMaStrategy();
                    // 生成100个15分钟价格数据点
                    // 生成200个1m价格数据点
                    List<Kline> kline1MinuteData = getKlineDataByInstIdAndBar(instId, "1m");
                    List<BigDecimal> historicalPrices1M = kline1MinuteData.stream()
                            .map(Kline::getC)
                            .collect(Collectors.toList());
                    log.info("生成100个1分钟价格数据点成功!");
                    // 使用策略分析最新价格数据
                    MacdMaStrategy.TradingOrder tradingOrderOpen1M = strategy.generateTradingOrder(historicalPrices1M,MacdMaStrategy.OperationType.open.name());
                    if (tradingOrderOpen1M == null ){
                        return;
                    }
                    List<Kline> kline15MinuteData = getKlineDataByInstIdAndBar(instId, "15m");
                    List<BigDecimal> historicalPrices15M = kline15MinuteData.stream()
                    // 生成200个1D价格数据点
                    List<Kline> kline1DayData = getKlineDataByInstIdAndBar(instId, "1D");
                    List<BigDecimal> historicalPrices1D = kline1DayData.stream()
                            .map(Kline::getC)
                            .collect(Collectors.toList());
                    // 使用策略分析最新价格数据
                    MacdMaStrategy.TradingOrder tradingOrderOpen15M = strategy.generateTradingOrder(historicalPrices15M,MacdMaStrategy.OperationType.open.name());
                    if (tradingOrderOpen15M == null ){
                    MacdMaStrategy.TradingOrder tradingOrderOpen1M = strategy.generateTradingOrder(historicalPrices1M,historicalPrices1D,MacdMaStrategy.OperationType.open.name());
                    if (tradingOrderOpen1M == null ){
                        return;
                    }
                    if (!tradingOrderOpen1M.getPosSide().equals(tradingOrderOpen15M.getPosSide())){
                    if (historicalPrices1D == null ){
                        return;
                    }
                    log.info("1分钟和15分钟K线方向一致,开始执行交易操作!");
                    Collection<OkxQuantWebSocketClient> allClients = clientManager.getAllClients();
                    //如果为空,则直接返回
@@ -412,8 +408,6 @@
            requestParam.put("bar", bar);
            requestParam.put("limit", "200");
            String result = ExchangeLoginService.getInstance(ExchangeInfoEnum.OKX_UAT.name()).lineHistory(requestParam);
            log.info("加载OKX-KLINE,{}", result);
            JSONObject json = JSON.parseObject(result);
            String data = json.getString("data");
            
@@ -515,9 +509,7 @@
    private void sendPing() {
        try {
            if (webSocketClient != null && webSocketClient.isOpen()) {
                JSONObject ping = new JSONObject();
                ping.put("op", "ping");
                webSocketClient.send(ping.toJSONString());
                webSocketClient.send("ping");
                log.debug("发送ping请求");
            }
        } catch (Exception e) {