Question: 为什么MT4和MT5会出现“重新报价”错误?如何解决这个问题?
为何交易者在MT4和MT5平台收到“重新报价”错误及如何避免
“重新报价”是一个简单的信息:您试图以某个价格进行交易,但当您的订单到达交易服务器时,价格已超出您或经纪商允许的容差范围。服务器将拒绝您请求的价格,并提供新的报价。在MetaTrader 4中,您通常会看到错误138(重新报价);在MetaTrader 5中,交易服务器会返回TRADE_RETCODE_REQUOTE。这两种信号都传达相同的信息:价格在订单被接受前发生了变化。
MetaTrader中的“重新报价”是什么意思?
重新报价是即时执行功能的一部分。在此模式下,您的订单将包含您期望的确切价格。若经纪商无法维持该价格,平台将响应重新报价,并显示订单可能执行的新价格。市场执行则不会重新报价;交易将按可用价格执行,这意味着您将获得带滑点的执行结果,但不会弹出要求接受新价格的窗口。
MetaTrader还提供名为最大偏差(常称“允许滑点”)的控制功能。您可设定以点数为单位的报价价格范围。当市场在订单处理期间的波动幅度在该范围之内时,平台将自动按最新价格执行订单;若波动幅度超出该范围,则会重新报价。MT4将此类订单视为全额成交或取消订单,因此若价格超出允许偏移范围,平台不会部分执行订单,而是直接拒绝该价格的执行请求。
经纪商的帮助页面会清晰说明相同机制:当交易者使用即时执行功能时,若价格发生变动则触发重新报价,平台将显示更新后的价格供用户确认。多家供应商还会标注订单中“启用报价最大偏差”选项的设置位置。
在XM开设账户
重新报价的真实原因
-
1) 执行模式:即时执行与市价执行。
若您在设置为即时执行的账户或交易品种中操作,可能会收到新报价。在市价执行模式下,您不会收到新报价,而是会获得带滑点的最佳可用价格。这是最重要的结构性因素。 -
2)订单传输过程中的价格波动。
所有订单都需要传输:从您的设备到经纪商服务器,再到流动性池。在流动性强且快速的市场中,报价可能在短暂传输过程中多次变动。若变动幅度超过您的最大偏差值,服务器必须发送新价格(即新报价)。 -
3) 流动性层级的“最后观察”机制。
绝大多数零售外汇/差价合约交易流与最后观察流动性进行交互。在最后观察市场中,流动性提供商可在短暂等待后接受、拒绝或重新定价交易请求。这种选择权保护了流动性提供商,但也增加了交易请求以不同价格返回的可能性——这正是重新报价的本质。这是许多场外外汇市场的既定特征,也是重新报价存在的主要原因。 -
4) 延迟对您有利。
弱Wi-Fi信号、移动网络连接或远程服务器会增加往返时间,从而提高订单到达时价格已变动的概率。 -
5) 严格的容许偏差(“滑点”)设置。
若在波动性较高的品种上将容许偏差设为零或零点几点,几乎任何报价变动都会触发重新报价。经纪商指南明确建议启用合理偏差以减少重新报价。 -
6) 高波动性与低流动性时段。
新闻事件、隔夜滚动、非交易时段(周五晚间、周一早间)或点差较大的品种,都可能导致价格在服务器执行订单前跳出容差范围。 -
7) 要求完美价格的EA逻辑。
在MT4中,若专家顾问以微小滑点调用OrderSend()
,或持续尝试已不可用的价格,将反复触发错误138。在MT5中,交易服务器将返回TRADE_RETCODE_REQUOTE;正确处理方式是管理该代码,并采用可接受合理偏差的逻辑重新发送指令。
MT4与MT5中重新报价的显示方式
-
MT4:您将在终端或EA日志中看到“重新报价”/错误138。仅发生在实盘交易中(不包括回测),因为它依赖于实时价格和服务器响应。
-
MT5:通常不会看到“重新报价”的弹出窗口, 但交易服务器会通过结果代码中的TRADE_RETCODE_REQUOTE明确标识。MT5订单票据还包含偏差参数——您接受的偏差值越大,重新报价响应的可能性就越低。
结论很简单:平台的行为符合执行模型和您授权的偏差范围。
真正有效的实用解决方案
-
在可能的情况下切换至市价执行。
若您的经纪商在市价执行源提供相同交易代码,请使用该功能以避免重新报价。您的交易执行仍将反映可用流动性(正向或负向滑点),但无需接受新报价。 -
设定合理的最大偏离值。
启用“启用报价价格最大偏离”选项,并设置符合交易时段内该代码典型波动范围的偏离区间。例如,在正常交易时段内,主要货币对的几个点差通常足以让平台以更新后的价格执行订单,而非返回重新报价。
降低自身延迟。 -
明智使用挂单功能。
买入限价单/卖出限价单或买入止损单/卖出止损单可提前将交易意向提交至服务器,消除人工点击延迟。触发后,订单将根据符号执行政策执行; 虽然仍可能出现市价执行时的滑点,但可避免手动操作与快速行情波动的竞速。 -
避免在EA中要求“零滑点”。
若将EA编码或配置为超紧滑点(或零滑点),将引发大量重新报价。在MT5中,请明确处理TRADE_RETCODE_REQUOTE
,并采用扩展容差范围的逻辑在市场波动时重试。这是MetaTrader资深开发者建议的标准做法。 -
当执行确定性至关重要时,请避开已知的波动高峰期进行交易。
若需按特定价格入场,请提前设置限价单而非点击新闻峰值。在高速市场中,重新报价是点差变化的自然结果。 -
了解您所处的交易结构。
在最后确认环境中,订单可能在短暂等待后被接受、重新评估或拒绝。这种可变性正是即使快速点击下单仍可能获得不同价格的原因。理解该机制有助于您为策略选择合适的执行模式和滑点设置。
常见情况与重新报价的具体原因
-
您在新闻发布期间点击EURUSD的买入按钮,随即收到重新报价。
原因:在您点击与服务器响应之间,报价已更新,且变动幅度超过允许偏差。请使用市价执行或扩大偏差以应对新闻时段的典型跳价。 -
您的EA设置滑点为0.1-0.2点仍出现138次执行失败。
原因:服务器接收订单时,您请求的价格已不可执行。请通过编程增加允许偏差,并在收到重新报价代码后实施回退/重试机制。 -
在每日收盘前几分钟操作指数差价合约,频繁收到重新报价。
原因:交易时段转换时点差通常扩大且价格波动剧烈,订单执行前价格已超出容差范围。设置合理偏差或提前挂单可缓解此问题。 -
您连接公共Wi-Fi网络时,即使在平静市场也会收到重新报价。原因:网络延迟不稳定。稳定的网络连接或VPS可缩短价格超出容差范围的时间间隔。
为何经纪商(及流动性)允许重新报价
重新报价并非随机弹窗。其存在是因为即时执行承诺特定价格,若该价格已不可用则必须拒绝。您所见的价格通常由流动性供应商提供;在许多场外交易市场中,该报价遵循“最后看价规则”,仅具参考性质,流动性供应商保留在短暂等待后接受、重新定价或拒绝报价的权利。正是这种市场机制(而非设备或经纪商)使得重新报价成为可能。
MT4/MT5重要设置与细节
-
偏差/最大偏差: 带宽越大,平台显示重新报价框的可能性就越小;如果价格波动保持在带宽范围内,订单将按更新后的价格执行。在MT5交易单中,此项称为偏差;文档明确指出增加偏差值可降低重新报价概率。
-
MT4中的立即成交或取消: 订单不会以更差价格部分成交;若价格超出容差范围,MT4将拒绝执行订单并返回重新报价。
-
MT5交易服务器返回代码:您的EA需在MqlTradeResult中检查retcode。TRADE_RETCODE_REQUOTE表示订单价格超出容差范围。(MT5):您的EA需检查
MqlTradeResult
中的retcode
。TRADE_RETCODE_REQUOTE
表示服务器重新报价;TRADE_RETCODE_REJECT
表示完全拒绝。请明确处理每种情况。
简明清单:消除大部分重新报价
-
1) 对于注重即时性的策略,优先选择市价执行的交易品种或账户。无重新报价,仅存在滑点。
-
2) 启用最大偏移量选项,并为每个交易品种/时段设定合理范围。
-
3) 优化网络连接(有线连接、低延迟线路或靠近经纪商的VPS)。
-
4) 使用挂单,确保交易指令在行情波动前已提交至服务器。
-
5) 对于EA,管理返回代码,并在获取新报价时实施合理的重试机制,允许更大的偏差范围。
-
6) 若需精确价格显示,请避免在已知波动高峰期进行交易。
重新报价并非随机错误,而是当请求特定价格时,该价格在服务器处理订单时已不存在所导致的预期结果。其成因包括即时执行、调整后的最大偏差、高波动性及弱连接。请尽可能切换至市场执行模式,设定合理价格偏差,并编程EA管理服务器价格回调响应:完成这三项操作即可消除绝大多数重新报价。此行为符合MetaTrader官方文档及场外外汇市场流动性结构。
- Close