问题描述
使用get_sort_msg获取板块排名时,传入sort_type_grp="沪深"等中文名称后返回错误,为什么?
解决方案
在 ptrade 量化平台中,使用 get_sort_msg 函数获取板块或行业的涨幅排名时,如果传入 sort_type_grp="沪深" 等中文名称会导致报错。这是因为该参数不支持直接传入中文名称,而是需要传入特定的板块或行业代码。
报错原因分析
根据 ptrade API 文档,sort_type_grp 参数的定义如下:
- 参数类型:
list[str]或str - 参数含义:板块或行业的代码。
- 支持的输入:目前暂时只支持特定的代码前缀,例如:
XBHS.DY:地域板块XBHS.GN:概念板块XBHS.ZJHHY:证监会行业XBHS.ZS:指数XBHS.HY:行业
因此,传入中文名称(如“沪深”、“农业”等)无法被系统识别,从而导致报错。
正确的使用方法
如果您想获取某个特定板块的排名,必须传入对应的代码。例如,获取地域板块的排名,应传入 XBHS.DY。
代码示例
def initialize(context):
g.security = '000001.SZ'
set_universe(g.security)
def handle_data(context, data):
# 正确用法:获取地域板块 (XBHS.DY) 的涨幅排名信息,按昨日收盘价降序排列
sort_data = get_sort_msg(sort_type_grp='XBHS.DY', sort_field_name='preclose_px', sort_type=1, data_count=100)
if sort_data:
log.info("获取到的板块排名数据:")
log.info(sort_data)
# 获取排名第一的板块数据
sort_data_first = sort_data[0]
log.info("排名第一的板块信息:")
log.info(sort_data_first)
else:
log.error("未获取到排名数据,请检查参数设置。")
总结
在使用 get_sort_msg 时,请务必查阅 API 文档中关于 sort_type_grp 的说明,使用官方指定的代码(如 XBHS.GN、XBHS.HY 等)进行查询,避免使用中文名称。