带你详细了解miniQMT的xtdata模块 (第二篇)xtdataK线数据下载

QUANT 2025-12-16 14:48:45 35 举报

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落地辅助策略代写服务

需要的朋友欢迎联系  ~~~







尊重知识,尊重市场 1

著作权归文章作者所有。

最新回复 ( 0 )
发新帖
0
DEPRECATED: addslashes(): Passing null to parameter #1 ($string) of type string is deprecated (/data/user/htdocs/xiunophp/xiunophp.min.php:48)