3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 平台中,获取 Level-2 逐笔委托数据需要使用 get_individual_entrust 接口。为了保证高频数据处理的性能,强烈建议将参数 is_dict 设置为 True,这样返回的字典(dict)格式取数速度最快。
在逐笔委托数据中,business_direction 字段代表委托方向,其数值定义如下:
0:卖 (Sell)1:买 (Buy)2:借入 (Borrow)3:出借 (Lend)通过筛选 business_direction 为 1(买入)或 2(借入),并结合 hq_px(委托价格)与 business_amount(委托数量)计算出委托金额,即可有效识别市场上的主力大额资金意图。
以下是一个完整的 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))
None 或无数据。is_dict=True。DataFrame 或 Panel 格式在处理高频 L2 数据时会产生较大的内存和计算开销。