🚀 AI 一键生成 ptrade 策略代码

PTrade 动态股票池技巧:如何使用 get_Ashares API 获取指定日期的全 A 股列表?

ptrade | 发布时间: 2025/11/28
以下内容由 EasyQuant 生成。

问题描述

请帮我获取某个特定日期的所有 A 股股票代码列表。

解决方案

在 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

代码解析

  1. initialize:设置了全局变量 g.target_date 用于存储你想查询的日期。
  2. before_trading_start:这是盘前处理函数,适合进行数据查询操作。
  3. get_Ashares(date=g.target_date):核心步骤,传入指定日期字符串获取列表。
  4. 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_historyget_fundamentals 等接口获取行情或财务数据,筛选出符合你策略条件的股票池,然后使用 set_universe 设置为当天的交易股票池。