| | |
| | | |
| | | @Override |
| | | public List<Kline> kline(String symbol, String line) { |
| | | Item bySymbol = itemService.findBySymbol(symbol); |
| | | if(Item.cryptos.equals(bySymbol.getType())){ |
| | | return klineCryptos(symbol, line); |
| | | } |
| | | KlineTimeObject timeObject = DataCache.getKline(symbol, line); |
| | | List<Kline> list = new ArrayList<Kline>(); |
| | | if (timeObject != null) { |
| | |
| | | List<Kline> list_clone = new ArrayList<Kline>(); |
| | | try { |
| | | for (int i = 0; i < list.size(); i++) { |
| | | if(list.get(i) == null){ |
| | | if (list.get(i) == null) { |
| | | continue; |
| | | } |
| | | Kline kline = (Kline) list.get(i).clone(); |
| | |
| | | } |
| | | |
| | | Realtime realtime = DataCache.getLatestRealTime(symbol); |
| | | if (realtime != null) { |
| | | Kline kline = null; |
| | | if (KlineConstant.PERIOD_1MIN.equals(line)) { |
| | | kline = klineService.bulidKline1Minute(realtime, KlineConstant.PERIOD_1MIN); |
| | | } else if (KlineConstant.PERIOD_5MIN.equals(line)) { |
| | | kline = klineService.bulidKline5Minute(realtime, KlineConstant.PERIOD_5MIN); |
| | | } else if (KlineConstant.PERIOD_15MIN.equals(line)) { |
| | | kline = klineService.bulidKline15Minute(realtime, KlineConstant.PERIOD_15MIN); |
| | | } else if (KlineConstant.PERIOD_30MIN.equals(line)) { |
| | | kline = klineService.bulidKline30Minute(realtime, KlineConstant.PERIOD_30MIN); |
| | | } else if (KlineConstant.PERIOD_60MIN.equals(line)) { |
| | | kline = klineService.bulidKline60Minute(realtime, KlineConstant.PERIOD_60MIN); |
| | | } else if (KlineConstant.PERIOD_4HOUR.equals(line)) { |
| | | kline = klineService.bulidKline4Hour(realtime, KlineConstant.PERIOD_4HOUR); |
| | | } else if (KlineConstant.PERIOD_1DAY.equals(line)) { |
| | | kline = klineService.bulidKline1Day(realtime, KlineConstant.PERIOD_1DAY); |
| | | } else if (KlineConstant.PERIOD_5DAY.equals(line)) { |
| | | kline = klineService.bulidKline5Day(realtime, KlineConstant.PERIOD_5DAY); |
| | | } else if (KlineConstant.PERIOD_1WEEK.equals(line)) { |
| | | kline = klineService.bulidKline1Week(realtime, KlineConstant.PERIOD_1WEEK); |
| | | } else if (KlineConstant.PERIOD_1MON.equals(line)) { |
| | | kline = klineService.bulidKline1Mon(realtime, KlineConstant.PERIOD_1MON); |
| | | } else if (KlineConstant.PERIOD_QUARTER.equals(line)) { |
| | | kline = klineService.bulidKline1Mon(realtime, KlineConstant.PERIOD_QUARTER); |
| | | } else if (KlineConstant.PERIOD_YEAR.equals(line)) { |
| | | kline = klineService.bulidKline1Mon(realtime, KlineConstant.PERIOD_YEAR); |
| | | } |
| | | if (null != kline) { |
| | | list_clone.add(kline); |
| | | } |
| | | if (realtime == null) { |
| | | realtime = DataCache.getRealtime(symbol); |
| | | } |
| | | // 按时间升序 |
| | | if (realtime != null) { |
| | | appendOrReplaceKline(list_clone, buildCurrentKline(realtime, line)); |
| | | } |
| | | Collections.sort(list_clone); |
| | | return list_clone; |
| | | } |
| | | |
| | | private Kline buildCurrentKline(Realtime realtime, String line) { |
| | | if (KlineConstant.PERIOD_1MIN.equals(line)) { |
| | | return klineService.bulidKline1Minute(realtime, KlineConstant.PERIOD_1MIN); |
| | | } else if (KlineConstant.PERIOD_5MIN.equals(line)) { |
| | | return klineService.bulidKline5Minute(realtime, KlineConstant.PERIOD_5MIN); |
| | | } else if (KlineConstant.PERIOD_15MIN.equals(line)) { |
| | | return klineService.bulidKline15Minute(realtime, KlineConstant.PERIOD_15MIN); |
| | | } else if (KlineConstant.PERIOD_30MIN.equals(line)) { |
| | | return klineService.bulidKline30Minute(realtime, KlineConstant.PERIOD_30MIN); |
| | | } else if (KlineConstant.PERIOD_60MIN.equals(line)) { |
| | | return klineService.bulidKline60Minute(realtime, KlineConstant.PERIOD_60MIN); |
| | | } else if (KlineConstant.PERIOD_4HOUR.equals(line)) { |
| | | return klineService.bulidKline4Hour(realtime, KlineConstant.PERIOD_4HOUR); |
| | | } else if (KlineConstant.PERIOD_1DAY.equals(line)) { |
| | | return klineService.bulidKline1Day(realtime, KlineConstant.PERIOD_1DAY); |
| | | } else if (KlineConstant.PERIOD_5DAY.equals(line)) { |
| | | return klineService.bulidKline5Day(realtime, KlineConstant.PERIOD_5DAY); |
| | | } else if (KlineConstant.PERIOD_1WEEK.equals(line)) { |
| | | return klineService.bulidKline1Week(realtime, KlineConstant.PERIOD_1WEEK); |
| | | } else if (KlineConstant.PERIOD_1MON.equals(line)) { |
| | | return klineService.bulidKline1Mon(realtime, KlineConstant.PERIOD_1MON); |
| | | } else if (KlineConstant.PERIOD_QUARTER.equals(line)) { |
| | | return klineService.bulidKlineQuarter(realtime, KlineConstant.PERIOD_QUARTER); |
| | | } else if (KlineConstant.PERIOD_YEAR.equals(line)) { |
| | | return klineService.bulidKlineYear(realtime, KlineConstant.PERIOD_YEAR); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public List<Kline> klineCryptos(String symbol, String line) { |
| | | KlineTimeObject timeObject = DataCache.getKline(symbol, line); |
| | | List<Kline> list = new ArrayList<Kline>(); |
| | | if (timeObject != null) { |
| | | list = timeObject.getKline(); |
| | | return kline(symbol, line); |
| | | } |
| | | |
| | | private void appendOrReplaceKline(List<Kline> list, Kline kline) { |
| | | if (kline == null) { |
| | | return; |
| | | } |
| | | List<Kline> list_clone = new ArrayList<Kline>(); |
| | | try { |
| | | for (int i = 0; i < list.size(); i++) { |
| | | Kline kline = (Kline) list.get(i).clone(); |
| | | list_clone.add(kline); |
| | | for (int i = list.size() - 1; i >= 0; i--) { |
| | | Kline existing = list.get(i); |
| | | if (existing.getTs() != null && existing.getTs().equals(kline.getTs())) { |
| | | list.set(i, kline); |
| | | return; |
| | | } |
| | | } catch (CloneNotSupportedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | Realtime realtime = DataCache.getRealtime(symbol); |
| | | Kline hobiOne = DataCache.getKline_hobi().get(symbol + "_" + line); |
| | | |
| | | Kline lastOne = null; |
| | | if (list != null && list.size() > 0) { |
| | | lastOne = list.get(list.size() - 1); |
| | | } |
| | | if (realtime != null && hobiOne != null && lastOne != null) { |
| | | list_clone.add(this.klineService.bulidKline(realtime, lastOne, hobiOne, line)); |
| | | } |
| | | Collections.sort(list_clone); // 按时间升序 |
| | | return list_clone; |
| | | |
| | | list.add(kline); |
| | | } |
| | | |
| | | @Override |