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

PTrade量化平台支持的其他事件函数详解(Tick与主推事件)

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

问题描述

PTrade中除了四个主要事件函数外还支持哪些事件?

解决方案

在PTrade量化引擎中,除了最基础的四个主要事件函数(initializebefore_trading_starthandle_dataafter_trading_end)之外,为了满足更高频和更精细的交易需求,还支持以下几个重要的事件函数:

1. tick_data(context, data) - Tick级别数据处理

  • 使用场景:仅在交易模块可用。
  • 功能说明:用于处理tick级别的策略交易逻辑,每隔3秒执行一次。如果策略对速度要求极高,需要基于逐笔委托、逐笔成交或Tick快照进行判断,则必须使用此函数。
  • 注意事项
    • 执行时间为 9:30 -- 14:59。
    • 在该函数中只能使用 order_tick 进行对应的下单操作。
    • 参数 data 中包含的逐笔委托(order)、逐笔成交(transcation)数据需开通Level2行情才有数据推送。

2. on_order_response(context, order_list) - 委托主推事件

  • 使用场景:仅在交易模块可用。
  • 功能说明:该函数会在委托主推回调时响应。相比于引擎轮询或调用 get_order()/get_orders() 函数,它更新Order状态的速度更快,非常适合对速度要求比较高的策略。
  • 注意事项
    • 目前可接收股票、可转债、ETF、LOF、期货代码的主推数据。
    • 当在主推里调用委托接口时,需要进行判断处理,避免无限迭代循环下单的问题。

3. on_trade_response(context, trade_list) - 成交主推事件

  • 使用场景:仅在交易模块可用。
  • 功能说明:该函数会在成交主推回调时响应。与委托主推类似,它能以最快速度获取订单的成交状态变化,适合高频或需要立即根据成交结果进行下一步操作的策略。
  • 注意事项
    • 同样需要注意避免在回调中无条件触发新的委托,导致死循环。

补充:定时触发机制

除了上述被动触发的事件函数外,PTrade还支持通过在 initialize 中设定定时任务来主动触发自定义函数:

  • run_daily(context, func, time):按日周期在指定时间点(如 time='09:31')触发自定义函数。
  • run_interval(context, func, seconds):按设定的时间间隔(如 seconds=10,最小3秒)周期性触发自定义函数,仅交易模块可用。

合理利用这些高级事件和定时机制,可以极大地丰富PTrade策略的交易维度和响应速度。