🚀 AI 一键生成 ptrade 策略代码

ptrade量化平台获取所有行业列表的方法与代码实现

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

问题描述

如何一次性取到所有行业的列表?

/

解决方案

在ptrade量化平台中,虽然没有直接命名为 get_all_industries 的专属接口,但我们可以通过调用 get_sort_msg 接口来巧妙地一次性获取所有行业的列表信息。

核心接口:get_sort_msg

get_sort_msg 接口主要用于获取板块、行业的涨幅排名。通过指定板块类型为行业(XBHS.HY),我们可以获取到所有行业的详细信息,包括行业代码和行业名称。

接口参数设置:

  • sort_type_grp: 设置为 'XBHS.HY',表示查询行业板块。
  • sort_field_name: 排序字段,例如 'px_change_rate'(涨跌幅)。
  • sort_type: 排序方式,1 为降序,0 为升序。
  • data_count: 数据条数,尽量设置大一些(如 1000),以确保能取到所有的行业。

Python 代码示例

以下是一个完整的策略示例,展示如何在策略中获取并打印所有行业的代码和名称:

def initialize(context):
    # 初始化时获取行业列表
    get_all_industries()

def get_all_industries():
    # 调用 get_sort_msg 获取行业板块数据
    # sort_type_grp='XBHS.HY' 代表行业
    industry_data = get_sort_msg(sort_type_grp='XBHS.HY', sort_field_name='px_change_rate', sort_type=1, data_count=1000)
    
    industry_list = []
    if industry_data:
        for item in industry_data:
            # 提取行业代码和行业名称
            industry_code = item.get('prod_code')
            industry_name = item.get('prod_name')
            industry_list.append({'code': industry_code, 'name': industry_name})
            
        log.info(f"共获取到 {len(industry_list)} 个行业。")
        log.info(f"行业列表前5个示例: {industry_list[:5]}")
    else:
        log.error("获取行业列表失败!")
        
    return industry_list

def handle_data(context, data):
    pass

返回数据解析

get_sort_msg 返回的是一个包含字典的列表(list[dict])。每个字典代表一个行业的信息,其中关键字段如下:

  • prod_code: 行业代码(例如:'031027.XBHS',注意使用时可能需要根据具体接口要求处理后缀)。
  • prod_name: 行业名称(例如:'计算机应用')。
  • member_count: 该行业包含的成分股个数。

进阶应用

获取到行业列表后,您可以结合 get_industry_stocks(industry_code) 接口,遍历获取每个行业下的所有成分股,从而实现全市场的行业轮动策略或行业中性化选股模型。