🚀 AI 一键生成 qmt 策略代码
立即体验

QMT平台如何过滤停牌股?is_suspended_stock函数使用详解与Python源码

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: qmt 过滤停牌股:is_suspended_stock 判定函数详解

Question: qmt 怎么通过 is_suspended_stock 判定股票今天是否停牌?

解决方案

QMT 过滤停牌股:is_suspended_stock 判定函数详解

在量化交易中,过滤停牌股是一个非常基础且关键的步骤。如果策略在盘中对已经停牌的股票发出下单指令,不仅会导致委托失败、占用系统资源,还可能影响策略的整体运行效率。

QMT(迅投极速量化交易系统)提供了内置的 ContextInfo.is_suspended_stock() 函数,可以帮助开发者快速、准确地判定某只股票在当前 Bar(K线)对应的时间是否处于停牌状态。


1. is_suspended_stock 函数基本语法

用法

ContextInfo.is_suspended_stock(stockcode)

参数说明

  • stockcode (string):股票代码,必须是带市场后缀的完整代码格式,例如 '600004.SH''000002.SZ'

返回值

  • bool
    • True:表示该股票在当前时间点处于停牌状态。
    • False:表示该股票处于正常交易状态。

2. 基础使用示例

handlebar 函数中,我们可以直接传入股票代码来打印其停牌状态:

#coding:gbk

def init(ContextInfo):
    # 设定基础股票池
    ContextInfo.set_universe(['600004.SH', '000002.SZ'])

def handlebar(ContextInfo):
    # 判定 600004.SH 是否停牌
    is_suspended = ContextInfo.is_suspended_stock('600004.SH')
    if is_suspended:
        print('600004.SH 当前处于停牌状态')
    else:
        print('600004.SH 当前交易正常')

3. 实战应用:动态过滤股票池中的停牌股

在实际的量化选股或轮动策略中,我们通常需要遍历整个股票池,动态剔除掉当天停牌的股票,只对可交易的股票进行信号计算和下单。以下是一个完整的过滤模板:

#coding:gbk

def init(ContextInfo):
    # 1. 设定初始股票池(例如沪深300成分股或自定义组合)
    ContextInfo.stock_list = ['600000.SH', '600004.SH', '000001.SZ', '000002.SZ']
    ContextInfo.set_universe(ContextInfo.stock_list)
    
def handlebar(ContextInfo):
    # 只在最后一根 K 线(最新行情)执行过滤和交易逻辑
    if not ContextInfo.is_last_bar():
        return
        
    # 2. 动态筛选未停牌的股票
    active_stocks = []
    for stock in ContextInfo.stock_list:
        if not ContextInfo.is_suspended_stock(stock):
            active_stocks.append(stock)
        else:
            print(f"股票 {stock} 今日停牌,已自动过滤。")
            
    print(f"今日可交易股票池: {active_stocks}")
    
    # 3. 后续的策略逻辑(例如对 active_stocks 进行指标计算与下单)
    for stock in active_stocks:
        # 示例:如果满足买入条件,则调用 passorder 下单
        # passorder(23, 1101, '您的资金账号', stock, 5, -1, 100, ContextInfo)
        pass

4. 开发者注意事项

  1. 数据完整性is_suspended_stock 依赖于本地的历史行情数据和实时推送。在回测或实盘运行前,请务必通过 QMT 客户端的 “数据管理” 功能补充对应品种的历史数据。
  2. 回测与实盘表现:在历史 K 线上回测时,该函数会根据历史当天的实际停牌记录返回结果;在盘中实盘/模拟运行阶段,则会根据当天的最新停牌公告和实时行情进行判定。
  3. 配合 get_market_data 使用:如果您使用 get_market_dataget_market_data_ex 获取行情,可以通过设置 skip_paused=True 参数,让系统自动用停牌前一天的价格填充停牌日的空缺值,避免数据出现 NaN 导致计算报错。