问题描述
使用get_stock_info查询某只股票时,发现de_listed_date字段返回"2900-01-01",这是什么意思?
解决方案
在 ptrade 量化交易平台中,使用 get_stock_info 接口获取股票基础信息时,如果返回的 de_listed_date(退市日期)字段值为 "2900-01-01",这表示该股票目前尚未退市,处于正常上市交易状态。
由于系统需要一个默认的未来日期来填充尚未发生退市事件的股票的该字段,因此采用了 "2900-01-01" 作为占位符。
如何在策略中判断股票是否退市?
你可以通过判断 de_listed_date 是否等于 "2900-01-01" 来过滤掉已经退市的股票。以下是一个简单的代码示例:
def initialize(context):
g.security = ['600570.SS', '000001.SZ']
set_universe(g.security)
def handle_data(context, data):
# 获取多支股票的基础信息,包含退市日期字段
stock_infos = get_stock_info(g.security, ['stock_name', 'de_listed_date'])
for stock in g.security:
info = stock_infos.get(stock, {})
delisted_date = info.get('de_listed_date')
if delisted_date == '2900-01-01':
log.info(f"{stock} 尚未退市,可以正常交易。")
else:
log.info(f"{stock} 已于 {delisted_date} 退市。")
补充说明:
除了使用 get_stock_info,你还可以使用 get_stock_status 接口,传入 query_type='DELISTING' 来直接查询股票是否属于退市状态,或者使用 filter_stock_by_status 接口在盘前直接过滤掉退市股票。