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

ptrade Tick 级高频交易实战:如何使用 order_tick 实现指定档位快速吃单与挂单?

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

问题描述

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

Title: ptrade Tick 级交易实战:使用 order_tick 进行指定档位快速吃单

Question: 如何在 ptrade 的 tick_data 函数中使用 order_tick 接口按买一或卖一档位进行挂单与快速撮合?

解决方案

ptrade Tick 级高频交易实战:使用 order_tick 进行指定档位快速吃单

在超短线或高频交易策略中,毫秒级的下单速度与精准的盘口价格捕捉至关重要。ptrade 提供了 tick_data 事件函数与 order_tick 下单接口,允许开发者以 3 秒一次的频率处理 tick 级别行情,并按盘口指定档位快速报单。

一、核心接口说明

1. tick_data(context, data)

  • 运行场景:仅交易模块可用。
  • 运行频率:每 3 秒触发一次(交易时间 9:30 -- 14:59)。
  • 数据结构data[security]['tick'] 包含了当前的 Tick 盘口快照,如买卖档位信息 bid_grpoffer_grp

2. order_tick(sid, amount, priceGear='1', limit_price=None)

  • 使用限制:仅能在 tick_data 模块中使用。
  • 参数说明
    • sid (str):股票或标的代码,例如 '600570.SS'
    • amount (int):交易数量,正数表示买入,负数表示卖出。
    • priceGear (str):盘口档位选择。
      • 买档(买入方向/挂单):'1' ~ '5'(Level2 行情支持到 '10')。
      • 卖档(卖出方向/吃单):'-1' ~ '-5'(Level2 行情支持到 '-10')。
    • limit_price (float):买卖限价。当传入该参数时,下单价格优先以 limit_price 为准。

二、指定档位快速吃单与挂单代码示例

以下示例演示如何在 tick_data 函数中解析盘口买一价,并在满足条件时,按卖一档位(priceGear='-1')快速买入吃单或按买一档位(priceGear='1')挂单

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)

def tick_data(context, data):
    security = g.security
    
    # 校验 tick 数据
    if security not in data or 'tick' not in data[security]:
        return
        
    tick_info = data[security]['tick']
    
    # 获取买一档价格 (bid_grp[1][0] 为买一价)
    # 结构: {档位: [价格, 委托量, 委托笔数]}
    bid_grp = tick_info.get('bid_grp', {})
    if 1 in bid_grp:
        bid1_price = bid_grp[1][0]
        
        # 策略条件 1:价格上涨突破指定阈值,按卖一档位快速买入(吃单)
        if bid1_price > 35.50:
            # priceGear='-1' 表示以卖一档价格挂买单,实现快速吃单成交
            order_id = order_tick(security, 100, priceGear='-1')
            log.info(f"触发卖一吃单买入,订单编号: {order_id}")
            
        # 策略条件 2:价格回调时,按买一档位排队挂单
        elif bid1_price < 34.00:
            # priceGear='1' 表示以买一档价格挂买单
            order_id = order_tick(security, 100, priceGear='1')
            log.info(f"触发买一排队挂单,订单编号: {order_id}")

def handle_data(context, data):
    pass

三、注意事项与最佳实践

  1. 接口专属环境order_tick 是 tick 级别的专属下单接口,严禁在 handle_datarun_daily 中调用,否则会报错或无法下单。
  2. 限价优先级:如果同时指定了 priceGearlimit_price,ptrade 引擎将优先使用 limit_price 的具体数值报单。
  3. Level2 行情配合:如需使用 6~10 档位或获取更精准的逐笔委托/成交数据,需确认交易账户已开启 Level2 高级行情权限。