fix: k线时间范围动态

This commit is contained in:
vercel
2024-05-09 16:03:02 +08:00
parent 5a3de795b9
commit 9313481ec5
2 changed files with 22 additions and 21 deletions

View File

@@ -265,7 +265,7 @@ public class RefinitivConsumer implements ApplicationRunner {
} }
@SneakyThrows @SneakyThrows
public RetifiveStockHistoryResponse getKLink(String symbol, String resolution){ public RetifiveStockHistoryResponse getKLink(String symbol, String resolution,String starttime, String endtime){
RetifiveStockHistoryResponse result = new RetifiveStockHistoryResponse(); RetifiveStockHistoryResponse result = new RetifiveStockHistoryResponse();
String token = getToken(); String token = getToken();
if(StringUtils.isBlank(token)){ if(StringUtils.isBlank(token)){
@@ -278,60 +278,59 @@ public class RefinitivConsumer implements ApplicationRunner {
int countback = 5; int countback = 5;
String interval = null; String interval = null;
String resourceEndpoint = 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; String fields = null;
Integer flag = 0; Integer flag = 0;
if(StringUtils.equals("1m",resolution)){ if(StringUtils.equals("1m",resolution)){
start = DateTimeUtil.getDayOfMorning(start,0);
countback = 360; countback = (int)minutes;
interval = "PT1M"; interval = "PT1M";
resourceEndpoint = baseURLToday + symbol; resourceEndpoint = baseURLToday + symbol;
fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES"; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES";
}else }else
if(StringUtils.equals("5m",resolution)){ if(StringUtils.equals("5m",resolution)){
start = DateTimeUtil.getDayOfMorning(start,0); countback = (int) (minutes/5);
countback = 150;
interval = "PT5M"; interval = "PT5M";
resourceEndpoint = baseURLToday + symbol; resourceEndpoint = baseURLToday + symbol;
fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES"; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES";
}else }else
if(StringUtils.equals("10m",resolution)){ if(StringUtils.equals("10m",resolution)){
start = DateTimeUtil.getDayOfMorning(start,0); countback = (int) (minutes/10);
countback = 50;
interval = "PT10M"; interval = "PT10M";
resourceEndpoint = baseURLToday + symbol; resourceEndpoint = baseURLToday + symbol;
fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES"; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES";
}else }else
if(StringUtils.equals("30m",resolution)){ if(StringUtils.equals("30m",resolution)){
start = DateTimeUtil.getDayOfMorning(start,0); countback = (int) (minutes/30);
countback = 30;
interval = "PT30M"; interval = "PT30M";
resourceEndpoint = baseURLToday + symbol; resourceEndpoint = baseURLToday + symbol;
fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES"; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES";
}else }else
if(StringUtils.equals("H",resolution)){ if(StringUtils.equals("H",resolution)){
start = DateTimeUtil.getDayOfMorning(start,0); countback = (int) (minutes/60);
countback = 60;
interval = "PT1H"; interval = "PT1H";
resourceEndpoint = baseURLToday + symbol; resourceEndpoint = baseURLToday + symbol;
fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES"; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,TRDPRC_1,NUM_MOVES";
}else if(StringUtils.equals("D",resolution)){ }else if(StringUtils.equals("D",resolution)){
start = DateTimeUtil.getDayOfMorning(start,-30);
countback = 30; countback = (int)(minutes/24/60);
interval ="P1D"; interval ="P1D";
fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,OFF_CLOSE,NUM_MOVES"; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,OFF_CLOSE,NUM_MOVES";
flag = 1; flag = 1;
resourceEndpoint = baseURLHistory + symbol; resourceEndpoint = baseURLHistory + symbol;
}else if(StringUtils.equals("W",resolution)){ }else if(StringUtils.equals("W",resolution)){
start = DateTimeUtil.getDayOfMorning(start,-60);
countback = 30; countback = (int)(minutes/7/24/60);
interval ="P1W"; interval ="P1W";
fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,OFF_CLOSE,NUM_MOVES"; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,OFF_CLOSE,NUM_MOVES";
flag = 2; flag = 2;
resourceEndpoint = baseURLHistory + symbol; resourceEndpoint = baseURLHistory + symbol;
}else if(StringUtils.equals("M",resolution)){ }else if(StringUtils.equals("M",resolution)){
start = DateTimeUtil.getDayOfYear(start,-1);
countback = 30; countback = (int)(minutes/30/7/24/60);
interval ="P1M"; interval ="P1M";
fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,OFF_CLOSE,NUM_MOVES"; fields = "DATE,HIGH_1,LOW_1,OPEN_PRC,OFF_CLOSE,NUM_MOVES";
flag = 2; flag = 2;
@@ -340,9 +339,11 @@ public class RefinitivConsumer implements ApplicationRunner {
DateTimeFormatter formatterIso = DateTimeFormatter.ISO_INSTANT; DateTimeFormatter formatterIso = DateTimeFormatter.ISO_INSTANT;
String startStr = start.toInstant().atZone(ZoneId.of("UTC")).format(formatterIso); 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) HttpResponse response = HttpUtil.createGet(resourceEndpoint)
.form("eventTypes","trade,quote") .form("eventTypes","trade,quote")
.form("start",startStr) .form("start",startStr)
.form("end",endStr)
.form("count",countback) .form("count",countback)
.form("interval",interval) .form("interval",interval)
.form("fields",fields) .form("fields",fields)

View File

@@ -136,13 +136,13 @@ public class RefinitivApiController {
@ApiOperation(value = "查询股票K线", httpMethod = "GET", response = RetifiveStockHistoryResponse.class) @ApiOperation(value = "查询股票K线", httpMethod = "GET", response = RetifiveStockHistoryResponse.class)
@ApiImplicitParams({ @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 = "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"), @ApiImplicitParam(name = "resolution", value = "单位:60 1D 1W 1D 对应H,D,W,Y", required = true, dataType = "String", paramType = "query"),
}) })
@GetMapping("/getKlink") @GetMapping("/getKlink")
@EncryptFilter(decryptRequest = false) @EncryptFilter(decryptRequest = false)
public ServerResponse<?> getKlink(@RequestParam("symbol") String symbol, @RequestParam String resolution) { public ServerResponse<?> getKlink(@RequestParam("symbol") String symbol, @RequestParam("resolution") String resolution,
return ServerResponse.createBySuccess(refinitivConsumer.getKLink(symbol,resolution)); @RequestParam("starttime") String starttime,@RequestParam("endtime") String endtime) {
return ServerResponse.createBySuccess(refinitivConsumer.getKLink(symbol,resolution,starttime,endtime));
} }
} }