| | |
| | | private NamedParameterJdbcOperations namedParameterJdbcTemplate; |
| | | |
| | | @Override |
| | | public void initBySql(String symbol) { |
| | | this.bulidBySql(symbol, Kline.PERIOD_1MIN); |
| | | this.bulidBySql(symbol, Kline.PERIOD_5MIN); |
| | | this.bulidBySql(symbol, Kline.PERIOD_15MIN); |
| | | this.bulidBySql(symbol, Kline.PERIOD_30MIN); |
| | | this.bulidBySql(symbol, Kline.PERIOD_60MIN); |
| | | this.bulidBySql(symbol, Kline.PERIOD_4HOUR); |
| | | this.bulidBySql(symbol, Kline.PERIOD_1DAY); |
| | | this.bulidBySql(symbol, Kline.PERIOD_1MON); |
| | | this.bulidBySql(symbol, Kline.PERIOD_1WEEK); |
| | | } |
| | | |
| | | @Override |
| | | public void init(String symbol) { |
| | | this.bulid(symbol, Kline.PERIOD_1MIN); |
| | | this.bulid(symbol, Kline.PERIOD_5MIN); |
| | |
| | | this.bulidInit(symbol, Kline.PERIOD_1DAY); |
| | | this.bulidInit(symbol, Kline.PERIOD_1MON); |
| | | this.bulidInit(symbol, Kline.PERIOD_1WEEK); |
| | | |
| | | } |
| | | |
| | | public void bulidBySql(String symbol, String line) { |
| | | RequestDataHelper.set("symbol", symbol); |
| | | LambdaQueryWrapper<Kline> queryWrapper = new LambdaQueryWrapper<Kline>() |
| | | .eq(Kline::getSymbol, symbol) |
| | | .eq(Kline::getPeriod, line) |
| | | .orderByAsc(Kline::getTs); |
| | | List<Kline> list = klineDBService.list(queryWrapper); |
| | | |
| | | KlineTimeObject model = new KlineTimeObject(); |
| | | Collections.sort(list); // 按时间升序 |
| | | model.setKline(list); |
| | | model.setLastTime(new Date()); |
| | | DataCache.putKline(symbol, line, model); |
| | | RequestDataHelper.clear(); |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | @Override |
| | | public void saveOne(String symbol, String line) { |
| | | RequestDataHelper.set("symbol", symbol); |
| | | saveOneByHuoBi(symbol, line); |
| | | /*RequestDataHelper.set("symbol", symbol); |
| | | Realtime realtime = DataCache.getRealtime(symbol); |
| | | if (realtime == null) { |
| | | logger.error("saveOne error, realtime is null,symbol [" + symbol + "]"); |
| | |
| | | |
| | | String key = symbol + "_" + line; |
| | | Kline hobiOne = DataCache.getKline_hobi().get(key); |
| | | /*if (hobiOne == null || lastOne == null) { |
| | | *//*if (hobiOne == null || lastOne == null) { |
| | | logger.error("saveOne error, hobiOne is null,symbol [" + symbol + "]"); |
| | | // 取不到远程数据,直接退出 |
| | | return; |
| | | }*/ |
| | | }*//* |
| | | RequestDataHelper.set("symbol", symbol); |
| | | Kline kline = this.bulidKline(realtime, lastOne, null, line); |
| | | kline.setPeriod(line); |
| | |
| | | timeObject.getKline().add(kline); |
| | | timeObject.setLastTime(new Date()); |
| | | DataCache.putKline(symbol, line, timeObject); |
| | | RequestDataHelper.clear(); |
| | | RequestDataHelper.clear();*/ |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void saveOneByHuoBi(String symbol, String line) { |
| | | RequestDataHelper.set("symbol", symbol); |
| | | List<Kline> list = hobiDataService.kline(itemService.findBySymbol(symbol).getSymbol(), line, 2, |
| | | 0); |
| | | if (list == null || list.isEmpty()) { |
| | | return; |
| | | } |
| | | Kline kline = list.get(0); |
| | | BigDecimal currentValue = AdjustmentValueCache.getCurrentValue().get(symbol); |
| | | if (currentValue != null && currentValue.compareTo(BigDecimal.ZERO) > 0) { |
| | | if (!kline.isAdjusted()){ |
| | | kline.setClose(kline.getClose().add(currentValue)); |
| | | kline.setOpen(kline.getOpen().add(currentValue)); |
| | | kline.setLow(kline.getLow().add(currentValue)); |
| | | kline.setHigh(kline.getHigh().add(currentValue)); |
| | | kline.setAdjusted(true); |
| | | } |
| | | } |
| | | klineDBService.save(kline); |
| | | KlineTimeObject timeObject = DataCache.getKline(symbol, line); |
| | | if (timeObject == null) { |
| | | timeObject = new KlineTimeObject(); |
| | | } |
| | | timeObject.getKline().add(kline); |
| | | timeObject.setLastTime(new Date()); |
| | | DataCache.putKline(symbol, line, timeObject); |
| | | RequestDataHelper.clear(); |
| | | } |
| | | |
| | | public Kline bulidKline(Realtime realtime, Kline lastOne, Kline hobiOne, String line) { |
| | |
| | | |
| | | if (lastOne != null) { |
| | | kline.setOpen(lastOne.getClose()); |
| | | kline.setHigh(lastOne.getHigh()); |
| | | kline.setLow(lastOne.getLow()); |
| | | kline.setHigh(lastOne.getClose()); |
| | | kline.setLow(lastOne.getClose()); |
| | | |
| | | if (realtime.getClose().compareTo(kline.getHigh()) > 0) { |
| | | kline.setHigh(realtime.getClose()); |
| | | } |
| | | if (realtime.getClose().compareTo(kline.getOpen()) < 0) { |
| | | if (realtime.getClose().compareTo(kline.getLow()) < 0) { |
| | | kline.setLow(realtime.getClose()); |
| | | } |
| | | } |