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

ptrade 平台如何通过 get_individual_entrust 获取 L2 逐笔委托与监控大单?(附 Python 源码)

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

问题描述

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

Title: ptrade Level-2 逐笔委托行情解析与大单监控

Question: 如何通过 get_individual_entrust 获取逐笔委托行情并判断买卖单方向?

解决方案

一、ptrade Level-2 逐笔委托接口说明

在 ptrade 量化平台中,获取 Level-2 逐笔委托行情主要通过 get_individual_entrust 接口实现。需要注意的是,该接口需开启 Level-2 行情权限方可获取数据。

1. 接口定义与参数

get_individual_entrust(stocks=None, data_count=50, start_pos=0, search_direction=1, is_dict=False)
  • stocks: 股票代码列表,默认为当前订阅的股票池(如 ['600570.SS', '000001.SZ'])。
  • data_count: 获取数据条数,默认 50,最大支持 200。
  • start_pos: 起始位置,默认为 0。
  • search_direction: 搜索方向(1 表示向前/最新到最旧,2 表示向后)。
  • is_dict: 是否返回字典格式。建议在处理高频或大批量数据时设置为 True,能大幅提升取数速度。

二、逐笔委托字段与买卖单方向判断

接口返回的数据包含以下核心字段:

  • business_time: 毫秒级时间戳
  • hq_px: 委托价格
  • business_amount: 委托数量(股)
  • order_no: 委托编号
  • business_direction: 委托方向(买卖标识)
    • 0: 卖单(Sell)
    • 1: 买单(Buy)
    • 2: 借入
    • 3: 出借
  • trans_kind: 委托类别(如市价委托、限价委托等)

方向判断逻辑

通过检查 business_direction 字段的值即可明确区分委托属性:当 business_direction == 1 时为买入委托;当 business_direction == 0 时为卖出委托。


三、大单监控策略实现源码示例

以下策略展示了如何在 ptrade 盘中(如 handle_datarun_interval)实时获取逐笔委托行情,筛选大单(例如委托金额大于 50 万元)并输出日志:

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    # 设置大单金额阈值(50万元)
    g.large_order_threshold = 500000

def handle_data(context, data):
    # 使用 is_dict=True 以获得更高性能
    entrust_data = get_individual_entrust(stocks=[g.security], data_count=100, is_dict=True)
    
    if not entrust_data or g.security not in entrust_data:
        return
    
    orders = entrust_data[g.security]
    fields = entrust_data.get("fields", [])
    
    # 获取各字段索引位置
    time_idx = fields.index("business_time")
    px_idx = fields.index("hq_px")
    amount_idx = fields.index("business_amount")
    dir_idx = fields.index("business_direction")
    
    for item in orders:
        px = item[px_idx]
        amount = item[amount_idx]
        direction = item[dir_idx]
        order_money = px * amount
        
        # 筛选大于阈值的大单
        if order_money >= g.large_order_threshold:
            dir_str = "买单" if direction == 1 else ("卖单" if direction == 0 else "其他")
            log.info("[大单监控] 时间: %s | 代码: %s | 方向: %s | 价格: %.2f | 数量: %d | 金额: %.2f" % 
                     (item[time_idx], g.security, dir_str, px, amount, order_money))

四、注意事项

  1. 权限要求: 必须开通券商 Level-2 行情服务,否则调用该接口将返回 None 或空数据。
  2. 性能优化: 针对超过 200 只股票的大范围监控,强烈建议设置 is_dict=True,避免 Panel/DataFrame 转换带来的性能开销。