3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT(迅投量化交易系统)中,基于板块和行业筛选标的是构建多因子策略、行业轮动策略的基础。QMT Python API 提供了 ContextInfo.get_industry() 接口,可以方便地按 CSRC(中国证监会)行业分类提取对应的成份股列表。
ContextInfo.get_industry(industry)industry (string):行业名称,必须以 'CSRC' 开头,例如 'CSRC采矿业'、'CSRC软件和信息技术服务业'。list:包含股票代码的列表,格式为 '000002.SZ'、'600000.SH' 等。注意:常用的证监会行业包括
CSRC采矿业、CSRC金融业、CSRC医药制造业、CSRC软件和信息技术服务业等。
以下策略展示了如何在 init 中通过 ContextInfo.get_industry() 获取特定行业(如“CSRC软件和信息技术服务业”)的股票作为股票池,并在 handlebar 中结合行情数据进行选股与下单。
#encoding:gbk
import pandas as pd
def init(ContextInfo):
# 1. 设定资金账号
ContextInfo.account = '6000000248'
ContextInfo.set_account(ContextInfo.account)
# 2. 获取 CSRC 软件和信息技术服务业的成份股
industry_name = 'CSRC软件和信息技术服务业'
stock_list = ContextInfo.get_industry(industry_name)
print(f"获取到 {industry_name} 行业股票共 {len(stock_list)} 只")
# 3. 设置股票池
ContextInfo.set_universe(stock_list)
ContextInfo.selected_stocks = []
def handlebar(ContextInfo):
# 仅在最后一根 Bar 执行选股逻辑
if not ContextInfo.is_last_bar():
return
stocks = ContextInfo.get_universe()
if not stocks:
return
# 获取股票池中所有股票最近 20 个交易日的收盘价
history_data = ContextInfo.get_history_data(20, '1d', 'close')
selected = []
for stock in stocks:
if stock in history_data and len(history_data[stock]) >= 20:
prices = history_data[stock]
# 计算 20 日动量(涨幅)
momentum = (prices[-1] - prices[0]) / prices[0]
# 筛选动量大于 5% 的股票
if momentum > 0.05:
selected.append(stock)
print(f"今日精选行业强粹股: {selected}")
ContextInfo.selected_stocks = selected
# 示例买入:对精选出的第一只股票进行下单(按最新价买入 100 股)
if selected:
target_stock = selected[0]
passorder(23, 1101, ContextInfo.account, target_stock, 5, -1, 100, ContextInfo)
get_industry 时必须带有 'CSRC' 前缀(如 'CSRC房地产业'),否则可能无法正确返回成份股。get_stock_list_in_sector 的区别:
get_industry 专注于证监会标准行业划分。get_stock_list_in_sector 支持客户端左侧列表中的任意自定义板块或概念板块(如 '沪深300'、'我的自选')。