返回
一文掌握迅投QMT历史行情批量缓存
后端
2023-11-08 19:30:56
前言
在上篇文章中,我们介绍了迅投QMT历史行情接口的概况,并提供了一个历史行情数据下载的案例。在实际应用中,我们经常需要对大量股票的历史行情数据进行分析,因此,本文将进一步介绍如何获取批量股票代码并缓存对应的tick、分钟、日级别的历史数据。
1. 获取批量股票代码
1.1 使用QMT股票列表API
迅投QMT提供了股票列表API,我们可以使用该API获取股票代码列表。具体请求方式如下:
GET https://qmt.binancefuture.com/quote/v1/stock_list
该API返回的JSON数据中包含了所有股票代码列表,我们可以使用code
字段获取股票代码。例如,以下代码展示了如何使用Python中的requests
库获取股票代码列表:
import requests
def get_stock_list():
url = "https://qmt.binancefuture.com/quote/v1/stock_list"
response = requests.get(url)
stock_list = response.json()['data']['stock_list']
return stock_list
stock_list = get_stock_list()
print(stock_list)
1.2 使用其他数据源
除了使用QMT股票列表API获取股票代码外,我们还可以使用其他数据源,例如:
- 东方财富网股票代码列表:https://quote.eastmoney.com/stocklist.html
- 新浪财经股票代码列表:https://finance.sina.com.cn/stock/
我们可以从这些网站上获取股票代码列表,然后使用Python中的csv
库将股票代码列表保存为CSV文件。
2. 缓存历史行情数据
获取股票代码列表后,我们可以使用QMT历史行情API获取股票的历史行情数据。具体请求方式如下:
GET https://qmt.binancefuture.com/quote/v1/get_history_kline?symbol={symbol}&period={period}&from={from}&to={to}
其中,symbol
为股票代码,period
为K线周期,from
为开始时间戳,to
为结束时间戳。我们可以使用Python中的requests
库获取历史行情数据,并将其缓存到本地文件中。
import requests
import os
def cache_history_kline(symbol, period, from_timestamp, to_timestamp):
url = "https://qmt.binancefuture.com/quote/v1/get_history_kline"
params = {
'symbol': symbol,
'period': period,
'from': from_timestamp,
'to': to_timestamp
}
response = requests.get(url, params=params)
kline_data = response.json()['data']
# 创建目录
directory = f"./data/{symbol}"
if not os.path.exists(directory):
os.makedirs(directory)
# 保存数据
with open(f"{directory}/{period}.csv", "w") as f:
for kline in kline_data:
f.write(",".join(kline) + "\n")
# 示例
cache_history_kline("BTCUSDT", "1m", 1667456400000, 1668061200000)
3. 缓存策略
为了提高缓存效率,我们可以采用以下缓存策略:
- 使用缓存目录: 我们可以为每个股票代码创建一个缓存目录,并将其历史行情数据缓存到该目录中。
- 使用缓存文件: 我们可以为每个K线周期创建一个缓存文件,并将其历史行情数据缓存到该文件中。
- 使用缓存时间: 我们可以设置一个缓存时间,当缓存时间到期时,我们将重新获取历史行情数据并更新缓存。
4. 总结
本文介绍了如何获取批量股票代码并缓存对应的tick、分钟、日级别的历史数据。这些数据为迅投QMT数据分析提供了基础支持。在实际应用中,我们可以根据自己的需求选择不同的缓存策略,以提高缓存效率。