3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
这不是数据问题,而是 get_all_securities 函数的设计机制导致的。
根据 JoinQuant API 文档说明,get_all_securities 返回的 display_name(中文名称)和 name(缩写简称)只返回该标的在系统中的最新名称。也就是说,无论您传入的 date 参数是哪一天,返回的股票名称都是它现在的名字。如果该股票目前是 ST 股,那么即使您查询的是它尚未被 ST 的历史日期(如 2019-07-15),返回的名称依然会带有 'ST' 标识。
如果您需要判断股票在历史特定日期是否为 ST 股,不能依赖 display_name,而应该使用专门的 API:
get_current_data()在 handle_data 或其他定时运行函数中,可以使用 get_current_data() 获取当天的 ST 状态:
def handle_data(context, data):
current_data = get_current_data()
is_st = current_data['600078.XSHG'].is_st
print("是否为ST股:", is_st)
get_extras()可以使用 get_extras 函数查询一段时间内的 ST 状态:
from jqdata import *
# 查询 600078.XSHG 在 2019-07-15 的 ST 状态
st_data = get_extras('is_st', ['600078.XSHG'], start_date='2019-07-15', end_date='2019-07-15')
print(st_data)
get_extras 返回的 DataFrame 中,值为 True 表示当天是 ST 股,False 表示不是。
总结:get_all_securities 适合用来获取股票列表和上市/退市日期,判断 ST 状态请务必使用 get_extras 或 get_current_data。