3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
after_trading_end 函数详解在 PTrade 量化交易引擎中,策略的运行基于事件驱动框架。after_trading_end 是四大核心事件函数之一(盘后事件),专门用于处理每个交易日收盘后的逻辑。
after_trading_end(context, data) 函数会在每天交易结束之后被调用,主要用于处理每天收盘后的收尾操作。如果你的策略不需要进行盘后处理,这个函数是可选的,可以在策略代码中不进行定义。
盘后事件函数非常适合执行那些不需要在盘中高频触发,但对策略复盘和次日准备至关重要的任务:
get_trades_file() 获取当天的对账数据文件(CSV格式),用于核对订单和成交。get_deliver() 获取历史交割单信息。get_fundjour() 获取资金流水信息。pickle 模块保存到本地,确保第二天重启策略时逻辑连贯。在 after_trading_end 函数中,不能调用下单接口(如 order),但可以调用大量查询类接口,例如:
get_open_orders, get_individual_entrust, get_individual_transcationget_history, get_price, get_stock_info, get_fundamentalsget_trades_file, get_deliver, get_fundjour, get_research_path 等。以下是一个包含 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 策略中用于“打扫战场”的函数,合理利用它可以让你的量化策略更加健壮,便于后期的归因分析与实盘监控。