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

ptrade 平台如何解析 L2 逐笔委托并过滤大额买入与借入单?(附 Python 源码)

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

问题描述

ptrade Level-2 实战:基于逐笔委托 business_direction 判断主力资金意图
在 ptrade 中,如何解析 L2 逐笔委托数据里的 business_direction 字段,并过滤出大额买入和借入单?

解决方案

1. 核心原理与字段解析

在 ptrade 平台中,获取 Level-2 逐笔委托数据需要使用 get_individual_entrust 接口。为了保证高频数据处理的性能,强烈建议将参数 is_dict 设置为 True,这样返回的字典(dict)格式取数速度最快。

在逐笔委托数据中,business_direction 字段代表委托方向,其数值定义如下:

  • 0:卖 (Sell)
  • 1:买 (Buy)
  • 2:借入 (Borrow)
  • 3:出借 (Lend)

通过筛选 business_direction1(买入)或 2(借入),并结合 hq_px(委托价格)与 business_amount(委托数量)计算出委托金额,即可有效识别市场上的主力大额资金意图。


2. 实战策略源码

以下是一个完整的 ptrade 策略示例,展示了如何在盘中实时获取并解析 L2 逐笔委托,过滤出大额买入和借入单:

# -*- coding: utf-8 -*-

def initialize(context):
    # 设置需要监控的股票
    g.security = '600570.SS'  # 恒生电子
    set_universe(g.security)
    g.flag = False

def handle_data(context, data):
    # 仅在交易运行场景下执行
    if not is_trade():
        return
        
    # 获取当日最新100条逐笔委托数据,使用 is_dict=True 极大提升解析效率
    entrust_dict = get_individual_entrust([g.security], data_count=100, is_dict=True)
    
    if not entrust_dict or g.security not in entrust_dict:
        return
        
    # 获取数据记录与字段列表
    records = entrust_dict[g.security]
    fields = entrust_dict.get("fields", ["business_time", "hq_px", "business_amount", "order_no", "business_direction", "trans_kind"])
    
    # 建立字段名到索引的映射
    field_map = {field: idx for idx, field in enumerate(fields)}
    
    # 定义大单阈值(例如:单笔委托金额大于 50 万人民币)
    LARGE_ORDER_THRESHOLD = 500000.0
    
    for record in records:
        direction = record[field_map["business_direction"]]
        price = record[field_map["hq_px"]]
        amount = record[field_map["business_amount"]]
        time_stamp = record[field_map["business_time"]]
        
        # 计算单笔委托估算金额
        entrust_value = price * amount
        
        # 过滤:方向为 1(买入) 或 2(借入),且金额超过阈值
        if direction in [1, 2] and entrust_value >= LARGE_ORDER_THRESHOLD:
            direction_desc = "主力买入" if direction == 1 else "融券借入"
            log.info("【主力意图发现】时间: %s | 股票: %s | 方向: %s | 金额: %.2f元 | 价格: %.2f | 数量: %d" % 
                     (time_stamp, g.security, direction_desc, entrust_value, price, amount))

3. 注意事项

  1. Level-2 行情权限:逐笔委托数据需要您的券商账户开通 Level-2 行情服务,否则接口将返回 None 或无数据。
  2. 性能优化:在处理多只股票时,务必使用 is_dict=True。DataFrame 或 Panel 格式在处理高频 L2 数据时会产生较大的内存和计算开销。
  3. 借入单(2)的意义:借入单通常与融资融券(融券卖出前置动作)相关,大额借入单可能预示着大资金看空或套利盘介入,需结合市场走势综合研判。