3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
PTrade量化引擎以事件触发为基础,通过一系列特定的事件函数来完成每个交易日的策略任务。了解这些函数的作用和执行顺序是编写PTrade策略的基础。
在PTrade中,一个完整的策略生命周期主要由以下几个事件函数构成:
initialize(context):初始化事件(必选)before_trading_start(context, data):盘前事件(可选)handle_data(context, data):盘中事件(必选)tick_data(context, data):Tick级盘中事件(可选,仅交易模块)after_trading_end(context, data):盘后事件(可选)on_order_response(context, order_list):委托主推事件(可选,仅交易模块)on_trade_response(context, trade_list):成交主推事件(可选,仅交易模块)策略的执行严格按照时间轴推进,具体顺序和作用如下:
initialize(context)
set_universe、设置基准 set_benchmark、设置定时任务 run_daily 等)。before_trading_start(context, data)
盘中阶段是策略执行买卖操作的主要时间段,根据策略频率的不同,触发不同的函数:
handle_data(context, data)
tick_data(context, data)
on_order_response:当委托单状态发生变化时立即触发,适合对速度要求高的策略。on_trade_response:当有成交发生时立即触发。after_trading_end(context, data)
一个标准的PTrade策略骨架如下所示:
def initialize(context):
# 1. 启动时运行一次
g.security = '600570.SS'
set_universe(g.security)
def before_trading_start(context, data):
# 2. 每天盘前运行一次
log.info("盘前准备...")
def handle_data(context, data):
# 3. 盘中按周期循环运行(必选)
order(g.security, 100)
def after_trading_end(context, data):
# 4. 每天盘后运行一次
log.info("盘后结算...")
注意事项:initialize 和 handle_data 是编写PTrade策略的必选项,缺少这两个函数策略将无法运行。其他函数可根据实际业务需求按需定义。