🚀 AI 一键生成 qmt 策略代码

QMT平台如何正确获取和下载板块成分股数据?(附板块错误排查)

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

问题描述

什么时候更新一下xtdata.download_sector_data(),xtdata.get_sector_info()

板块错误:

解决方案

在QMT(迅投极速量化交易平台)及配套的 xtquant (xtdata) 库中,遇到 xtdata.download_sector_data()xtdata.get_sector_info() 报错(如“板块错误”或获取不到数据),通常是因为本地客户端的板块数据未同步板块名称/代码拼写不规范

以下是解决该问题及在QMT中正确获取板块数据的完整指南:

一、 排查与解决 xtdata 板块错误

  1. 手动补充本地数据
    xtdata 的数据高度依赖于QMT终端的本地数据。如果API调用报错,请先在QMT客户端中手动补充数据:
    • 打开QMT客户端,进入 【数据管理】 -> 【补充数据】
    • 勾选所需的市场、品种以及板块数据,点击下载补充。
  2. 检查板块名称格式
    确保传入的板块名称与QMT客户端左侧板块树中的名称完全一致(包括大小写和特殊字符)。

二、 使用 QMT 原生 API 获取板块数据(推荐)

如果您是在QMT内置的Python策略编辑器中编写策略,推荐直接使用 ContextInfo 对象提供的原生API,这些接口更加稳定且直接读取终端内存数据:

1. 获取指数成份股:ContextInfo.get_sector()

支持获取如沪深300(000300.SH)、中证500(000905.SH)等指数的成份股。

def handlebar(ContextInfo):
    # 获取当前K线时间
    index = ContextInfo.barpos
    realtime = ContextInfo.get_bar_timetag(index)
    # 获取沪深300最新成分股
    hs300_stocks = ContextInfo.get_sector('000300.SH', realtime)
    print("沪深300成分股:", hs300_stocks)

2. 获取客户端板块成份股:ContextInfo.get_stock_list_in_sector()

支持获取客户端左侧板块列表中任意的板块,包括自定义板块

def handlebar(ContextInfo):
    index = ContextInfo.barpos
    realtime = ContextInfo.get_bar_timetag(index)
    # 获取自定义板块或概念板块成分股
    my_sector_stocks = ContextInfo.get_stock_list_in_sector('我的自选', realtime)
    print("自选板块成分股:", my_sector_stocks)

3. 获取证监会行业成份股:ContextInfo.get_industry()

支持获取证监会(CSRC)行业分类下的成份股。

def handlebar(ContextInfo):
    # 获取采矿业成分股
    mining_stocks = ContextInfo.get_industry('CSRC采矿业')
    print("采矿业成分股:", mining_stocks)

三、 总结

如果 xtdata 的板块接口持续报错,建议:

  1. 保持QMT客户端处于最新版本,并定期在【数据管理】中执行数据补充。
  2. 在盘中策略运行中,优先使用 ContextInfo.get_stock_list_in_sector() 等内置方法,以确保策略的稳定性和执行效率。