3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化交易中,处理停牌股票是保证策略健壮性的重要一环。在 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_status 或 get_stock_status 提前剔除停牌标的。get_snapshot 获取最实时的 trade_status,以应对盘中突发的临时停牌(HALT)。volume == 0 来辅助识别历史停牌日。