src/main/java/com/xcong/excoin/modules/symbols/service/impl/SymbolsServiceImpl.java
@@ -66,6 +66,46 @@ return client; } // @Override // public void updateSymbolsKine(String time) { // synchronized (this) { // //更新币币交易K线历史数据 // for (SymbolEnum symbol : SymbolEnum.values()) { // try { // Thread.sleep(500); // } catch (InterruptedException e) { // e.printStackTrace(); // } // String[] symbols = symbol.getValue().toLowerCase().split("/"); // ApiClient client = getClient(); // KlineResponse kline = client.kline(symbols[0] + symbols[1], time, 1000 + ""); // if (kline != null) { // if ("ok".equalsIgnoreCase(kline.getStatus())) { // List<Kline> klines = (List<Kline>) kline.data; // List<Candlestick> list = new ArrayList<Candlestick>(); // Candlestick candlestick = null; // for (Kline kline1 : klines) { // candlestick = new Candlestick(); // candlestick.setAmount(BigDecimal.valueOf(kline1.getAmount())); // candlestick.setClose(BigDecimal.valueOf(kline1.getClose())); // candlestick.setCount(kline1.getCount()); // candlestick.setHigh(BigDecimal.valueOf(kline1.getHigh())); // candlestick.setLow(BigDecimal.valueOf(kline1.getLow())); // candlestick.setVolume(BigDecimal.valueOf(kline1.getVol())); // candlestick.setTimestamp(kline1.getId() * 1000); // candlestick.setOpen(BigDecimal.valueOf(kline1.getOpen())); // list.add(candlestick); // } // // if (klines.size() > 0) { // redisUtils.set("KINE_" + symbol.getValue() + "_" + time, list); // } // } // } // } // } // } @Override public void updateSymbolsKine(String time) { synchronized (this) { @@ -77,30 +117,20 @@ e.printStackTrace(); } String[] symbols = symbol.getValue().toLowerCase().split("/"); ApiClient client = getClient(); KlineResponse kline = client.kline(symbols[0] + symbols[1], time, 1000 + ""); if (kline != null) { if ("ok".equalsIgnoreCase(kline.getStatus())) { List<Kline> klines = (List<Kline>) kline.data; List<Candlestick> list = new ArrayList<Candlestick>(); Candlestick candlestick = null; for (Kline kline1 : klines) { candlestick = new Candlestick(); candlestick.setAmount(BigDecimal.valueOf(kline1.getAmount())); candlestick.setClose(BigDecimal.valueOf(kline1.getClose())); candlestick.setCount(kline1.getCount()); candlestick.setHigh(BigDecimal.valueOf(kline1.getHigh())); candlestick.setLow(BigDecimal.valueOf(kline1.getLow())); candlestick.setVolume(BigDecimal.valueOf(kline1.getVol())); candlestick.setTimestamp(kline1.getId() * 1000); candlestick.setOpen(BigDecimal.valueOf(kline1.getOpen())); list.add(candlestick); } if (klines.size() > 0) { redisUtils.set("KINE_" + symbol.getValue() + "_" + time, list); } } String instId = symbols[0] +"-"+ symbols[1]; String bar = time; LinkedHashMap<String, Object> requestParam = new LinkedHashMap<>(); requestParam.put("instId",instId); requestParam.put("bar",bar); requestParam.put("limit","300"); String result = ExchangeLoginService.getInstance(ExchangeInfoEnum.OKX_UAT.name()).lineHistory(requestParam); log.info("加载OKX-KLINE,{}", result); JSONObject json = JSON.parseObject(result); String data = json.getString("data"); List<String[]> klinesList = JSON.parseArray(data, String[].class); if (klinesList != null) { redisUtils.set("KINE_" + instId + "_" + time, klinesList); } } } src/main/java/com/xcong/excoin/quartz/job/KlineDataUpdateJob.java
@@ -21,133 +21,76 @@ private SymbolsService symbolsService; private static boolean min1 = true; private static boolean min5 = true; private static boolean min30 = true; private static boolean min60 = true; private static boolean hour4 = true; private static boolean day1 = true; private static boolean week = true; /** * 定时更新每一分钟的K线数据 */ @Scheduled(cron = "0/1 * * * * ? ") @Scheduled(cron = "0/10 * * * * ? ") public void updateSymbolsKineOneMin() { if (min1) { min1 = false; try { symbolsService.updateSymbolsKine("1min"); } catch (Exception e) { // e.printStackTrace(); } finally { min1 = true; } } symbolsService.updateSymbolsKine("1m"); } /** * 定时更新每十分钟的K线数据 * 定时更新每5分钟的K线数据 */ @Scheduled(cron = "0/10 * * * * ? ") @Scheduled(cron = "0 0/5 * * * ?") public void updateSymbolsKineFiveMin() { if (min5) { min5 = false; try { symbolsService.updateSymbolsKine("5min"); } catch (Exception e) { //e.printStackTrace(); } finally { min5 = true; } } symbolsService.updateSymbolsKine("5m"); } /** * 定时更新每30分钟的K线数据 */ @Scheduled(cron = "0/120 * * * * ? ") @Scheduled(cron = "0 0/15 * * * ?") public void updateSymbolsKineMin() { if (min30) { min30 = false; try { symbolsService.updateSymbolsKine("30min"); } catch (Exception e) { //e.printStackTrace(); } finally { min30 = true; } } symbolsService.updateSymbolsKine("15m"); } /** * 定时更新每30分钟的K线数据 */ @Scheduled(cron = "0 0/30 * * * ?") public void updateSymbolsKineMin30() { symbolsService.updateSymbolsKine("30m"); } /** * 定时更新1小时的K线数据 */ @Scheduled(cron = "* 0/2 * * * ? ") @Scheduled(cron = "0 0 * * * ?") public void updateSymbolsKineOneHour() { if (min60) { min60 = false; try { symbolsService.updateSymbolsKine("60min"); } catch (Exception e) { //e.printStackTrace(); } finally { min60 = true; } } symbolsService.updateSymbolsKine("1H"); } /** * 定时更新4小时的K线数据 * 定时更新1小时的K线数据 */ @Scheduled(cron = "* 0/1 * * * ? ") public void updateSymbolsKineFourHour() { if (hour4) { hour4 = false; try { symbolsService.updateSymbolsKine("4hour"); } catch (Exception e) { //e.printStackTrace(); } finally { hour4 = true; } } @Scheduled(cron = "0 0 * * * ?") public void updateSymbolsKineTwoHour() { symbolsService.updateSymbolsKine("2H"); } /** * 定时更新1小时的K线数据 */ @Scheduled(cron = "0 0 * * * ?") public void updateSymbolsKinefourHour() { symbolsService.updateSymbolsKine("4H"); } /** * 定时更新1天的K线数据 */ @Scheduled(cron = "* 0/1 * * * ? ") @Scheduled(cron = "0 0 * * * ?") public void updateSymbolsKineOneDay() { if (day1) { day1 = false; try { symbolsService.updateSymbolsKine("1day"); } catch (Exception e) { //e.printStackTrace(); } finally { day1 = true; } } symbolsService.updateSymbolsKine("1D"); } /** * 定时更新1周的K线数据 * 定时更新1天的K线数据 */ @Scheduled(cron = "* 0/1 * * * ? ") @Scheduled(cron = "0 0 * * * ?") public void updateSymbolsKineOneWeek() { if (week) { week = false; try { symbolsService.updateSymbolsKine("1week"); } catch (Exception e) { // e.printStackTrace(); } finally { week = true; } } symbolsService.updateSymbolsKine("1W"); } } src/main/resources/application-app.yml
@@ -93,7 +93,7 @@ app: debug: false redis_expire: 3000 kline-update-job: false kline-update-job: true newest-price-update-job: false #日线 该任务不能与最新价处于同一个服务器 day-line: false