问题描述
解决方案
在 JoinQuant (聚宽) 平台上,使用 get_all_securities 函数是可以获取到科创板股票的。如果您发现取不到,通常是由于以下几个原因导致的:
1. date 参数设置过早
科创板于 2019年7月22日 正式开市。如果您在调用 get_all_securities 时,传入的 date 参数早于这个日期,那么返回的股票列表中自然不会包含科创板股票。
解决方法:确保传入的 date 参数在 2019-07-22 之后,或者直接不传 date 参数(默认获取所有日期上市过的股票信息)。
2. 未正确筛选科创板代码
get_all_securities(['stock']) 会返回所有的 A 股股票(包括主板、创业板、科创板等)。科创板股票的代码特征是 以 688 开头,后缀为 .XSHG。您需要从返回的 DataFrame 中自行筛选出科创板股票。
正确获取科创板股票的代码示例
以下是一个完整的代码示例,展示如何获取当前上市的所有科创板股票:
from jqdata import *
def initialize(context):
# 获取当前日期(或者指定一个 2019-07-22 之后的日期)
current_date = context.current_dt.date()
# 获取所有股票信息
all_stocks = get_all_securities(types=['stock'], date=current_date)
# 筛选出科创板股票 (代码以 '688' 开头)
# all_stocks 的 index 是股票代码
star_market_stocks = [code for code in all_stocks.index if code.startswith('688')]
log.info(f"当前日期 {current_date} 共有 {len(star_market_stocks)} 只科创板股票。")
log.info(f"科创板股票示例: {star_market_stocks[:5]}")
总结
- 确保
types=['stock']。 - 确保
date参数在 2019年7月22日之后。 - 通过判断股票代码是否以
688开头来提取科创板股票列表。