3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
get_sort_msg 接口详解在 ptrade 交易模块中,get_sort_msg 是一个非常强大的行情接口,用于获取板块、行业的实时涨幅排名。通过该接口,量化投资者可以快速捕捉盘中热点板块,并获取板块内的领涨或领跌个股,非常适合编写板块轮动策略或热点追涨策略。
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。返回一个 list,其中每个元素是一个 dict,包含板块的详细信息(如 prod_name 板块名称、px_change_rate 涨跌幅、rise_first_grp 领涨股票列表等)。
以下是一个完整的 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
get_sort_msg 接口依赖于券商提供的 Level 2 实时行情推送。如果您的账户没有 L2 权限,该接口可能会返回空数据或报错。