🚀 AI 一键生成 ptrade 策略代码
立即体验

ptrade 平台如何使用 get_sort_msg 获取板块与概念涨幅实时排名?(附 Python 源码)

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

问题描述

ptrade 板块与概念涨幅实时排名:get_sort_msg 行情接口应用
ptrade 里的 get_sort_msg 函数怎么用?能帮我写个获取概念板块今日涨幅前 5 名的策略吗?

解决方案

ptrade get_sort_msg 接口详解

在 ptrade 交易模块中,get_sort_msg 是一个非常强大的行情接口,用于获取板块、行业的实时涨幅排名。通过该接口,量化投资者可以快速捕捉盘中热点板块,并获取板块内的领涨或领跌个股,非常适合编写板块轮动策略热点追涨策略

1. 接口定义与核心参数

get_sort_msg(sort_type_grp=None, sort_field_name=None, sort_type=1, data_count=100)
  • sort_type_grp (str/list): 板块或行业的代码分类。常用分类包括:
    • 'XBHS.GN': 概念板块
    • 'XBHS.DY': 地域板块
    • 'XBHS.HY': 行业板块
    • 'XBHS.ZJHHY': 证监会行业
  • sort_field_name (str): 排序字段。支持:
    • 'px_change_rate': 涨跌幅(最常用)
    • 'business_balance': 总成交额
    • 'vol_ratio': 量比
  • sort_type (int): 排序方式。1 为降序(默认,即从大到小),0 为升序。
  • data_count (int): 返回的数据条数,默认为 100。

2. 返回数据结构

返回一个 list,其中每个元素是一个 dict,包含板块的详细信息(如 prod_name 板块名称、px_change_rate 涨跌幅、rise_first_grp 领涨股票列表等)。


概念板块今日涨幅前 5 名策略源码

以下是一个完整的 ptrade 策略示例。策略在盘中(如通过 handle_data 或定时任务)调用 get_sort_msg 接口,筛选出今日涨幅前 5 名的概念板块,并打印出板块名称、涨幅以及各自的领涨第一名个股

# -*- coding: utf-8 -*-

def initialize(context):
    # 初始化设置,订阅一只基准股票以驱动 handle_data 运行
    g.security = '600570.SS' 
    set_universe(g.security)
    
    # 设置一个运行标识,避免盘中每分钟重复打印
    g.has_run_today = False

def before_trading_start(context, data):
    # 每日盘前重置运行标识
    g.has_run_today = False

def handle_data(context, data):
    # 仅在盘中执行一次(例如 9:35 之后,此时集合竞价已结束,板块涨幅已初见端倪)
    if not g.has_run_today:
        log.info("====== 开始获取今日概念板块涨幅前 5 名 ======")
        
        try:
            # 获取概念板块(XBHS.GN)按涨跌幅(px_change_rate)降序排名的前 5 条数据
            top_concepts = get_sort_msg(
                sort_type_grp='XBHS.GN', 
                sort_field_name='px_change_rate', 
                sort_type=1, 
                data_count=5
            )
            
            if top_concepts:
                for index, concept in enumerate(top_concepts):
                    concept_name = concept.get('prod_name', '未知')
                    change_rate = concept.get('px_change_rate', 0.0)
                    
                    # 获取领涨股票信息
                    rise_first_list = concept.get('rise_first_grp', [])
                    leader_info = "无"
                    if rise_first_list:
                        # 取领涨股票列表的第一只
                        leader = rise_first_list[0]
                        leader_info = f"{leader.get('prod_name')} ({leader.get('prod_code')}) 涨幅: {leader.get('px_change_rate')}%"
                    
                    log.info(f"第 {index+1} 名: 【{concept_name}】 今日涨幅: {change_rate}% | 领涨龙头: {leader_info}")
            else:
                log.warning("未获取到板块排名数据,请检查 Level 2 行情权限。")
                
        except Exception as e:
            log.error(f"获取板块排名出现异常: {str(e)}")
            
        g.has_run_today = True

注意事项

  1. 行情权限get_sort_msg 接口依赖于券商提供的 Level 2 实时行情推送。如果您的账户没有 L2 权限,该接口可能会返回空数据或报错。
  2. 运行环境:该函数仅在交易/实盘/模拟盘模块中可用,回测模块中无法获取实时的板块排名。