Spring Boot 实战:获取指数 K 线数据并控制请求速率
以下是一个使用 Spring Boot 开发的示例代码,用于获取指数 K 线数据并控制请求速率:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication
@EnableScheduling
public class IndexKlineApplication {
public static void main(String[] args) {
SpringApplication.run(IndexKlineApplication.class, args);
}
@Component
public static class KlineFetcher {
private final RestTemplate restTemplate = new RestTemplate();
private final String apiUrl = 'https://api.hbdm.com/api/v5/market/index-candles';
private final String apiKey = 'your-api-key';
private final String secretKey = 'your-secret-key';
@Scheduled(fixedDelay = 200) // 控制请求速率为200ms/次
public void fetchKlineData() {
// 依次获取120支币的K线数据
for (int i = 0; i < 120; i++) {
String symbol = getSymbol(i);
// 获取1m的K线数据
fetchKlineData(symbol, '1m');
// 获取5m的K线数据
fetchKlineData(symbol, '5m');
// 获取15m的K线数据
fetchKlineData(symbol, '15m');
// 获取30m的K线数据
fetchKlineData(symbol, '30m');
// 获取1H的K线数据
fetchKlineData(symbol, '1H');
// 获取4H的K线数据
fetchKlineData(symbol, '4H');
}
}
private void fetchKlineData(String symbol, String period) {
String url = apiUrl + '?symbol=' + symbol + '&period=' + period;
String result = restTemplate.getForObject(url, String.class);
// 处理获取到的K线数据
System.out.println(result);
}
private String getSymbol(int index) {
// 根据索引获取币的symbol,这里假设symbol的命名规则为"COIN" + index
return 'COIN' + index;
}
}
}
请注意,该示例中使用了RestTemplate来发送HTTP请求,你需要在pom.xml文件中添加相应的依赖:
<dependencies>
<!-- 其他依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
另外,你需要将your-api-key和your-secret-key替换为你在交易所获取的API密钥和密钥。
该示例中使用了@Scheduled注解来定时触发获取K线数据的方法,并通过fixedDelay属性设置了请求速率为200毫秒/次。你可以根据实际情况调整该值。
原文地址: https://www.cveoy.top/t/topic/o9ay 著作权归作者所有。请勿转载和采集!