问题描述
from xtquant import xtdata
xtdata.download_history_data2(stock_list=['600309.SH', '600989.SH', '002714.SZ'], period='1d', start_time='20251011', end_time='20251115')
res = xtdata.get_market_data(stock_list=['600309.SH', '600989.SH', '002714.SZ'], period='1d', start_time='20251011', end_time='20251115')
res
求助:Miniqmt 连接成功,下载历史数据一直为空。行情源连接成功,换了几个行情源都是一样的返回结果。
解决方案
根据您提供的代码,导致 MiniQmt 获取历史数据为空的最主要原因在于时间参数设置错误。
1. 核心问题:时间设置在了未来
在您的代码中,start_time='20251011' 和 end_time='20251115' 设置的是 2025年10月到11月 的时间段。由于这个时间在未来,交易所尚未产生这些日期的行情数据,因此无论您怎么切换行情源,下载和获取的数据必然为空。
解决方法:将 start_time 和 end_time 修改为过去的有效交易日期。
2. 潜在问题:get_market_data 缺少字段参数
在使用 xtdata.get_market_data 时,建议显式指定需要获取的字段列表(field_list),例如开盘价、收盘价等,否则可能会因为参数传递顺序问题导致获取失败。
3. 正确的代码示例
请参考以下修改后的代码(将时间修改为 2023 年的有效日期,并补充了 field_list):
from xtquant import xtdata
# 1. 定义参数
stock_list = ['600309.SH', '600989.SH', '002714.SZ']
period = '1d'
# 修改为过去的有效时间
start_time = '20231011'
end_time = '20231115'
# 2. 下载历史数据到本地
print("开始下载历史数据...")
xtdata.download_history_data2(
stock_list=stock_list,
period=period,
start_time=start_time,
end_time=end_time
)
print("下载完成!")
# 3. 从本地读取数据
# 建议显式指定 field_list,例如获取开高低收和成交量
field_list = ['open', 'high', 'low', 'close', 'volume']
res = xtdata.get_market_data(
field_list=field_list,
stock_list=stock_list,
period=period,
start_time=start_time,
end_time=end_time
)
# 4. 打印结果
print(res)
4. 其他排查建议
如果修改时间后仍然获取为空,请按以下步骤排查:
- 确认 QMT 客户端状态:MiniQmt 依赖于独立运行的 QMT 客户端。请确保 QMT 客户端已启动、成功登录,并且右下角的“行情”状态显示为绿色已连接。
- 检查数据是否下载成功:
download_history_data2是异步或阻塞下载,确保下载完成后再调用get_market_data。如果网络较慢,可以尝试先在 QMT 客户端的“数据管理”中手动补充对应股票的日线数据,然后再用代码读取。 - 检查股票代码格式:确保股票代码后缀正确(上交所为
.SH,深交所为.SZ),您的代码中格式是正确的。