🚀 AI 一键生成 ptrade 策略代码
立即体验
👉 AI 生成代码 👈

ptrade 平台如何正确过滤退市及退市整理期的股票?

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

问题描述

get_stock_status查询退市状态时漏掉了退市整理期的股票?

使用get_stock_status查询退市股票时发现遗漏了一些应该退市的股票,为什么?

解决方案

在 ptrade 平台中,使用 get_stock_status 接口并传入 query_type='DELISTING' 时,系统仅会返回已经正式退市的股票状态,而不包含处于退市整理期的股票。这就是为什么您会发现遗漏了一些即将退市的股票。

为了更全面地过滤掉不适合交易的股票(包括退市整理期的股票),ptrade 提供了专门的过滤接口 filter_stock_by_status。该接口支持 'DELISTING_SORTING' 参数,专门用于过滤退市整理期的股票。

解决方案:使用 filter_stock_by_status

filter_stock_by_status 可以在盘前(before_trading_start)调用,一次性剔除 ST、停牌、退市以及退市整理期的股票。

支持的过滤类型 (filter_type):

  • 'ST' - 查询是否属于ST股票
  • 'HALT' - 查询是否停牌
  • 'DELISTING' - 查询是否退市
  • 'DELISTING_SORTING' - 查询是否退市整理期(只过滤交易当日数据)

代码示例:

def initialize(context):
    # 假设这是您的初始股票池
    g.security = ['123002.SZ', '688500.SS', '000001.SZ', '603997.SS', '123181.SZ']
    set_universe(g.security)

def before_trading_start(context, data):
    # 使用 filter_stock_by_status 过滤掉 ST、停牌、退市及退市整理期的股票
    filter_types = ["ST", "HALT", "DELISTING", "DELISTING_SORTING"]
    g.trade_stocks = filter_stock_by_status(g.security, filter_types)
    
    log.info("过滤后的可交易股票列表: %s" % g.trade_stocks)

def handle_data(context, data):
    # 在盘中逻辑中使用过滤后的股票池 g.trade_stocks
    pass

注意事项:

  1. filter_stock_by_status 仅支持在 before_trading_start 模块中调用。
  2. 'DELISTING_SORTING'(退市整理期)参数只过滤交易当日的数据,因此非常适合在每日盘前进行动态剔除。