🚀 AI 一键生成 ptrade 策略代码

ptrade量化平台如何获取股票停牌状态?(附代码示例)

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

问题描述

量化如何得知股票是否临时停牌?

/

解决方案

在量化交易中,处理停牌股票是保证策略健壮性的重要一环。在 ptrade 量化平台中,您可以通过以下几种主要方式来得知股票是否临时停牌:

方法一:使用 get_stock_status 函数查询停牌状态

get_stock_status 是专门用于获取指定日期股票的 ST、停牌、退市属性的接口。将 query_type 参数设置为 'HALT' 即可查询股票是否停牌。

代码示例:

def initialize(context):
    g.security = ['600570.SS', '000001.SZ']
    set_universe(g.security)

def handle_data(context, data):
    # 获取股票停牌信息,返回字典,值为 True 表示停牌
    halt_status = get_stock_status(g.security, 'HALT')
    
    for stock in g.security:
        if halt_status.get(stock) is True:
            log.info(f"{stock} 当前处于停牌状态")
        else:
            log.info(f"{stock} 交易正常")

方法二:使用 get_snapshot 获取实时交易状态

在盘中交易时,您可以使用 get_snapshot 获取股票的实时行情快照,其中的 trade_status 字段详细记录了股票当前的交易状态。

常见的停牌相关状态包括:

  • HALT -- 暂停交易(临时停牌)
  • SUSP -- 停盘
  • STOPT -- 长期停盘

代码示例:

def handle_data(context, data):
    stock = '600570.SS'
    snapshot = get_snapshot(stock)
    
    if snapshot and stock in snapshot:
        status = snapshot[stock].get('trade_status')
        if status in ['HALT', 'SUSP', 'STOPT']:
            log.info(f"{stock} 处于停牌状态,状态码:{status}")
        elif status == 'TRADE':
            log.info(f"{stock} 正在连续撮合交易")

方法三:在盘前使用 filter_stock_by_status 过滤停牌股票

如果您希望在每天开盘前直接从股票池中剔除停牌的股票,可以在 before_trading_start 中使用 filter_stock_by_status 函数。

代码示例:

def initialize(context):
    g.security = ['600570.SS', '000001.SZ', '600000.SS']
    set_universe(g.security)

def before_trading_start(context, data):
    # 过滤掉 ST、停牌(HALT) 和 退市(DELISTING) 的股票
    g.trade_stocks = filter_stock_by_status(g.security, ["ST", "HALT", "DELISTING"])
    log.info(f"今日可交易股票列表:{g.trade_stocks}")

def handle_data(context, data):
    # 仅对过滤后的可交易股票进行操作
    for stock in g.trade_stocks:
        pass # 执行交易逻辑

总结建议

  • 盘前选股:推荐使用 filter_stock_by_statusget_stock_status 提前剔除停牌标的。
  • 盘中监控:推荐使用 get_snapshot 获取最实时的 trade_status,以应对盘中突发的临时停牌(HALT)。
  • 历史回测:在回测中,ptrade 默认不会跳过停牌日期,停牌时会使用停牌前的数据填充,且成交量(volume)为 0。您也可以通过判断 volume == 0 来辅助识别历史停牌日。