PTrade 量化入门避坑指南:API 核心要点梳理
对于 PTrade 量化新手而言,API 的正确使用是策略落地的关键。本文整理了入门阶段需重点关注的模块差异、函数用法及实操注意事项,帮助快速避开常见误区。
一、先明确模块场景差异
策略开发需区分三大核心场景,不同模块的函数调用权限不同,不可混淆使用:
交易模块:面向实时交易环境,支持实盘相关函数
回测模块:基于历史数据验证策略,部分函数仅此处可用
研究模块:专注数据分析与策略探索,不支持交易类函数
二、核心函数的必选与可选区分
函数名 类型 核心说明
initialize 必选 回测 / 交易启动时仅运行一次,负责策略初始化
handle_data 必选 交易时段按周期(日级 / 分钟级)执行,是策略核心逻辑载体
before_trading_start 可选 交易日开始前执行,回测 8:30 触发,实盘默认 9:10
after_trading_end 可选 交易日结束后默认 15:30 执行,可用于数据统计或结果复盘
tick_data 可选 仅交易模块可用,每 3 秒执行一次(9:30-14:59),需 Level2 行情支持
on_order_response 可选 交易模块专属,委托状态实时回调,比 get_order () 获取结果更快捷
on_trade_response 可选 交易模块专属,成交状态实时回调,效率优于 get_trades ()
三、高频核心函数实操指南
-
initialize(context)
核心作用:完成策略初始化,仅在启动时运行一次,适用于回测和交易模块。
常用接口:
set_universe ():设置策略对应的股票池,回测与交易均支持
set_benchmark ():指定策略对比基准,用于业绩评估
set_commission ():仅回测时可设置佣金比例,实盘按券商规则执行
run_daily ():调度每日需执行的任务,回测和交易模块通用 -
handle_data(context, data)
核心作用:按设定周期处理交易逻辑,是策略执行的核心,支持回测和交易模块。
执行时间:
日级策略:回测 15:00 执行,实盘时间以券商配置为准
分钟级策略:回测 9:31-15:00,实盘 9:30-14:59
核心接口:order ()(下单)、get_price ()(获取行情价格)、cancel_order ()(撤单)、get_position ()(查询持仓) -
tick_data(context, data)
核心作用:处理 Tick 级高频数据,需开通 Level2 行情权限。
数据结构:以股票代码为键,包含逐笔委托(order)、当前 Tick 快照(tick)、逐笔成交(transcation)三类 DataFrame 数据。
关键信息:tick 包含买卖档位、成交量等;委托 / 成交方向以 0(卖)、1(买)标识。
优化技巧:调用 set_parameters (tick_data_no_l2="1") 可禁用非必要 L2 字段,提升运行速度。
四、委托与成交回调函数用法
- on_order_response(context, order_list)
回调参数:order_list 为委托信息列表,包含委托编号、委托状态、委托类别(0 = 委托、2 = 撤单、4 = 确认)、委托属性(d = 限价委托、T = 即时成交剩余撤销)等字段。
优势:实时获取委托状态,响应速度快于 get_order () 接口。 - on_trade_response(context, trade_list)
回调参数:trade_list 为成交信息列表,包含成交价格、交易方向(1 = 买、2 = 卖)、成交编号等核心字段。
注意事项:回调函数中下单需添加额外判断条件,避免出现无限循环调用。
五、新手必避的关键误区
模块混用:研究模块不支持 order () 等交易类函数,需严格按场景调用。
时间把控:before_trading_start 在实盘若早于 9:10 调用行情,需通过 sleep 等待;tick_data 执行耗时超 3 秒会导致数据堵塞丢弃。
功能扩展:需接收非策略主推或启用撤单回调关联时,可调用 set_parameters () 设置对应参数。
标的适配:期货、期权策略需使用专属函数,如 set_future_commission ()、get_opt_contracts () 等。
量化ptrade qmt miniqmt开通门槛全网最低,佣金最低,需要联系加v资询,备注:量化开户
