🚀 AI 一键生成 qmt 策略代码
立即体验
👉 AI 生成代码 👈

为什么在QMT中涨停价买入会被自动撤单?

qmt | 发布时间: 2026/6/3
以下内容由 EasyQuant 生成。

问题描述

涨停下单bug

若是涨停再买入 状态会变为已撤,但是未涨停就能买入 |,如图中华塑控股就是涨停 然后自动被变为已撤了,京能未涨停能直接买入
使用的是:order-id 已经正常返回

order_id = self.xt_trader.order_stock(
self.account, stock_code = xq_stock_code, order_type = xtconstant.STOCK_BUY,
order_volume = buy_vol, price = price, price_type = xtconstant.MARKET_PEER_PRICE_FIRST, strategy_name = remark,
order_remark = ''
)

解决方案

问题原因分析

您遇到的“涨停买入自动撤单”并不是系统的 bug,而是交易所的交易规则导致的

您在下单时使用了 MARKET_PEER_PRICE_FIRST(对手方最优价格委托)。在正常的交易状态下,买入时的“对手方最优价格”即为卖一价。但是,当股票涨停时,卖盘(卖一至卖五)通常是的(没有人愿意以低于或等于涨停价的价格卖出,或者卖单瞬间被吃光)。

此时,交易所接收到您的“对手方最优价格”市价单,发现盘口没有对手方报价可以撮合,根据交易所规则,该笔市价委托会被直接作废(自动撤单)

解决方案

要解决涨停板无法买入(或跌停板无法卖出)的问题,您需要将订单的报价类型(price_type)修改为限价委托(指定价)最新价,并将价格明确指定为涨停价。

1. XTQuant (xt_trader) 修改方案

price_type 修改为 xtconstant.FIX_PRICE(指定价)或 xtconstant.LATEST_PRICE(最新价)。

# 修改后的代码示例:使用指定价(限价单)下单
order_id = self.xt_trader.order_stock(
    self.account, 
    stock_code=xq_stock_code, 
    order_type=xtconstant.STOCK_BUY,
    order_volume=buy_vol, 
    price=price, # 这里的 price 传入涨停价
    price_type=xtconstant.FIX_PRICE, # 修改为指定价
    strategy_name=remark,
    order_remark=''
)

2. QMT 内置 Python (passorder) 修改方案

如果您在 QMT 策略编辑器中使用 passorder,请将 prType 参数设置为 11(指定价)或 5(最新价)。

# QMT passorder 示例:prType=11 为指定价
passorder(23, 1101, ContextInfo.accid, xq_stock_code, 11, price, buy_vol, remark, 2, '', ContextInfo)

总结

  • 涨停打板买入跌停按板卖出时,绝对不能使用“对手方最优价格”或“本方最优价格”等依赖盘口挂单的市价单类型。
  • 必须使用限价单(FIX_PRICE / prType=11),并直接以涨停价/跌停价进行申报,这样订单才会进入交易所的排队序列中等待撮合。