xiaoyong931011
2022-02-25 89b7fb1d316cfce7eb98a27c8d668da493933f7f
src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java
@@ -3,6 +3,7 @@
import com.alibaba.fastjson.JSON;
import com.huobi.client.model.Candlestick;
import com.xcong.excoin.common.contants.AppContants;
import com.xcong.excoin.trade.ExchangeTrade;
import com.xcong.excoin.utils.RedisUtils;
import lombok.ToString;
@@ -314,11 +315,11 @@
        Candlestick kLine = new Candlestick();
        kLine.setTimestamp(endTick);
        kLine.setAmount(BigDecimal.ZERO);
        kLine.setClose(BigDecimal.ZERO);
        kLine.setLow(BigDecimal.ZERO);
        kLine.setOpen(BigDecimal.ZERO);
        kLine.setClose(AppContants.DEFAULT_PRICE);
        kLine.setLow(AppContants.DEFAULT_PRICE);
        kLine.setOpen(AppContants.DEFAULT_PRICE);
        kLine.setVolume(BigDecimal.ZERO);
        kLine.setHigh(BigDecimal.ZERO);
        kLine.setHigh(AppContants.DEFAULT_PRICE);
        String rangeUnit = "";
        if (field == Calendar.MINUTE) {
            rangeUnit = "min";
@@ -339,10 +340,24 @@
        }
        // 如果开盘价为0,则设置为前一个价格
        if(kLine.getOpen().compareTo(BigDecimal.ZERO) == 0) {
           kLine.setOpen(coinThumb.getClose());
           kLine.setClose(coinThumb.getClose());
           kLine.setLow(coinThumb.getClose());
           kLine.setHigh(coinThumb.getClose());
            // 查询前一根K线 TODO
            String key = "KINE_" + symbol + "/USDT_" + period;
            Object data = redisUtils.get(key);
            List list = new ArrayList();
            if (data != null) {
                list = (List) data;
                Candlestick o = (Candlestick)list.get(list.size() - 1);
                kLine.setOpen(o.getClose());
                kLine.setClose(o.getClose());
                kLine.setLow(o.getClose());
                kLine.setHigh(o.getClose());
            }else{
                kLine.setOpen(coinThumb.getClose());
                kLine.setClose(coinThumb.getClose());
                kLine.setLow(coinThumb.getClose());
                kLine.setHigh(coinThumb.getClose());
            }
        }
        //logger.info("generate " + range + rangeUnit + " kline in {},data={}", df.format(new Date(kLine.getTimestamp())), JSON.toJSONString(kLine));
        service.saveKLine(symbol,period, kLine);
@@ -367,7 +382,7 @@
            kLine.setLow(kLine.getClose());
            kLine.setHigh(kLine.getClose());
            kLine.setVolume(BigDecimal.ZERO);
            redisUtils.set("ROC/USDT",kLine);
            redisUtils.set("GRICE/USDT",kLine);
        }
    }