🚀 AI 一键生成 qmt 策略代码

为什么 QMT 中调用 xtdata.get_instrument_detail 获取部分股票信息返回 None?

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

问题描述

【BUG】xtdata.get_instrument_detail 传部分代码获取结果为None

比如
res = xtdata.get_instrument_detail('000881.SZ')

res = xtdata.get_instrument_detail('000528.SZ')


都获取不到,券商版或者VIP行情都试了,效果都一样。

用的最新版xtquant

解决方案

在 QMT 或 xtquant 中,调用 xtdata.get_instrument_detail 获取部分股票(如 000881.SZ000528.SZ)返回 None,通常不是 BUG,而是因为本地缺少该合约的基础信息数据

xtdata 的很多基础查询接口(包括合约详情、财务数据等)都是基于本地缓存数据进行查询的。如果本地没有同步最新的板块和合约基础信息,就会查不到结果并返回 None

解决方法

您可以通过以下两种方式补充基础数据:

方法一:通过代码自动下载(推荐)

在调用 get_instrument_detail 之前,先调用 xtdata.download_sector_data() 下载板块和合约基础信息。这个过程很快,建议在程序初始化时执行一次。

from xtquant import xtdata

# 1. 下载/更新基础数据(包括合约详情、板块信息等)
xtdata.download_sector_data()

# 2. 再次查询合约详情
res1 = xtdata.get_instrument_detail('000881.SZ')
res2 = xtdata.get_instrument_detail('000528.SZ')

print("000881.SZ 详情:", res1)
print("000528.SZ 详情:", res2)

方法二:通过 QMT 客户端手动补充

如果您是配合 QMT 客户端使用:

  1. 打开 QMT 客户端。
  2. 点击右下角的 “数据管理”(或菜单栏的 数据 -> 数据管理)。
  3. 在数据管理界面,找到 “基础数据”“板块数据”
  4. 勾选并点击 “补充数据”,等待下载完成。
  5. 重启您的 Python 脚本再次查询即可。

补充说明

  • get_instrument_detail 依赖的是静态的合约字典,与您使用的是普通券商版行情还是 VIP 行情无关。
  • 只要确保本地的 sector_data 是最新的,所有正常上市的 A 股代码都能正常获取到详情字典(包含合约名称、上市日期、退市日期、涨跌停价、最小变动单位等)。