🚀 AI 一键生成 qmt 策略代码

QMT 选股策略指南:使用 get_industry 获取行业成分股

qmt | 发布时间: 2025/12/12
以下内容由 EasyQuant 生成。

问题描述

如何获取某个行业(比如'CSRC医药制造业')下的所有股票代码?

解决方案

在 QMT 量化交易平台中,获取特定行业(如证监会行业分类)下的所有股票代码,主要使用 ContextInfo.get_industry() 函数。

以下是具体的代码实现和说明。

代码实现

# -*- coding: gbk -*-

def init(ContextInfo):
    # 定义目标行业名称,例如 'CSRC医药制造业'
    target_industry = 'CSRC医药制造业'
    
    # 使用 get_industry 接口获取该行业下的所有成分股代码
    # 返回值为包含股票代码字符串的列表 (list)
    stock_list = ContextInfo.get_industry(target_industry)
    
    # 打印结果进行验证
    print(f"行业名称: {target_industry}")
    print(f"成分股数量: {len(stock_list)}")
    
    # 为了避免日志过长,这里只打印前 10 只股票代码作为示例
    if len(stock_list) > 0:
        print("部分成分股代码示例:", stock_list[:10])
    else:
        print("未找到该行业的成分股,请检查行业名称是否正确。")

def handlebar(ContextInfo):
    # 该策略主要在 init 中演示获取数据,handlebar 中无需执行逻辑
    pass

函数说明

ContextInfo.get_industry(industry)

  • 描述:获取指定行业的成份股列表。
  • 参数
    • industry (string):行业名称。例如 'CSRC采矿业', 'CSRC医药制造业' 等。
  • 返回值
    • 返回一个 Python list,列表包含该行业下的所有股票代码(格式如 '000001.SZ')。
  • 注意事项
    • 输入的行业名称必须严格匹配 QMT 系统中定义的行业名称。
    • 该函数通常用于 init 初始化阶段来设定股票池 (ContextInfo.set_universe)。

常见 CSRC 行业名称示例

如果您需要获取其他行业的代码,请确保使用标准的 CSRC 行业名称,例如:

  • CSRC金融业
  • CSRC房地产业
  • CSRC软件和信息技术服务业
  • CSRC农、林、牧、渔业

Q&A

Q: 如何获取申万行业(SW)分类的成分股?
A: QMT 的 get_industry 主要针对 CSRC 行业。如果要获取申万行业或自定义板块,通常使用 ContextInfo.get_stock_list_in_sector(sectorname) 函数,例如 ContextInfo.get_stock_list_in_sector('申万一级行业名称'),前提是客户端左侧板块列表中存在该板块。

Q: 获取到的股票代码列表可以直接用于回测吗?
A: 可以。获取到的 stock_list 可以直接传入 ContextInfo.set_universe(stock_list) 来设置策略的股票池,或者用于 ContextInfo.get_market_data_ex 批量获取行情数据。

Q: 为什么我输入的行业名称返回空列表?
A: 这通常是因为行业名称拼写不准确。请检查名称是否与 QMT 附录中的标准名称完全一致(包括标点符号)。例如,应该是 'CSRC医药制造业' 而不是 '医药制造业'