返回

一文掌握迅投QMT历史行情批量缓存

后端

前言

在上篇文章中,我们介绍了迅投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获取股票代码外,我们还可以使用其他数据源,例如:

我们可以从这些网站上获取股票代码列表,然后使用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数据分析提供了基础支持。在实际应用中,我们可以根据自己的需求选择不同的缓存策略,以提高缓存效率。