3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,策略的运行基于事件驱动的业务流程框架。理解各类事件函数的执行顺序、触发时机以及作用域,是编写高效、稳定量化策略的基础。
ptrade 策略以交易日为单位周期性运行,事件函数的整体执行顺序如下:
[策略启动]
│
▼
1. initialize(context) ───► (仅在策略启动时运行一次)
│
▼
[每个交易日循环]
│
├──► 2. before_trading_start(context, data) ───► (盘前运行,约 08:30 / 09:10)
│
├──► 3. handle_data(context, data) ───────────► (盘中按日/分钟周期重复触发)
│ ├─ tick_data(context, data) ► (可选:tick级别,每3秒触发)
│ └─ run_interval / run_daily ► (可选:定时或按间隔触发)
│
└──► 4. after_trading_end(context, data) ────► (盘后收盘运行,约 15:30)
g.security)、设置比较基准、佣金费率、滑点及定时任务。set_universe()、set_benchmark()、run_daily()、run_interval()、set_parameters() 等。def initialize(context):
# 设置初始股票池
g.security = '600570.SS'
set_universe(g.security)
# 设置基准为沪深300
set_benchmark('000300.SS')
get_history()、get_index_stocks()、filter_stock_by_status()、get_fundamentals() 等。def before_trading_start(context, data):
# 重置每日交易标识
g.flag = False
# 过滤ST及停牌股票
g.valid_stocks = filter_stock_by_status([g.security], filter_type=["ST", "HALT"])
order()、order_target()、order_value()、cancel_order()、get_position() 等。def handle_data(context, data):
if not g.flag and g.security in g.valid_stocks:
# 盘中触发买入下单
order(g.security, 100)
g.flag = True
get_trades_file()、get_all_orders()、get_trades() 等。def after_trading_end(context, data):
# 盘后导出对账文件并记录日志
log.info("当日交易结束,导出成交对账信息")token = get_trades_file()
除了常规的 4 个主生命周期函数外,ptrade 还提供更细粒度的盘中响应处理:
tick_data(context, data):盘中 Tick 级触发(约每 3 秒一次),需通过 order_tick 下单。on_order_response(context, order_list):委托状态变更时即时回调的主推函数,速度高于轮询查询。on_trade_response(context, trade_list):成交回报即时回调函数,适合对速度要求极高的高频策略。set_benchmark 只能在 initialize 中使用;交易下单接口(如 order)应在 handle_data 或主推事件中调用。g。若在 initialize 中初始化的变量被持久化保存,旧值会覆盖初始化值。如果无需持久化,变量名建议以 __(双下划线)开头。