From de38155f608f47bd89a58c6790c82bbb4b2c58d8 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 05 Jan 2026 16:40:37 +0800
Subject: [PATCH] fix(okxNewPrice): 解决K线数据处理中的数组越界问题

---
 src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxKlineWebSocketClient.java |   27 +++++++++++++++++----------
 1 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxKlineWebSocketClient.java b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxKlineWebSocketClient.java
index ce35d29..33e270f 100644
--- a/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxKlineWebSocketClient.java
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/OkxKlineWebSocketClient.java
@@ -7,6 +7,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.xcong.excoin.modules.blackchain.service.DateUtil;
 import com.xcong.excoin.modules.okxNewPrice.celue.CaoZuoService;
 import com.xcong.excoin.modules.okxNewPrice.indicator.TradingStrategy;
 import com.xcong.excoin.modules.okxNewPrice.indicator.macdAndMatrategy.MacdMaStrategy;
@@ -333,6 +334,8 @@
                 BigDecimal lowPx = new BigDecimal(data.getString(3));
                 BigDecimal closePx = new BigDecimal(data.getString(4));
                 BigDecimal vol = new BigDecimal(data.getString(5));
+                //ts	String	开始时间,Unix时间戳的毫秒数格式,如 1597026383085 转日期:2020-08-07 15:13:03.085
+                String time = DateUtil.TimeStampToDateTime(Long.parseLong(data.getString(0)));
                 /**
                  * K线状态
                  * 0:K线未完结
@@ -340,6 +343,7 @@
                  */
                 String confirm = data.getString(8);
                 if ("1".equals(confirm)){
+                    log.info("{}K线已完结{}:{}",time,closePx,instId);
                     //调用策略
                     // 创建策略实例
                     MacdMaStrategy strategy = new MacdMaStrategy();
@@ -350,7 +354,7 @@
                             .map(Kline::getC)
                             .collect(Collectors.toList());
 
-                    log.info("1m:{}", JSONUtil.parse( kline1MinuteData));
+                    log.info("1m:{}", JSONUtil.parse( historicalPrices1M));
 
                     // 生成200个1D价格数据点
                     List<Kline> kline1DayData = getKlineDataByInstIdAndBar(instId, "1D");
@@ -421,16 +425,19 @@
                     for (String[] s : klinesList) {
                         // 确保数组有足够的元素
                         if (s != null && s.length >= 9) {
+                            String s1 = s[8];
                             try {
-                                Kline kline = new Kline();
-                                kline.setTs(s[0]);
-                                kline.setO(new BigDecimal(s[1]));
-                                kline.setH(new BigDecimal(s[2]));
-                                kline.setL(new BigDecimal(s[3]));
-                                kline.setC(new BigDecimal(s[4]));
-                                kline.setVol(new BigDecimal(s[5]));
-                                kline.setConfirm(s[8]);
-                                klineList.add(kline);
+                                if ("1".equals(s1)){
+                                    Kline kline = new Kline();
+                                    kline.setTs(s[0]);
+                                    kline.setO(new BigDecimal(s[1]));
+                                    kline.setH(new BigDecimal(s[2]));
+                                    kline.setL(new BigDecimal(s[3]));
+                                    kline.setC(new BigDecimal(s[4]));
+                                    kline.setVol(new BigDecimal(s[5]));
+                                    kline.setConfirm(s[8]);
+                                    klineList.add(kline);
+                                }
                             } catch (NumberFormatException e) {
                                 log.error("K线数据转换为BigDecimal失败: {}", Arrays.toString(s), e);
                             }

--
Gitblit v1.9.1