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

QMT/迅投API涨停板下单为何自动变成“已撤”?(附正确打板代码)

qmt | 发布时间: 2026/6/2
以下内容由 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 = ''
)
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 = ''
)

解决方案

问题诊断:为什么涨停时下单会被自动撤销?

您遇到的现象并非 API 的 Bug,而是交易所的订单撮合规则导致的正常现象

在您的代码中,使用了 price_type = xtconstant.MARKET_PEER_PRICE_FIRST对手方最优价格委托)。

根据交易所规则,对手方最优价格委托的含义是:

  • 买入时:以当前盘口的卖一价作为委托价格。
  • 卖出时:以当前盘口的买一价作为委托价格。

当股票涨停时,盘口上的卖单通常已经被全部吃光(即卖一价不存在或卖一量为0)。此时,如果您提交“对手方最优价格”的买单,交易所系统在盘口上找不到对手方(卖方)的价格,无法确定您的委托价,因此会直接将该笔委托作废(状态变为“已撤”或“废单”)

而当股票未涨停时,盘口有正常的卖一价,所以订单能够正常下达并成交。


解决方案:如何正确在涨停板买入(打板排队)?

要在涨停板上买入股票,您的目的是以涨停价在买一位置排队。为了实现这一点,您需要更改 price_type(报价类型)。

以下是两种推荐的修改方案:

方案一:使用“限价单 + 涨停价”(最推荐、最稳妥)

无论股票是否涨停,直接计算出该股票的涨停价,并以**限价单(FIX_PRICE)**的方式申报。这样即使涨停,您的订单也会以涨停价加入买一的排队队列中。

# 假设您已经获取到了该股票的涨停价 limit_up_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=limit_up_price, # 传入具体的涨停价格
    price_type=xtconstant.FIX_PRICE, # 改为指定价/限价单
    strategy_name=remark,
    order_remark=''
)

方案二:使用“本方最优价格委托”

如果您不想手动计算涨停价,可以使用 MARKET_MINE_PRICE_FIRST本方最优价格委托)。

  • 买入时:以当前盘口的买一价作为委托价格。
  • 涨停时,买一价就是涨停价,您的订单会以涨停价排队。
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_MINE_PRICE_FIRST, # 改为本方最优价格委托
    strategy_name=remark,
    order_remark=''
)

注意:使用本方最优时,如果盘口瞬间剧烈波动导致买一价回落,您的委托价也会随之变为回落后的买一价,可能无法保证一定是涨停价打板。因此,严格的打板策略通常采用方案一


总结

  • MARKET_PEER_PRICE_FIRST (对手价):涨停时无卖盘 -> 找不到价格 -> 自动撤单。
  • FIX_PRICE (限价) + 涨停价:直接以涨停价排队 -> 成功打板(推荐)。
  • MARKET_MINE_PRICE_FIRST (本方价):涨停时以买一价(涨停价)排队 -> 成功打板。