3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,进行全市场或特定板块的宽度分析(Market Breadth Analysis)是研判市场情绪和趋势强弱的重要手段。通过 get_sort_msg 接口,我们可以轻松获取板块或行业的成员总数、上涨家数、下跌家数等关键统计指标。
get_sort_msgget_sort_msg 接口仅在交易模块可用,用于获取板块、行业的涨幅排名及详细统计信息。
sort_type_grp: 板块或行业分类代码。例如:
'XBHS.DY':地域板块'XBHS.GN':概念板块'XBHS.ZJHHY':证监会行业'XBHS.HY':行业分类sort_field_name: 排序字段,如 'px_change_rate'(涨跌幅)。sort_type: 排序方式(0 为升序,1 为降序)。data_count: 返回的数据条数。接口返回一个 list[dict],其中每个字典代表一个行业或板块,包含以下关键字段:
prod_code: 行业/板块代码prod_name: 行业/板块名称member_count: 成员个数(成分股总数)rise_count: 上涨家数fall_count: 下跌家数px_change_rate: 行业/板块整体涨跌幅以下是一个完整的 ptrade 策略示例。该策略在盘中定期获取概念板块(XBHS.GN)的数据,计算每个板块的上涨家数比例(上涨家数 / 成员总数),并筛选出上涨比例大于 60% 且成员数大于 10 的强势板块进行日志输出。
def initialize(context):
# 初始化策略,设置基准
set_benchmark('000300.SS')
g.security = '600570.SS' # 订阅一只股票以维持策略运行
set_universe(g.security)
# 每天 10:00 运行一次板块宽度分析
run_daily(context, market_breadth_analysis, time='10:00')
def market_breadth_analysis(context):
log.info("====== 开始进行板块市场宽度分析 ======")
# 获取概念板块的涨幅排名信息,按涨跌幅降序排序
sort_data = get_sort_msg(sort_type_grp='XBHS.GN', sort_field_name='px_change_rate', sort_type=1, data_count=100)
if not sort_data:
log.warning("未能获取到板块排序数据")
return
for block in sort_data:
name = block.get('prod_name')
code = block.get('prod_code')
member_count = block.get('member_count', 0)
rise_count = block.get('rise_count', 0)
fall_count = block.get('fall_count', 0)
# 过滤成员数过少的板块
if member_count <= 10:
continue
# 计算上涨家数比例
rise_ratio = round((rise_count / member_count) * 100, 2) if member_count > 0 else 0.0
# 筛选出上涨比例大于 60% 的强势板块
if rise_ratio >= 60.0:
log.info("强势板块: %s (%s) | 成员总数: %d | 上涨家数: %d | 下跌家数: %d | 上涨比例: %s%%" %
(name, code, member_count, rise_count, fall_count, rise_ratio))
def handle_data(context, data):
pass
get_sort_msg 发现多数板块的 rise_count 远低于 fall_count(即上涨比例极低),说明市场赚钱效应差,属于“赚了指数不赚钱”的虚假繁荣,应当控制仓位。rise_ratio(上涨比例)极高(例如超过 80%),说明该板块呈现普涨格局,行业板块内个股共振强烈,是极佳的短期热点追逐目标。