问题描述
比如
res = xtdata.get_instrument_detail('000881.SZ')
res = xtdata.get_instrument_detail('000528.SZ')
都获取不到,券商版或者VIP行情都试了,效果都一样。
用的最新版xtquant
解决方案
在 QMT 或 xtquant 中,调用 xtdata.get_instrument_detail 获取部分股票(如 000881.SZ、000528.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 客户端使用:
- 打开 QMT 客户端。
- 点击右下角的 “数据管理”(或菜单栏的 数据 -> 数据管理)。
- 在数据管理界面,找到 “基础数据” 或 “板块数据”。
- 勾选并点击 “补充数据”,等待下载完成。
- 重启您的 Python 脚本再次查询即可。
补充说明
get_instrument_detail依赖的是静态的合约字典,与您使用的是普通券商版行情还是 VIP 行情无关。- 只要确保本地的
sector_data是最新的,所有正常上市的 A 股代码都能正常获取到详情字典(包含合约名称、上市日期、退市日期、涨跌停价、最小变动单位等)。