Administrator
7 days ago de38155f608f47bd89a58c6790c82bbb4b2c58d8
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);
                            }