xtdata提供了强大的数据下载功能,能帮助我们构建自己的策略
今天我们来详细剖析xtdata中所有与数据下载相关的指令,讲解它们的用法、区别和最佳实践
xtdata的数据下载功能主要分为两大类,分别对应两种不同性质的数据
1 行情数据 (K线):包括各周期的开盘、收盘、最高、最低价和成交量等(这篇我们学习)
2 财务数据:包括上市公司的利润表、资产负债表、现金流量表等(下篇我们学习)
接下来,我们将逐一详解这两大类数据的下载方法
第一部分:行情数据下载
对于历史行情,xtdata提供了两个核心指令:一个用于单只股票的简单下载,另一个用于多只股票的批量下载
1. download_history_data:单只股票下载(同步)
这是最基础的下载指令,适用于补充单只股票的历史数据
特点:同步执行。这意味着程序会在这里“卡住”,直到这只股票的数据全部下载完成,才会继续执行下一行代码
函数原型 download_history_data(stock_code, period, start_time, end_time)
我们来实战演练:下载“平安银行”2025年的日K线数据
from xtquant import xtdata
client = xtdata.get_client()
print("开始下载平安银行2023年日K线数据...")
# 这是一个同步操作,程序会在此等待下载完成
xtdata.download_history_data("000001.SZ", period="1d", start_time="20250101", end_time="20250201")
print("数据下载完成!")
# 下载完成后,就可以用 get_local_data 来读取了
data = xtdata.get_local_data(stock_list=["000001.SZ"], period="1d", start_time="20250101", end_time="20250201")
print("从本地读取数据成功:")
print(data["000001.SZ"].head())日志如下:
2. download_history_data2:批量股票下载(带进度回调)
这是进行大规模数据构建时最常用、最强大的指令。它可以一次性提交一个股票列表的下载任务,并通过回调函数实时监控下载进度
特点:带回调的同步执行。函数本身是阻塞的,会等待所有下载任务完成后才返回。但在下载过程中,每完成一只股票的下载,就会触发一次你提供的callback函数,让你能实时了解进度
函数原型
download_history_data2(stock_list, period, start_time=, end_time=, callback=None)
实战演练:批量下载沪深300成分股近一年的数据并显示进度
from xtquant import xtdata
client = xtdata.get_client()
# 1. 定义我们的进度回调函数
def on_download_progress(data):
"""每下载完一只股票,这个函数就会被调用一次"""
progress = data["finished"] / data["total"] * 100
print(f"下载进度: {progress:.2f}% ({data["finished"]}/{data["total"]}), 当前完成: {data["stockcode"]}")
# 2. 获取沪深300成分股列表
stock_list = xtdata.get_stock_list_in_sector("沪深300")
print(f"准备为 {len(stock_list)} 只沪深300成分股下载数据...")
# 3. 调用批量下载指令,并传入回调函数
xtdata.download_history_data2(stock_list,
period="1d",
start_time="20250101",
end_time="20251215",
callback=on_download_progress)
print("\n所有历史行情数据批量下载完成!")赶快去试试吧!不过要注意本地内存哦~
QMT/miniQMT免费申请
QMT免费领取学习案例
QMT落地辅助策略代写服务
需要的朋友欢迎联系 ~~~
著作权归文章作者所有。