🚀 AI 一键生成 qmt 策略代码

MiniQmt (xtquant) 下载历史数据一直为空怎么办?

qmt | 发布时间: 2026/5/21
以下内容由 EasyQuant 生成。

问题描述

MiniQmt无法获取历史数据

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_timeend_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. 其他排查建议

如果修改时间后仍然获取为空,请按以下步骤排查:

  1. 确认 QMT 客户端状态:MiniQmt 依赖于独立运行的 QMT 客户端。请确保 QMT 客户端已启动、成功登录,并且右下角的“行情”状态显示为绿色已连接。
  2. 检查数据是否下载成功download_history_data2 是异步或阻塞下载,确保下载完成后再调用 get_market_data。如果网络较慢,可以尝试先在 QMT 客户端的“数据管理”中手动补充对应股票的日线数据,然后再用代码读取。
  3. 检查股票代码格式:确保股票代码后缀正确(上交所为 .SH,深交所为 .SZ),您的代码中格式是正确的。