问题描述
解决方案
在 PTrade 量化交易平台中,获取特定日期所有 A 股股票代码列表的专用接口是 get_Ashares。
以下是具体的 API 说明及代码实现示例。
核心 API 说明
get_Ashares(date=None)
- 描述:该接口用于获取指定日期沪深市场的所有 A 股代码列表。
- 参数:
date(str):格式为YYYYmmdd(例如'20230512')。- 注意:如果不传入
date参数,回测模式下默认取当前回测日期的列表,交易/研究模式下取系统当前日期的列表。
- 返回值:包含股票代码的列表(List),例如
['000001.SZ', '600000.SS', ...]。
策略代码示例
以下代码展示了如何在策略中获取指定日期(例如 2023年5月12日)的所有 A 股代码,并打印数量及部分代码。
def initialize(context):
# 初始化函数,设置一个默认股票池以保证策略运行
g.security = '600570.SS'
set_universe(g.security)
# 设定需要查询的目标日期,格式为 YYYYmmdd
g.target_date = '20230512'
def before_trading_start(context, data):
# 调用 get_Ashares 获取指定日期的 A 股列表
# 注意:这里直接调用 API,无需 import
ashares_list = get_Ashares(date=g.target_date)
# 打印获取到的股票数量
if ashares_list:
log.info("日期 %s 的 A 股总数量为: %d" % (g.target_date, len(ashares_list)))
# 打印前 10 个代码作为示例
log.info("列表前 10 个代码: %s" % ashares_list[:10])
else:
log.info("未获取到日期 %s 的 A 股数据" % g.target_date)
def handle_data(context, data):
pass
代码解析
initialize:设置了全局变量g.target_date用于存储你想查询的日期。before_trading_start:这是盘前处理函数,适合进行数据查询操作。get_Ashares(date=g.target_date):核心步骤,传入指定日期字符串获取列表。log.info:使用 Python 3.5 兼容的%格式化字符串输出日志,方便在回测日志中查看结果。
Q&A
Q: get_Ashares 接口返回的代码包含后缀吗?
A: 是的,返回的代码包含交易所后缀。上海证券交易所的股票后缀为 .SS(例如 600570.SS),深圳证券交易所的股票后缀为 .SZ(例如 000001.SZ)。
Q: 如果我想获取当天的 A 股列表,参数怎么传?
A: 如果是在回测中获取回测当天的列表,或者在实盘中获取今天的列表,可以直接调用 get_Ashares(),不传递任何参数即可。
Q: 这个接口能获取到退市的股票吗?
A: 该接口返回的是指定日期当天在沪深市场上市交易的所有 A 股代码。如果某只股票在指定日期之前已经退市,则不会出现在列表中;如果在指定日期时它是正常上市状态(即使后来退市了),则会包含在列表中。
Q: 获取到的列表可以用来做什么?
A: 获取全市场代码列表通常用于全市场选股策略。你可以遍历这个列表,配合 get_history 或 get_fundamentals 等接口获取行情或财务数据,筛选出符合你策略条件的股票池,然后使用 set_universe 设置为当天的交易股票池。