PTrade 策略生命周期与运行时间
PTrade 以事件驱动方式运行策略。initialize 和 handle_data 是最基础的必选函数,盘前与盘后函数按需定义。
initialize
策略启动时执行一次,用于设置股票池、参数、基准、费用和全局状态。
before_trading_start
每个交易日盘前执行。为兼容不同券商环境,建议写成 before_trading_start(context, data=None)。
handle_data
盘中按策略频率触发。日线和分钟频率的实际时间以券商配置及回测环境为准。
after_trading_end
盘后执行,适合汇总日志和保存状态。建议定义为 after_trading_end(context, data=None)。
调用顺序
启动 → initialize → 每日盘前 → handle_data → 每日盘后
回调职责对照
| 回调 | 典型用途 | 不适合放入的工作 |
|---|---|---|
initialize |
初始化参数、股票池、基准和状态 | 每日重复执行的行情判断 |
before_trading_start |
盘前更新股票池、重置日内标记 | 假设盘中实时行情已经就绪 |
handle_data |
按策略频率读取数据、计算信号和执行风控 | 无条件重复注册定时任务 |
after_trading_end |
汇总当日订单、成交、持仓和日志 | 依赖下一交易日数据的判断 |
验证实际顺序
在每个回调中输出日期、时间和回调名,至少跨两个交易日运行。若某个回调没有出现,应先检查策略频率、回测区间和函数签名,再检查业务逻辑。