Skip to content

QMT passorder 返回了但没成交

passorder 调通了、日志里也有返回,账户却没仓、没成交——多半把「委托发出去了」当成「已经成交」。这是机制,不是偶发 bug。

不构成投资建议,不代操盘。

结论

  • 返回值:表示下单请求被客户端接受(或给出错误码),不是成交确认。
  • 成交:看 deal_callback / 持仓变化,或主动查 get_trade_detail_dataDEAL / ORDER
  • 废单、部成、拒单:走委托状态,不是「没返回」。

完整回调写法见 委托回调怎么写

最小对账

python
#coding:gbk
def init(C):
    C.set_account(account)

def order_callback(C, orderInfo):
    print('order', getattr(orderInfo, 'm_strInstrumentID', ''),
          getattr(orderInfo, 'm_nOrderStatus', ''),
          getattr(orderInfo, 'm_nVolumeTraded', 0))

def deal_callback(C, dealInfo):
    print('deal', getattr(dealInfo, 'm_strInstrumentID', ''),
          getattr(dealInfo, 'm_nVolume', 0),
          getattr(dealInfo, 'm_dPrice', 0))

回测、研究模式常常没有真实主推。要在实盘运行里验;对账再用 get_trade_detail_data(account, 'stock', 'DEAL')

还要排除的

检查说明
后缀上交所用 .SH,不是 .XSHG
账号initset_account;交易界面注入的 account
枚举opType / prType 别凭记忆,见 passorder
时段集合竞价、涨跌停、停牌会废单或不成交

相关:passorder 短页 · get_trade_detail_data · API 查询