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

PTrade量化平台策略引擎中有哪些事件函数?它们的执行顺序是什么?

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

问题描述

PTrade策略引擎中有哪些事件函数,它们的作用和执行顺序是什么?

解决方案

PTrade量化引擎以事件触发为基础,通过一系列特定的事件函数来完成每个交易日的策略任务。了解这些函数的作用和执行顺序是编写PTrade策略的基础。

一、 PTrade策略引擎核心事件函数概览

在PTrade中,一个完整的策略生命周期主要由以下几个事件函数构成:

  1. initialize(context):初始化事件(必选
  2. before_trading_start(context, data):盘前事件(可选)
  3. handle_data(context, data):盘中事件(必选
  4. tick_data(context, data):Tick级盘中事件(可选,仅交易模块)
  5. after_trading_end(context, data):盘后事件(可选)
  6. on_order_response(context, order_list):委托主推事件(可选,仅交易模块)
  7. on_trade_response(context, trade_list):成交主推事件(可选,仅交易模块)

二、 事件函数详细解析与执行顺序

策略的执行严格按照时间轴推进,具体顺序和作用如下:

1. 策略启动阶段

  • initialize(context)
    • 作用:用于初始化策略的全局变量(如设置股票池 set_universe、设置基准 set_benchmark、设置定时任务 run_daily 等)。
    • 执行时机:该函数只会在回测和交易启动的时候运行一次

2. 每日盘前阶段

  • before_trading_start(context, data)
    • 作用:用于处理每天开盘前需要初始化的信息,例如获取前一交易日的收盘数据、更新每日股票池等。
    • 执行时机:每天开始交易前被调用一次。在回测中通常为8:30;在实盘交易中,开启交易时立即执行,隔日开始每天9:10分(默认)执行。

3. 每日盘中阶段(核心交易逻辑)

盘中阶段是策略执行买卖操作的主要时间段,根据策略频率的不同,触发不同的函数:

  • handle_data(context, data)
    • 作用:处理策略交易的主要模块,根据设定的周期频率获取行情并执行下单逻辑。
    • 执行时机
      • 日线级别:每天执行一次(回测为15:00,交易为尾盘固定时间如14:50)。
      • 分钟级别:每分钟执行一次(回测9:31-15:00,交易9:30-14:59)。
  • tick_data(context, data)
    • 作用:用于处理Tick级别的高频交易逻辑,可获取逐笔委托和逐笔成交数据(需Level2行情)。
    • 执行时机:每隔3秒执行一次(9:30-14:59)。
  • 主推事件(异步触发)
    • on_order_response:当委托单状态发生变化时立即触发,适合对速度要求高的策略。
    • on_trade_response:当有成交发生时立即触发。

4. 每日盘后阶段

  • after_trading_end(context, data)
    • 作用:用于处理每天收盘后的操作,如计算当日收益、保存持久化数据、打印盘后日志等。
    • 执行时机:每天交易结束后调用一次(一般为15:30)。

三、 总结与代码骨架示例

一个标准的PTrade策略骨架如下所示:

def initialize(context):
    # 1. 启动时运行一次
    g.security = '600570.SS'
    set_universe(g.security)

def before_trading_start(context, data):
    # 2. 每天盘前运行一次
    log.info("盘前准备...")

def handle_data(context, data):
    # 3. 盘中按周期循环运行(必选)
    order(g.security, 100)

def after_trading_end(context, data):
    # 4. 每天盘后运行一次
    log.info("盘后结算...")

注意事项initializehandle_data 是编写PTrade策略的必选项,缺少这两个函数策略将无法运行。其他函数可根据实际业务需求按需定义。