🚀 AI 一键生成 ptrade 策略代码

ptrade量化平台实时获取全市场A股涨跌停代码指南

ptrade | 发布时间: 2026/5/25
以下内容由 EasyQuant 生成。

问题描述

量化能否实时获取全市场A股的涨停情况,比如有哪些涨停的代码或跌停的代码?

/

解决方案

在 ptrade 量化平台中,是可以实时获取全市场 A 股的涨跌停情况的。你可以通过组合使用 get_Ashares()check_limit() 这两个 API 来实现。

实现思路

  1. 获取全市场 A 股代码:使用 get_Ashares() 函数获取当前交易日的所有 A 股代码列表。
  2. 查询涨跌停状态:将获取到的 A 股代码列表作为参数传入 check_limit(security) 函数。该函数会返回一个字典,键为股票代码,值为涨跌停状态码。
  3. 筛选涨跌停代码:遍历返回的字典,根据状态码筛选出涨停或跌停的股票。

状态码说明

check_limit 返回的状态码含义如下:

  • 2:触板涨停(已经是涨停价格,但还有卖盘)
  • 1:涨停
  • 0:既不涨停也不跌停
  • -1:跌停
  • -2:触板跌停(已经是跌停价格,但还有买盘)

Python 代码示例

以下是一个在 handle_data 中实时获取并打印全市场涨停和跌停股票代码的示例:

def initialize(context):
    # 初始化时可以不设置特定的 universe,因为我们要获取全市场
    pass

def handle_data(context, data):
    # 1. 获取全市场 A 股代码列表
    all_ashares = get_Ashares()
    
    # 2. 检查这些股票的涨跌停状态
    # 注意:全市场股票较多,调用可能需要一定时间
    limit_status_dict = check_limit(all_ashares)
    
    limit_up_list = []   # 涨停列表
    limit_down_list = [] # 跌停列表
    
    # 3. 筛选涨停和跌停的股票
    if limit_status_dict:
        for stock_code, status in limit_status_dict.items():
            if status == 1 or status == 2:
                limit_up_list.append(stock_code)
            elif status == -1 or status == -2:
                limit_down_list.append(stock_code)
                
    log.info(f"当前全市场涨停股票数量: {len(limit_up_list)}")
    log.info(f"当前全市场跌停股票数量: {len(limit_down_list)}")
    
    # 如果需要查看具体代码,可以取消下面的注释
    # log.info(f"涨停代码: {limit_up_list}")
    # log.info(f"跌停代码: {limit_down_list}")

注意事项

  • 性能考虑:全市场 A 股数量庞大(5000+),在 handle_data(如果是分钟级别或 tick 级别)中频繁调用 check_limit 传入全市场代码可能会消耗较多时间,影响策略执行效率。建议根据实际需求控制调用频率,例如使用 run_interval 定时查询,或者仅对特定的股票池(如某个板块或自选股)进行查询。
  • 数据返回:如果查询的列表中有部分股票代码异常,check_limit 会将该异常代码的状态返回为 0(既不涨停也不跌停)。