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

PTrade 平台 after_trading_end 盘后事件函数使用指南

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

问题描述

PTrade中after_trading_end函数的作用是什么,在什么时候执行?

想了解盘后事件函数的使用场景

解决方案

PTrade after_trading_end 函数详解

在 PTrade 量化交易引擎中,策略的运行基于事件驱动框架。after_trading_end 是四大核心事件函数之一(盘后事件),专门用于处理每个交易日收盘后的逻辑。

1. 函数的作用

after_trading_end(context, data) 函数会在每天交易结束之后被调用,主要用于处理每天收盘后的收尾操作。如果你的策略不需要进行盘后处理,这个函数是可选的,可以在策略代码中不进行定义。

2. 执行时间

  • 执行频率:每个交易日只会执行一次
  • 具体时间:执行时间由券商的实际配置决定,一般默认在 15:30 左右触发。

3. 典型使用场景

盘后事件函数非常适合执行那些不需要在盘中高频触发,但对策略复盘和次日准备至关重要的任务:

  1. 盘后数据统计与对账
    • 调用 get_trades_file() 获取当天的对账数据文件(CSV格式),用于核对订单和成交。
    • 调用 get_deliver() 获取历史交割单信息。
    • 调用 get_fundjour() 获取资金流水信息。
  2. 策略状态持久化
    • 将策略运行过程中产生的中间变量(如自定义的仓龄记录、动态计算的阈值等)通过 pickle 模块保存到本地,确保第二天重启策略时逻辑连贯。
  3. 盘后固定价格委托
    • 虽然盘后固定价委托(如科创板/创业板)通常在 15:00-15:30 进行,但可以在盘后事件中对当天的委托结果进行最终确认。
  4. 发送交易总结报告
    • 统计当天的盈亏、持仓变化,并通过邮件或企业微信发送给策略管理者。

4. 可调用的 API 接口

after_trading_end 函数中,不能调用下单接口(如 order),但可以调用大量查询类接口,例如:

  • 账户与订单查询get_open_orders, get_individual_entrust, get_individual_transcation
  • 行情与基础数据get_history, get_price, get_stock_info, get_fundamentals
  • 其他get_trades_file, get_deliver, get_fundjour, get_research_path 等。

5. 代码示例

以下是一个包含 after_trading_end 的简单策略框架示例:

def initialize(context):
    # 初始化全局变量和股票池
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 盘中交易逻辑
    pass

def after_trading_end(context, data):
    # 盘后处理逻辑
    log.info("交易日结束,开始执行盘后处理...")
    
    # 1. 打印当天关注标的的信息
    log.info("今日关注标的: %s" % g.security)
    
    # 2. 获取并打印当天未完成的订单
    open_orders = get_open_orders()
    log.info("今日未完成订单: %s" % open_orders)
    
    # 3. 获取对账文件路径
    try:
        file_path = get_trades_file()
        log.info("今日对账文件已生成,路径为: %s" % file_path)
    except Exception as e:
        log.error("获取对账文件失败: %s" % e)

总结after_trading_end 是 PTrade 策略中用于“打扫战场”的函数,合理利用它可以让你的量化策略更加健壮,便于后期的归因分析与实盘监控。