miniQMT代码切换到QMT代码操作指南
PTD
阅读:6
2026-07-06 16:08:08
评论:0
以下以QMT内置Python文档(innerApi)和MiniQMT的xtquant文档(nativeApi)为依据,仅对比交易相关函数的代码用法、函数签名、参数差异及迁移注意事项。
一、下单函数
| 对比维度 | QMT(内置Python) | MiniQMT(xtquant) |
|---|---|---|
| 核心函数 | passorder() |
order_stock()(同步)/ order_stock_async()(异步) |
| 函数签名 | passorder(opType, orderType, accountid, orderCode, prType, price, volume, strategyName, quickTrade, userOrderId, ContextInfo) |
order_stock(account, stock_code, order_type, order_volume, price_type, price, strategy_name, order_remark)order_stock_async(account, stock_code, order_type, order_volume, price_type, price, strategy_name, order_remark) |
| 参数说明 | opType: 23=买入,24=卖出orderType: 1101=按股/手,1102=按金额accountid: 资金账号(str)orderCode: 证券代码,如”600000.SH”prType: 5=最新价,11=限价,14=对方最优price: 委托价格volume: 委托数量strategyName: 策略名称quickTrade: 0=逐K线生效,2=立即下单userOrderId: 用户自定义委托ID(可缺省)ContextInfo: 系统上下文对象 |
account: StockAccount对象stock_code: 证券代码,如’600000.SH’order_type: xtconstant.STOCK_BUY / STOCK_SELLorder_volume: 委托数量(股/张)price_type: xtconstant.FIX_PRICE(限价) / xtconstant.LATEST_PRICE(最新价)price: 委托价格(市价填0)strategy_name: 策略名称order_remark: 委托备注 |
| 返回值 | 无明确返回值,通过回调获取结果 | 成功返回order_id(>0),失败返回-1 |
| 代码示例 | python<br># 限价买入100股<br>passorder(23, 1101, account,<br> '600000.SH', 11, 10.50, 100,<br> 'my_strategy', 0, '', C)<br># 立即下单<br>passorder(23, 1101, account,<br> '600000.SH', 5, -1, 100,<br> 'my_strategy', 2, 'msg', C)<br> |
python<br># 同步限价买入<br>order_id = xt_trader.order_stock(<br> account, '600000.SH',<br> xtconstant.STOCK_BUY, 1000,<br> xtconstant.FIX_PRICE, 10.5,<br> 'my_strategy', 'order_test'<br>)<br># 异步市价买入<br>seq = xt_trader.order_stock_async(<br> account, '600000.SH',<br> xtconstant.STOCK_BUY, 1000,<br> xtconstant.LATEST_PRICE, 0,<br> 'hft', 'fast_order'<br>)<br> |
迁移注意事项:
- QMT使用单一
passorder函数通过opType数值(23/24)区分买卖;MiniQMT使用order_type常量(STOCK_BUY/STOCK_SELL) - QMT报价类型用数值(5/11/14);MiniQMT用常量(
FIX_PRICE/LATEST_PRICE) - QMT的
quickTrade参数控制是否立即下单(0=逐K线,2=立即);MiniQMT通过同步/异步函数区分 - QMT必须传入
ContextInfo对象;MiniQMT无需此参数 - QMT的
accountid是字符串;MiniQMT需构建StockAccount对象 - 代码不能直接复制粘贴,需重写下单逻辑
二、撤单函数
| 对比维度 | QMT(内置Python) | MiniQMT(xtquant) |
|---|---|---|
| 核心函数 | 通过passorder配合特定参数,或使用内置撤单接口 |
cancel_order_stock()(同步)/ cancel_order_stock_async()(异步) |
| 函数签名 | 取决于具体实现(文档中无独立撤单函数签名) | cancel_order_stock(account, order_id)cancel_order_stock_async(account, order_id)cancel_order_stock_sysid_async(account, market, order_sysid) |
| 参数说明 | — | account: StockAccount对象order_id: 系统生成的订单编号market: 交易市场(xtconstant.SH_MARKET等)order_sysid: 券商柜台合同编号(str) |
| 返回值 | — | 同步撤单返回撤单结果;异步撤单返回撤单请求序号(>0成功,-1失败) |
| 代码示例 | (文档中未提供独立撤单示例) | python<br># 按订单编号撤单<br>cancel_result = xt_trader.cancel_order_stock_async(<br> account, order_id<br>)<br># 按柜台合同编号撤单<br>cancel_result = xt_trader.cancel_order_stock_sysid_async(<br> account, xtconstant.SH_MARKET, "100"<br>)<br> |
迁移注意事项:
- QMT撤单方式依赖具体柜台实现,文档中未提供独立撤单函数签名;MiniQMT提供明确的同步/异步撤单接口
- MiniQMT支持两种撤单方式:按系统订单编号(
order_id)和按券商柜台合同编号(order_sysid) - 撤单失败信息通过
on_order_error回调或撤单失败主推接口返回
三、账户信息查询
| 对比维度 | QMT(内置Python) | MiniQMT(xtquant) |
|---|---|---|
| 资产查询 | query_stock_asset(account) |
query_stock_asset(account) |
| 持仓查询 | query_stock_positions(account) |
query_stock_positions(account) |
| 委托查询 | query_stock_orders(account, cancelable_only=False) |
query_stock_orders(account, cancelable_only=False) |
| 成交查询 | query_stock_trades(account) |
query_stock_trades(account) |
| 参数说明 | account: 资金账号 |
account: StockAccount对象cancelable_only: 是否仅查询可撤委托(默认False) |
| 返回值 | query_stock_asset: XtAsset对象或Nonequery_stock_positions: XtPosition列表或Nonequery_stock_orders: XtOrder列表或Nonequery_stock_trades: XtTrade列表或None |
迁移注意事项:
- 函数名完全相同(
query_stock_asset、query_stock_positions、query_stock_orders、query_stock_trades),是迁移最顺畅的部分 - 核心区别在于
account参数类型:QMT接受字符串资金账号,MiniQMT需要StockAccount对象 - 返回值数据结构基本一致(XtAsset/XtPosition/XtOrder/XtTrade),字段名需对照文档确认
- 查询失败均返回
None
四、成交回报与回调函数
| 对比维度 | QMT(内置Python) | MiniQMT(xtquant) |
|---|---|---|
| 回调机制 | 在策略中直接定义全局回调函数 | 继承XtQuantTraderCallback类并重写方法 |
| 委托回调 | order_callback(ContextInfo, orderInfo)参数: ContextInfo上下文, orderInfo委托对象 |
on_stock_order(self, order)参数: order(XtOrder对象) |
| 成交回调 | deal_callback(ContextInfo, dealInfo)参数: ContextInfo, dealInfo成交对象 |
on_stock_trade(self, trade)参数: trade(XtTrade对象) |
| 资金回调 | account_callback(ContextInfo, accountInfo) |
on_stock_asset(self, asset)参数: asset(XtAsset对象) |
| 持仓回调 | position_callback(ContextInfo, positionInfo) |
on_stock_position(self, position)参数: position(XtPosition对象) |
| 错误回调 | orderError_callback(ContextInfo, passOrderInfo, msg) |
on_order_error(self, order_error) |
| 连接状态回调 | 无明确对应 | on_disconnected(self) |
迁移注意事项:
- QMT回调函数为全局函数,直接在策略中定义即可;MiniQMT需继承
XtQuantTraderCallback类并注册 - QMT回调第一个参数均为
ContextInfo;MiniQMT回调第一个参数均为self - QMT回调函数名(
order_callback/deal_callback)与MiniQMT(on_stock_order/on_stock_trade)完全不同 - MiniQMT需先创建回调实例并注册:
xt_trader.register_callback(callback_obj) - 数据结构字段名有差异,需对照各自数据字典
五、迁移总结
| 迁移项 | 改动难度 | 关键改动点 |
|---|---|---|
| 下单 | 🔴 高 | 函数名从passorder改为order_stock;参数从数值常量改为xtconstant枚举;需构建StockAccount对象;移除ContextInfo参数 |
| 撤单 | 🟡 中 | QMT无独立撤单函数文档;MiniQMT使用cancel_order_stock系列,支持按订单编号和按柜台合同编号两种方式 |
| 账户查询 | 🟢 低 | 函数名完全相同;仅需将account从字符串改为StockAccount对象 |
| 回调函数 | 🔴 高 | 从全局函数改为继承类;函数名全部变更(order_callback→on_stock_order等);需注册回调实例 |
通用迁移建议:
- 将所有
passorder调用替换为order_stock/order_stock_async,参数映射参考上表 - 将字符串
accountid改为StockAccount(accountid)对象 - 将
prType数值(5/11/14)替换为xtconstant.LATEST_PRICE/FIX_PRICE等常量 - 回调函数从全局定义改为继承
XtQuantTraderCallback类 - 查询函数基本可复用,仅需调整
account参数类型
本文由 海星量化研究所 作者提供,转载请保留链接和署名!网址:https://qmt.hxquant.com/?id=69
声明
1.本站原创文章,转载需注明文章作者来源。 2.如果文章内容涉及版权问题,请联系我们删除,向本站投稿文章可能会经我们编辑修改。 3.本站对信息准确性或完整性不作保证,亦不对因使用该等信息而引发或可能引发的损失承担任何责任。







