3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
PTrade 量化引擎以事件触发为基础,通过在特定的时间点或行情变化时触发相应的函数来完成交易逻辑。一个完整的 PTrade 策略框架主要由初始化、盘前、盘中、盘后等事件函数构成。
以下是 PTrade 策略引擎的完整框架及各事件函数的详细介绍:
initialize(context) —— 初始化事件(必选)g.xxx)、设置股票池(set_universe)、设置基准、费率、滑点以及注册定时任务(run_daily, run_interval)等。before_trading_start(context, data) —— 盘前事件(可选)handle_data(context, data) —— 盘中事件(必选)data(当前周期的行情数据)进行条件判断并执行下单操作(如 order)。after_trading_end(context, data) —— 盘后事件(可选)tick_data(context, data) —— Tick 级盘中事件order_tick 进行下单。on_order_response(context, order_list) —— 委托主推事件on_trade_response(context, trade_list) —— 成交主推事件除了上述固定的生命周期事件,PTrade 还支持自定义定时任务:
run_daily(context, func, time):按日周期在指定时间(如 time='09:31')触发自定义函数。run_interval(context, func, seconds):按设定的秒数间隔(最小3秒)循环触发自定义函数(仅交易模块可用)。def initialize(context):
# 1. 初始化:设置股票池和全局变量
g.security = '600570.SS'
set_universe(g.security)
# 注册定时任务,每天 14:50 执行
run_daily(context, my_daily_task, time='14:50')
def before_trading_start(context, data):
# 2. 盘前处理:打印日志或获取昨日数据
log.info("盘前准备,当前标的: %s" % g.security)
def handle_data(context, data):
# 3. 盘中处理:核心交易逻辑
current_price = data[g.security]['close']
if current_price > 40:
order(g.security, 100)
log.info("价格突破40,买入100股")
def after_trading_end(context, data):
# 4. 盘后处理:总结当日交易
log.info("今日交易结束,进行盘后清算")
def my_daily_task(context):
# 自定义定时任务逻辑
log.info("执行尾盘定时任务")
总结:PTrade 的策略引擎通过 initialize -> before_trading_start -> handle_data (或 tick_data/定时任务) -> after_trading_end 构成了一个完整的时间轴闭环,开发者只需在对应的事件函数中填入业务逻辑即可实现自动化交易。