量化交易:Ptrade接口详解,与miniQMT的6大区别
发布时间:4小时前阅读:19
6大核心维度对比:一表看懂区别
很多人纠结在QMT和Ptrade之间,先用一张表把本质区别说清楚:
| 对比维度 | miniQMT(迅投) | Ptrade(恒生) |
| 运行方式 | 本地客户端,需开机 | 云端服务器,关机也跑 |
| 策略语言 | Python + VBA | 仅 Python |
| 交易品种 | 股票/ETF/期货/期权/两融/港股 | 股票/ETF/两融/可转债 |
| 行情数据 | 自行下载,Tick从2018年起 | 自带免费L2实时行情 |
| 策略数量 | 不限(取决于本机配置) | 实盘8个,模拟5个 |
| 策略隐私 | 本地加密,代码不外泄 | 上传云端,存隐私风险 |
| 编程门槛 | 需自己搭建环境,灵活度高 | 有可视化生成器,零基础可用 |
| 接口风格 | xtdata + xttrader 模块化 | 事件驱动框架,类Zipline风格 |
选择建议
懂编程 + 多品种 + 重隐私 → 选 miniQMT
要省心 + 纯股票ETF + 不怕关机 → 选 Ptrade
都要?两个都开通,本地开发用QMT,实盘托管用Ptrade
Ptrade 框架结构:事件驱动机制
Ptrade 采用事件驱动框架,你不需要写主循环,平台按时间轴自动调用你写好的函数:
| 函数名 | 执行时机 | 功能说明 | 是否必选 |
| initialize(context) | 策略启动时(仅一次) | 全局初始化,设置参数/股票池 | ✅ 必选 |
| handle_data(context, data) | 日线级14:50 / 分钟级每分钟 | 核心逻辑:信号判断和下单 | ✅ 必选 |
| before_trading_start(context) | 每日 9:10 | 盘前准备:更新股票池/过滤股票 | 可选 |
| after_trading_end(context) | 每日 15:30 | 盘后处理:统计收益/保存日志 | 可选 |
| tick_data(context, data) | Tick级别约每3秒 | 高频行情处理/盘口捕捉 | 可选 |
| run_daily(context, func, time) | 指定时间 | 定时任务:如10:00调仓 | 可选 |
| run_interval(context, func, seconds) | 自定义间隔≥3秒 | 灵活高频控制 | 可选 |
| on_order_response(context, order_list) | 委托状态变化 | 跟踪委托进度/拒单处理 | 可选 |
| on_trade_response(context, trade_list) | 成交发生时 | 成交后处理:止损/补仓/通知 | 可选 |
▶ 策略框架最简模板:
行情接口:怎么拿数据
Ptrade 行情接口分两类:历史数据用 get_history,实时快照用 get_snapshot:
| 函数名 | 功能 | 参数示例 |
| get_history() | 历史K线数据(最常用) | get_history(stock, count, '1d', ['close']) |
| get_price() | 指定时间段行情 | get_price('600519.SH', '20240101', '20241231') |
| get_snapshot() | 实时行情快照 | get_snapshot('600519.SH') |
| data.current() | handle_data中获取当前行情 | data.current('600519.SH', 'close') |
| get_individual_entrust() | L2逐笔委托(需L2权限) | get_individual_entrust('600519.SH') |
| get_gear_price() | 五档盘口数据 | get_gear_price('600519.SH') |
| get_fundamentals() | 财务基本面数据 | get_fundamentals(['600519.SH'], date=None) |
| get_index_stocks() | 指数成分股列表 | get_index_stocks('000300.SH') |
▶ 实战代码:拿历史K线 + 实时快照
交易接口:下单/撤单/查询
Ptrade 的下单接口比 miniQMT 更「高级」,直接支持按金额、按仓位比例下单:
| 函数名 | 功能 | 参数示例 |
| order() | 按股数买卖(最常用) | order('600519.SH', 100, LimitOrderStyle(price)) |
| order_target() | 调整至目标股数 | order_target('600519.SH', 0) # 清仓 |
| order_value() | 按金额下单 | order_value('600519.SH', 50000) # 买5万元 |
| order_target_value() | 调整至目标市值 | order_target_value('600519.SH', 100000) |
| order_market() | 市价单 | order_market('600519.SH', 100, 'buy') |
| order_tick() | Tick触发下单 | 在tick_data中使用 |
| after_trading_order() | 盘后固定价委托 | after_trading_order('600519.SH', 100, 'buy') |
| cancel_order() | 撤单 | cancel_order(order_id) |
| cancel_order_ex() | 撤单(扩展版) | cancel_order_ex(order_id) |
| get_open_orders() | 未完成订单列表 | orders = get_open_orders() |
| get_orders() | 全部订单 | get_orders() |
| get_trades() | 当日成交 | get_trades() |
| get_position() | 单只股票持仓 | pos = get_position('600519.SH') |
| get_positions() | 多只股票持仓 | get_positions(['600519.SH', '000001.SZ']) |
▶ 实战代码:完整买卖流程
Context 对象:账户信息怎么读
Ptrade 把账户状态都封装在 context 对象里,不需要单独调查询接口:
| 函数名 | 功能 | 参数示例 |
| context.portfolio.cash | 可用资金(元) | cash = context.portfolio.cash |
| context.portfolio.total_value | 账户总资产 | total = context.portfolio.total_value |
| context.portfolio.positions | 全部持仓字典 | pos = context.portfolio.positions.get(code) |
| context.portfolio.positions[code].total_amount | 某股持仓总量 | vol = pos.total_amount |
| context.portfolio.positions[code].avg_cost | 持仓均价/成本 | cost = pos.avg_cost |
| context.portfolio.positions[code].market_value | 持仓市值 | mv = pos.market_value |
| context.blotter.current_dt | 当前策略时间 | dt = context.blotter.current_dt |
miniQMT vs Ptrade 接口风格对比
miniQMT:主动查询风格,xt_trader.query_stock_asset(acc)
Ptrade:被动框架风格,直接读 context.portfolio.cash
Ptrade 代码更简洁,miniQMT 控制权更强
两者都支持回调推送,但触发方式不同
Ptrade 高频避坑点
坑1:initialize 和 handle_data 都不能省
哪怕什么都不做,也要写上 pass,缺少任何一个策略直接报错
坑2:handle_data 里不要写耗时操作
Ptrade按分钟推送,函数执行时间超过60秒会被跳过,复杂计算放 before_trading_start
坑3:策略数量上限
实盘最多8个,超出无法新增,旧策略必须先停止或删除
坑4:策略上传云端有隐私风险
帝纳波利策略等核心逻辑不建议放Ptrade实盘,建议用miniQMT本地跑
坑5:外部数据接入受限
Ptrade不支持pip安装第三方库,只能通过 get_research_path() 读取本地文件
坑6:order() 返回值不是数字
Ptrade的order()返回 Order 对象,不是像QMT那样的int,撤单要传整个对象
总结
关注"叩富问财"公众号,回复"资深吴经理",联系专属客户经理开通量化交易权限!
立即行动:打开微信,搜索"叩富问财",在对话框中输入"资深吴经理",开启你的量化交易之旅!
温馨提示:投资有风险,选择需谨慎。
下一篇资讯:
暂无下一篇
-
REITs打新日历:钱江隧道项目 ⌈隧道REIT⌋ 本周三4月1日发售!(附认购操作指南)
2026-03-30 14:46
-
官方定调“词元”!两年千倍增长的AI新赛道,核心机会全梳理
2026-03-30 14:46
-
社保基金“抄底”信号!长线资金压舱,这三大方向值得普通人借鉴
2026-03-30 14:46


问一问

+微信
分享该文章
