| | |
| | | package com.yami.trading.huobi.data.internal; |
| | | |
| | | import cn.hutool.http.HttpUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.google.common.collect.Lists; |
| | | import com.google.gson.Gson; |
| | | import com.google.gson.reflect.TypeToken; |
| | | import com.yami.trading.bean.data.domain.Kline; |
| | | import com.yami.trading.bean.data.domain.Realtime; |
| | | import com.yami.trading.bean.item.domain.Item; |
| | | import com.yami.trading.common.config.RequestDataHelper; |
| | | import com.yami.trading.common.constants.Constants; |
| | | import com.yami.trading.common.domain.Result; |
| | | import com.yami.trading.common.exception.YamiShopBindException; |
| | | import com.yami.trading.common.util.DateUtils; |
| | | import com.yami.trading.huobi.websocket.constant.enums.EStockType; |
| | | import com.yami.trading.service.MarketOpenChecker; |
| | | import com.yami.trading.common.util.ThreadUtils; |
| | | import com.yami.trading.common.util.UTCDateUtils; |
| | |
| | | import com.yami.trading.service.data.RealtimeService; |
| | | import com.yami.trading.service.item.ItemService; |
| | | import com.yami.trading.service.syspara.SysparaService; |
| | | import lombok.Data; |
| | | import org.jetbrains.annotations.Nullable; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | @Data |
| | | class kData { |
| | | long t; |
| | | String c; |
| | | String o; |
| | | String h; |
| | | String l; |
| | | String v; |
| | | String vo; |
| | | } |
| | | |
| | | @Override |
| | | public List<Kline> getKData(Item item, String interval) { |
| | | try { |
| | | EStockType eStockType = EStockType.US; |
| | | Object object = HttpUtil.get(eStockType.stockUrl + "kline?pid=" + item.getStockCode() + "&interval=" + interval + "&key=" + eStockType.stockKey); |
| | | Gson gson = new Gson(); |
| | | List<kData> dataList = gson.fromJson(object.toString(), new TypeToken<List<kData>>(){}.getType()); |
| | | logger.info("{}获取{}条K线" , item.getSymbol() ,dataList.size()); |
| | | Realtime realtime = DataCache.getRealtime(item.getSymbol()); |
| | | // 修改 List 中的最后一条数据 |
| | | kData lastData = dataList.get(dataList.size() - 1); |
| | | lastData.setC(String.valueOf(realtime.getClose())); |
| | | lastData.setO(String.valueOf(realtime.getOpen())); |
| | | lastData.setH(String.valueOf(realtime.getHigh())); |
| | | lastData.setL(String.valueOf(realtime.getLow())); |
| | | |
| | | List<Kline> list = new ArrayList<>(); |
| | | for (int i = 0; i < dataList.size(); i++) { |
| | | kData kData = dataList.get(i); |
| | | Kline kline = new Kline(); |
| | | kline.setTs(Long.valueOf(kData.getT() + "000")); |
| | | kline.setClose(Double.valueOf(kData.getC())); |
| | | kline.setOpen(Double.valueOf(kData.getO())); |
| | | kline.setHigh(Double.valueOf(kData.getH())); |
| | | kline.setLow(Double.valueOf(kData.getL())); |
| | | list.add(kline); |
| | | } |
| | | return list; |
| | | } catch (Exception e) { |
| | | logger.error("getKData error", e); |
| | | } |
| | | return null; |
| | | } |
| | | } |