ptrade如何获取某天的全市场股票代码?
/
问题描述
解决方案
在 ptrade 量化交易平台中,如果您需要获取某一天沪深全市场的 A 股股票代码列表,可以使用内置的 get_Ashares 接口。
接口说明
get_Ashares(date=None)
用于获取指定日期沪深市场的所有 A 股代码列表。该函数在研究、回测、交易模块均可用。
参数说明
- date (str, 可选): 指定查询的日期,格式必须为
YYYYmmdd(例如:'20230512')。- 回测中:如果不传入
date,默认取回测当前的日期(即context.current_dt),会随着回测日期的推进而变化。 - 研究/交易中:如果不传入
date,默认取当天的系统日期。
- 回测中:如果不传入
返回值
返回一个包含股票代码的列表(list 类型),例如:['000001.SZ', '000002.SZ', ..., '603993.SS']。
Python 代码示例
以下是一个在策略中获取全市场股票代码的完整示例:
def initialize(context):
# 初始化时可以先设置一个默认的股票池
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 1. 获取当前回测/交易日的 A 股代码列表(不传参)
current_ashares = get_Ashares()
log.info('%s A股数量为: %s' % (context.blotter.current_dt, len(current_ashares)))
# 2. 获取指定历史日期(如 2013年5月12日)的 A 股代码列表
history_ashares = get_Ashares('20130512')
log.info('20130512 A股数量为: %s' % len(history_ashares))
# 3. 动态获取当前日期并格式化后传入(效果同不传参)
current_date = context.blotter.current_dt.strftime('%Y%m%d')
all_stocks = get_Ashares(date=current_date)
log.info('%s A股数量为: %s' % (current_date, len(all_stocks)))
注意事项
- 日期格式严格:传入的日期字符串必须是
YYYYmmdd格式,不能包含横杠(如2023-05-12是错误的)。 - 动态更新:在回测的
handle_data或before_trading_start中不传参调用时,返回的列表会自动剔除当天尚未上市的股票,真实反映当天的市场标的情况。