问题描述
没有盘后处理逻辑可以省略吗
解决方案
在 PTrade 量化平台中,如果您的策略不需要进行盘后处理,是完全可以省略 after_trading_end 函数的。
官方文档依据
根据 PTrade API 文档的说明:
- 可选性:
after_trading_end是一个可选的事件函数。文档明确指出:“该函数会在每天交易结束之后调用,用于处理每天收盘后的操作,如无盘后处理需求,该函数可以在策略中不做定义。” - 必选结构:在 PTrade 的业务流程框架中,只有
initialize(初始化事件)和handle_data(盘中事件)是一个允许运行策略的最基础结构,也就是必选项。而before_trading_start和after_trading_end都是可以按需运行的。
策略代码示例
如果您没有盘前和盘后的处理逻辑,一个最精简且完整的 PTrade 策略结构只需要包含以下两个函数即可:
def initialize(context):
# 必选:初始化策略,设置股票池等
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
# 必选:盘中处理逻辑,执行交易等
order(g.security, 100)
总结
为了保持代码的简洁性,如果您没有在每天 15:30(一般券商配置的盘后运行时间)执行特定任务(如打印全天交易总结、保存自定义的盘后数据、发送邮件通知等)的需求,请直接省略 after_trading_end 函数,这不会对您的策略运行产生任何负面影响。