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_SELL
order_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对象或None
query_stock_positions: XtPosition列表或None
query_stock_orders: XtOrder列表或None
query_stock_trades: XtTrade列表或None

迁移注意事项:

  • 函数名完全相同query_stock_assetquery_stock_positionsquery_stock_ordersquery_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_callbackon_stock_order等);需注册回调实例

通用迁移建议:

  1. 将所有passorder调用替换为order_stock/order_stock_async,参数映射参考上表
  2. 将字符串accountid改为StockAccount(accountid)对象
  3. prType数值(5/11/14)替换为xtconstant.LATEST_PRICE/FIX_PRICE等常量
  4. 回调函数从全局定义改为继承XtQuantTraderCallback
  5. 查询函数基本可复用,仅需调整account参数类型

本文由 海星量化研究所 作者提供,转载请保留链接和署名!网址:https://qmt.hxquant.com/?id=69

声明

1.本站原创文章,转载需注明文章作者来源。 2.如果文章内容涉及版权问题,请联系我们删除,向本站投稿文章可能会经我们编辑修改。 3.本站对信息准确性或完整性不作保证,亦不对因使用该等信息而引发或可能引发的损失承担任何责任。

搜索
排行榜
关注我们

扫码开通QMT/ptrade