问题描述
/
解决方案
在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) 接口,遍历获取每个行业下的所有成分股,从而实现全市场的行业轮动策略或行业中性化选股模型。