🚀 AI 一键生成 ptrade 策略代码
立即体验

PTrade 盘口分析:利用 get_gear_price 获取买卖盘口深度数据与判断涨停封单

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: PTrade 盘口分析:利用 get_gear_price 分析买卖五档挂单与扫单策略

Question: 如何在 ptrade 中通过 get_gear_price 获取买卖盘口深度数据并判断涨停板封单情况?

解决方案

一、get_gear_price 接口说明

在 PTrade 交易模块中,get_gear_price(sids) 函数用于获取指定标的的买卖档位行情数据(包含委买、委卖的价格、委托量及委托笔数)。

1. 接口语法

get_gear_price(sids)
  • 使用场景:仅在交易模块(实盘/模拟盘)可用。
  • 参数sids 支持单只或多只股票代码(如 '600570.SS'['600570.SS', '000001.SZ'])。
  • 返回值:嵌套字典结构 dict
    • bid_grp: 委买档位 (档位1~5或1~10,包含 [价格, 委托量, 委托笔数])。
    • offer_grp: 委卖档位 (档位1~5或1~10,包含 [价格, 委托量, 委托笔数])。

2. 涨停板盘口数据特征

当股票触及涨停时:

  • 卖一档位 (offer_grp 1档):价格与委托量通常为 0,即无卖单挂出。
  • 买一档位 (bid_grp 1档):挂单价格为涨停价,委托量即为当前的涨停封单量

二、Python 策略示例:判断涨停板封单与盘口分析

以下示例展示了如何在盘中通过 get_gear_price 实时监控标的盘口深度,并判断买一封单量是否达到设定门槛:

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    # 设置定时任务,每10秒检测一次盘口
    run_interval(context, check_gear_depth, seconds=10)

def check_gear_depth(context):
    security = g.security
    # 获取五档盘口行情
    gear_data = get_gear_price(security)
    
    if not gear_data or 'bid_grp' not in gear_data:
        log.warning(f"获取 {security} 盘口行情失败")
        return
        
    bid_1 = gear_data['bid_grp'].get(1, [0, 0, 0])
    offer_1 = gear_data['offer_grp'].get(1, [0, 0, 0])
    
    bid_price, bid_vol, bid_count = bid_1[0], bid_1[1], bid_1[2]
    offer_price, offer_vol, offer_count = offer_1[0], offer_1[1], offer_1[2]
    
    # 判断是否涨停(卖一价格为0且买一有大额封单)
    if offer_price == 0 and bid_vol > 0:
        log.info(f"{security} 当前处于涨停状态!涨停封单价: {bid_price}, 封单量: {bid_vol} 股, 封单笔数: {bid_count}")
        # 示例:若封单量大于100万股,可触发后续逻辑
        if bid_vol >= 1000000:
            log.info("涨停封单较为稳固")
    else:
        log.info(f"{security} 未涨停。买一价: {bid_price} (量:{bid_vol}), 卖一价: {offer_price} (量:{offer_vol})")

def handle_data(context, data):
    pass

三、注意事项

  1. 行情权限:未开通 Level-2 行情时,委托笔数通常返回为 0;Level-2 环境下可获取更精准的盘口队列和笔数信息。
  2. 调用频率:在 run_intervaltick_data 中频繁调用时,注意控制策略计算开销,避免阻塞逻辑。
  3. 限价单精度:在根据盘口档位价格下单时(如使用 order()),需确保股票价格格式保留两位小数,避免因精度问题导致报单失败。