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

ptrade 平台如何利用 after_trading_end 自动导出交易对账单?(附 Python 源码)

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

问题描述

ptrade 盘后处理:利用 after_trading_end 自动导出交易对账单
ptrade如何编写盘后函数,在每天收盘后自动运行并导出当日的交易对账单csv文件?

解决方案

ptrade 盘后处理:利用 after_trading_end 自动导出交易对账单

在量化交易中,每日交易结束后的对账与数据备份是至关重要的环节。ptrade 平台提供了强大的盘后事件函数 after_trading_end 以及对账单导出接口 get_trades_file,支持在回测结束后或每日收盘后自动生成并导出交易对账单 CSV 文件。本文将为您详细介绍其实现方法并提供完整的 Python 源码。


一、 核心 API 介绍

1. 盘后函数 after_trading_end(context, data)

  • 触发时机:每天交易结束之后调用一次(回测和交易环境均支持,一般在 15:30 左右执行)。
  • 主要用途:用于处理每日收盘后的收尾工作,如清空临时变量、记录日志、导出对账单等。

2. 导出对账数据文件 get_trades_file(save_path='')

  • 使用场景仅在回测模块可用
  • 参数说明
    • save_path:导出对账数据的存储路径,默认保存在研究(notebook)的根目录下。
  • 返回值:成功返回导出文件的绝对路径,失败返回 None
  • 文件命名限制:长度不超过 256 个字符,且不能包含 :?,@#$&();"'<>~!%^*` 等特殊字符。

二、 自动导出对账单策略源码

以下是一个完整且简单的 ptrade 策略示例。该策略在盘中进行简单的买入操作,并在盘后自动触发 after_trading_end 函数,将当日的交易对账单导出至指定文件夹中。

# -*- coding: utf-8 -*-

def initialize(context):
    # 设置操作的股票池
    g.security = '600570.SS'  # 恒生电子
    set_universe(g.security)
    g.has_ordered = False

def handle_data(context, data):
    # 盘中简单买入 100 股作为测试数据
    if not g.has_ordered:
        order_id = order(g.security, 100)
        if order_id:
            log.info("盘中委托成功,订单编号为:%s" % order_id)
            g.has_ordered = True

def after_trading_end(context, data):
    """
    盘后处理函数:每日收盘后自动运行
    """
    log.info("开始执行盘后对账单导出...")
    
    # 1. 导出对账数据到默认根目录
    default_path = get_trades_file()
    if default_path:
        log.info("对账单已成功导出至默认目录:%s" % default_path)
    else:
        log.error("对账单导出失败!")
        
    # 2. 导出对账数据到自定义目录(例如:notebook 下的 user_data/daily_report 文件夹)
    # 注意:请确保在研究环境中已提前创建好对应的文件夹路径
    custom_path = get_trades_file('user_data/daily_report')
    if custom_path:
        log.info("对账单已成功导出至自定义目录:%s" % custom_path)

三、 导出 CSV 文件格式说明

导出的对账单 CSV 文件包含以下核心字段,方便您直接对接 Excel 或数据库进行分析:

字段名称 对应表头字段 说明
订单编号 order_id 平台委托的唯一标识(如 a6fbc1459588...
成交编号 trading_id 柜台返回的成交唯一标识
委托编号 entrust_id 柜台返回的委托唯一标识
标的代码 security_code 交易的证券代码(如 600570.XSHG
交易类型 order_type 买入或卖出
成交数量 volume 实际成交的股数/张数
成交价 price 实际成交价格
成交金额 total_money 成交总金额
交易费用 trading_fee 包含佣金、印花税、经手费等总费用
交易时间 trade_time 具体的成交时间戳

四、 注意事项

  1. 路径权限:在自定义 save_path 时,请确保 ptrade 的研究环境(Notebook)中存在该目录,否则可能导致写入失败。
  2. 实盘对账get_trades_file 接口目前仅支持回测环境。若在实盘/模拟盘中需要获取资金流水与交割单,请在 before_trading_startafter_trading_end 阶段调用 get_deliver(历史交割单)和 get_fundjour(历史资金流水)接口。