From 286ea89f5f6cade73276f865effa5dcd2b19406d Mon Sep 17 00:00:00 2001 From: zainali5120 <512061637@qq.com> Date: Fri, 25 Sep 2020 15:19:11 +0800 Subject: [PATCH] 撮合交易代码提交 --- src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java | 32 +++++++++++++++++++------------- 1 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java b/src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java index ca6dc28..3953174 100644 --- a/src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java +++ b/src/main/java/com/xcong/excoin/processor/DefaultCoinProcessor.java @@ -62,7 +62,7 @@ calendar.set(Calendar.HOUR_OF_DAY, 0); long firstTimeOfToday = calendar.getTimeInMillis(); String period = "1min"; - logger.info("initializeThumb from {} to {}", firstTimeOfToday, nowTime); + //logger.info("initializeThumb from {} to {}", firstTimeOfToday, nowTime); List<Candlestick> lines = service.findAllKLine(this.symbol, firstTimeOfToday, nowTime, period); coinThumb = new CoinThumb(); synchronized (coinThumb) { @@ -202,7 +202,7 @@ //处理K线 processTrade(currentKLine, exchangeTrade); //处理今日概况信息 - logger.debug("处理今日概况信息"); + //logger.debug("处理今日概况信息"); handleThumb(exchangeTrade); //存储并推送成交信息 handleTradeStorage(exchangeTrade); @@ -212,7 +212,7 @@ } public void processTrade(Candlestick kLine, ExchangeTrade exchangeTrade) { - if (kLine.getClose().compareTo(BigDecimal.ZERO) == 0) { + if (kLine.getClose()==null || kLine.getClose().compareTo(BigDecimal.ZERO)==0) { //第一次设置K线值 kLine.setOpen(exchangeTrade.getPrice()); kLine.setHigh(exchangeTrade.getPrice()); @@ -224,15 +224,19 @@ kLine.setClose(exchangeTrade.getPrice()); } kLine.setCount(kLine.getCount() + 1); - kLine.setVolume(kLine.getVolume().add(exchangeTrade.getAmount())); + if(kLine.getVolume()==null){ + kLine.setVolume(BigDecimal.ZERO); + } + kLine.setAmount(kLine.getVolume().add(exchangeTrade.getAmount())); BigDecimal turnover = exchangeTrade.getPrice().multiply(exchangeTrade.getAmount()); - // kLine.setTurnover(kLine.getTurnover().add(turnover)); + kLine.setVolume(kLine.getVolume().add(turnover)); + //kLine.setTimestamp(System.currentTimeMillis()); } public void handleTradeStorage(ExchangeTrade exchangeTrade) { - for (MarketHandler storage : handlers) { - storage.handleTrade(symbol, exchangeTrade, coinThumb); - } +// for (MarketHandler storage : handlers) { +// storage.handleTrade(symbol, exchangeTrade, coinThumb); +// } } public void handleKLineStorage(Candlestick kLine) { @@ -243,7 +247,7 @@ } public void handleThumb(ExchangeTrade exchangeTrade) { - logger.info("handleThumb symbol = {}", this.symbol); + //logger.info("handleThumb symbol = {}", this.symbol); synchronized (coinThumb) { if (coinThumb.getOpen().compareTo(BigDecimal.ZERO) == 0) { //第一笔交易记为开盘价 @@ -265,7 +269,7 @@ coinThumb.setChg(change.divide(coinThumb.getLow(), 4, BigDecimal.ROUND_UP)); } if ("USDT".equalsIgnoreCase(baseCoin)) { - logger.info("setUsdRate", exchangeTrade.getPrice()); + // logger.info("setUsdRate", exchangeTrade.getPrice()); coinThumb.setUsdRate(exchangeTrade.getPrice()); } else { @@ -304,7 +308,7 @@ calendar.add(field, -range); String fromTime = df.format(calendar.getTime()); long startTick = calendar.getTimeInMillis(); - System.out.println("time range from " + fromTime + " to " + endTime); + //System.out.println("time range from " + fromTime + " to " + endTime); List<ExchangeTrade> exchangeTrades = service.findTradeByTimeRange(this.symbol, startTick, endTick); Candlestick kLine = new Candlestick(); @@ -340,7 +344,7 @@ 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)); + //logger.info("generate " + range + rangeUnit + " kline in {},data={}", df.format(new Date(kLine.getTimestamp())), JSON.toJSONString(kLine)); service.saveKLine(symbol,period, kLine); // 生成一个对应的新K线 后续的交易会更新这个最新K线数据 Candlestick newKline = new Candlestick(); @@ -352,11 +356,13 @@ newKline.setOpen(kLine.getClose()); newKline.setVolume(BigDecimal.ZERO); newKline.setHigh(kLine.getClose()); + calendar.add(field, 2*range); + newKline.setTimestamp(calendar.getTimeInMillis()); currentKlineMap.put(period,newKline); // 存储昨日K线 if("day".equals(rangeUnit)){ - redisUtils.set("NEKK/USDT",kLine); + redisUtils.set("ROC/USDT",kLine); } } -- Gitblit v1.9.1