diff --git a/src/main/java/cn/stock/market/lesg/RefinitivConsumer.java b/src/main/java/cn/stock/market/lesg/RefinitivConsumer.java index 166a8a2..f8d7c05 100644 --- a/src/main/java/cn/stock/market/lesg/RefinitivConsumer.java +++ b/src/main/java/cn/stock/market/lesg/RefinitivConsumer.java @@ -265,7 +265,7 @@ public class RefinitivConsumer implements ApplicationRunner { } @SneakyThrows - public RetifiveStockHistoryResponse getKLink(String symbol, String resolution){ + public RetifiveStockHistoryResponse getKLink(String symbol, String resolution,String starttime, String endtime){ RetifiveStockHistoryResponse result = new RetifiveStockHistoryResponse(); String token = getToken(); if(StringUtils.isBlank(token)){ @@ -278,60 +278,59 @@ public class RefinitivConsumer implements ApplicationRunner { int countback = 5; String interval = null; String resourceEndpoint = null; - Date start = new Date(); + Date start = new SimpleDateFormat("yyyy-MM-dd").parse(starttime); + Date end = new SimpleDateFormat("yyyy-MM-dd").parse(starttime); + long duration = end.getTime() - start.getTime(); + long minutes = TimeUnit.MILLISECONDS.toMinutes(duration); String fields = null; Integer flag = 0; if(StringUtils.equals("1m",resolution)){ - start = DateTimeUtil.getDayOfMorning(start,0); - countback = 360; + + countback = (int)minutes; interval = "PT1M"; resourceEndpoint = baseURLToday + symbol; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES"; }else if(StringUtils.equals("5m",resolution)){ - start = DateTimeUtil.getDayOfMorning(start,0); - countback = 150; + countback = (int) (minutes/5); interval = "PT5M"; resourceEndpoint = baseURLToday + symbol; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES"; }else if(StringUtils.equals("10m",resolution)){ - start = DateTimeUtil.getDayOfMorning(start,0); - countback = 50; + countback = (int) (minutes/10); interval = "PT10M"; resourceEndpoint = baseURLToday + symbol; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES"; }else if(StringUtils.equals("30m",resolution)){ - start = DateTimeUtil.getDayOfMorning(start,0); - countback = 30; + countback = (int) (minutes/30); interval = "PT30M"; resourceEndpoint = baseURLToday + symbol; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES"; }else if(StringUtils.equals("H",resolution)){ - start = DateTimeUtil.getDayOfMorning(start,0); - countback = 60; + countback = (int) (minutes/60); interval = "PT1H"; resourceEndpoint = baseURLToday + symbol; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES"; }else if(StringUtils.equals("D",resolution)){ - start = DateTimeUtil.getDayOfMorning(start,-30); - countback = 30; + + countback = (int)(minutes/24/60); interval ="P1D"; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,OFF_CLOSE,NUM_MOVES"; flag = 1; resourceEndpoint = baseURLHistory + symbol; }else if(StringUtils.equals("W",resolution)){ - start = DateTimeUtil.getDayOfMorning(start,-60); - countback = 30; + + countback = (int)(minutes/7/24/60); interval ="P1W"; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,OFF_CLOSE,NUM_MOVES"; flag = 2; resourceEndpoint = baseURLHistory + symbol; }else if(StringUtils.equals("M",resolution)){ - start = DateTimeUtil.getDayOfYear(start,-1); - countback = 30; + + countback = (int)(minutes/30/7/24/60); interval ="P1M"; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,OFF_CLOSE,NUM_MOVES"; flag = 2; @@ -340,9 +339,11 @@ public class RefinitivConsumer implements ApplicationRunner { DateTimeFormatter formatterIso = DateTimeFormatter.ISO_INSTANT; String startStr = start.toInstant().atZone(ZoneId.of("UTC")).format(formatterIso); + String endStr = end.toInstant().atZone(ZoneId.of("UTC")).format(formatterIso); HttpResponse response = HttpUtil.createGet(resourceEndpoint) .form("eventTypes","trade,quote") .form("start",startStr) + .form("end",endStr) .form("count",countback) .form("interval",interval) .form("fields",fields) diff --git a/src/main/java/cn/stock/market/web/RefinitivApiController.java b/src/main/java/cn/stock/market/web/RefinitivApiController.java index 337594f..50d5e69 100644 --- a/src/main/java/cn/stock/market/web/RefinitivApiController.java +++ b/src/main/java/cn/stock/market/web/RefinitivApiController.java @@ -136,13 +136,13 @@ public class RefinitivApiController { @ApiOperation(value = "查询股票K线", httpMethod = "GET", response = RetifiveStockHistoryResponse.class) @ApiImplicitParams({ - @ApiImplicitParam(name = "symbol",value = "股票对应代码(symbol)",dataType ="String",required = true, paramType = "query"), @ApiImplicitParam(name = "symbol",value = "股票对应代码(symbol)",dataType ="String",required = true, paramType = "query"), @ApiImplicitParam(name = "resolution", value = "单位:60 1D 1W 1D 对应H,D,W,Y", required = true, dataType = "String", paramType = "query"), }) @GetMapping("/getKlink") @EncryptFilter(decryptRequest = false) - public ServerResponse getKlink(@RequestParam("symbol") String symbol, @RequestParam String resolution) { - return ServerResponse.createBySuccess(refinitivConsumer.getKLink(symbol,resolution)); + public ServerResponse getKlink(@RequestParam("symbol") String symbol, @RequestParam("resolution") String resolution, + @RequestParam("starttime") String starttime,@RequestParam("endtime") String endtime) { + return ServerResponse.createBySuccess(refinitivConsumer.getKLink(symbol,resolution,starttime,endtime)); } }