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