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

QMT测试账号委托卖不掉/无法模拟部分成交的解决办法

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

问题描述

qmt测试账号委托卖不掉 / 没办法模拟未成交和部分成交?

如果是去年10月前开通的QMT测试账户或者ptrade测试账户,目前使用的还是根据数量的模拟撮合策略(下图)


委托卖不掉 解决办法:可以修改设置100股进行委托下单。

解决方案

在使用QMT量化交易平台进行策略回测或模拟交易时,部分用户可能会遇到测试账号委托卖不掉,或者没办法模拟未成交和部分成交的情况。这通常与QMT测试环境的模拟撮合机制有关。\n\n## 问题原因分析\n\n如果您使用的是去年10月前开通的QMT测试账户(或ptrade测试账户),系统目前默认使用的仍然是基于数量的模拟撮合策略。在这种机制下,如果委托单的数量过大,或者盘口没有足够的流动性数据支撑,就会导致委托一直处于“未成交”状态,且难以触发“部分成交”的模拟场景。\n\n## 解决办法\n\n针对上述模拟撮合机制的限制,最直接有效的解决办法是:修改委托设置,以100股(1手)为单位进行委托下单。\n\n在小单量(如100股)的情况下,模拟撮合引擎更容易匹配到盘口数据,从而顺利完成成交测试。\n\n## QMT代码实现示例\n\n在QMT的Python策略中,您可以使用 order_sharespassorder 函数来指定100股的下单量。\n\n### 示例1:使用 order_shares 指定股数交易\n\npython\ndef handlebar(ContextInfo):\n # 按最新价下100股买入\n order_shares('000001.SZ', 100, 'LATEST', ContextInfo, '您的测试资金账号')\n \n # 按最新价下100股卖出\n order_shares('000001.SZ', -100, 'LATEST', ContextInfo, '您的测试资金账号')\n\n\n### 示例2:使用 passorder 综合下单\n\npython\ndef handlebar(ContextInfo):\n # 23为股票买入,1101为单股单账号普通股/手方式下单,100为股数\n passorder(23, 1101, '您的测试资金账号', '000001.SZ', 5, -1, 100, ContextInfo)\n\n\n## 进阶:如何监控订单状态?\n\n为了更好地处理未成交或部分成交的情况,建议在策略中加入订单状态监控逻辑。可以使用 order_callback 实时接收委托回报,观察模拟撮合的结果:\n\npython\ndef order_callback(ContextInfo, orderInfo):\n # 监控委托状态,m_nOrderStatus 55为部成,56为已成\n print("委托代码:", orderInfo.m_strInstrumentID)\n print("委托状态:", orderInfo.m_nOrderStatus)\n print("已成交数量:", orderInfo.m_nVolumeTraded)\n\n\n通过调整下单数量为100股并结合状态监控,您可以更顺畅地在QMT测试环境中验证您的量化策略的交易逻辑。