Summary: EA在回测中表现完美,但实盘下单后止损止盈距离完全不对?问题可能出在Tick Size或经纪商Stop Level上。本文教你如何检查并修复这类订单入场错误。




步骤1:识别症状 – SL/TP或挂单位置错误

将EA附加到MT4实盘或模拟盘图表上,打开“EA交易”选项卡(Ctrl+T)。如果你看到订单已开仓,但止损(SL)或止盈(TP)的距离完全错误(例如比预期远了10倍),或者挂单因距离市价太远而永远无法触发,说明你遇到了这个问题。截图位置:EA交易选项卡中显示SL/TP距离错误的订单。

步骤2:理解根本原因 – Tick Size / Pip Step不匹配

这个错误通常发生在EA开发时使用的“Tick Size”(最小价格变动单位)或“Pip Step”与你的经纪商不一致的情况下。例如,你的EA预期1 pip = 0.0001(4位报价),但你的经纪商使用0.00001(5位报价)。EA在计算SL/TP时使用点数,而经纪商按不同的标准解读,导致实际设置的止损距离被放大了10倍或严重偏离。截图位置:Tick Size差异示意图。

步骤3:检查经纪商的品种设置

在MT4图表上右键点击,选择“商品列表”(或“属性”),找到“Tick Size”和“Tick Value”字段。或者查阅经纪商官网的品种规格说明。常见情况:
  • 标准设置:Tick Size = 0.00001(5位报价经纪商)

  • 部分EA假设:Tick Size = 0.0001(4位报价经纪商)

  • 如果两者不匹配,EA计算出的SL/TP就会出错。截图位置:显示Tick Size字段的商品列表窗口。

    步骤4:检查EA是否触碰了经纪商的“Stop Level”限制

    每个经纪商都有最低的“Stop Level”(最小止损距离),即SL/TP不能设置在离市价太近的位置。如何查看:在MT4中,右键点击图表 → “属性”,查找“Stop Level”;或者手动下一笔订单,尝试设置一个非常近的止损,平台会提示允许的最小距离。如果你的EA将SL设置在这个距离之内,经纪商会拒绝订单,并返回“无效止损”或“Error 130”报错。截图位置:订单窗口显示最小止损距离的错误提示。

    步骤5:通过EA参数修复 – 寻找Tick Size相关变量

    许多现代EA提供了相关参数,如“UseSQTickSize”、“TickSize”或“PipStep”。双击图表上的EA打开输入参数设置窗口,查找这些参数:
  • 将“UseSQTickSize”设置为true(启用)

  • 手动设置“MainChartTickSize”为你的经纪商Tick Size值(例如5位经纪商填0.00001)

  • 截图位置:EA输入参数窗口中高亮显示UseSQTickSize选项。

    步骤6:通过修改EA代码修复 – 调整SL/TP计算(进阶)

    如果EA没有提供上述参数,你需要直接修改代码。打开MetaEditor(按F4),找到EA的.mq4文件。搜索包含“OrderSend”或“SetStopLoss”的代码行,定位到SL/TP的计算公式。添加Tick Size调整逻辑:
    ```cpp
    // 原始计算可能是这样的:
    double sl = NormalizeDouble(Ask - StopLoss * Point, Digits);
    // 修改为使用经纪商的实际tick size:
    double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
    double pipStep = tickSize * 10; // 常见调整系数
    double sl = NormalizeDouble(Ask - StopLoss * pipStep, Digits);
    ```
    按F7编译,重新附加EA。截图位置:MetaEditor中显示Tick Size调整代码。

    步骤7:验证修复效果

    应用修复后,先在模拟盘上下一个小额测试单。查看“EA交易”选项卡中的订单详情,确认实际生效的SL/TP距离与你预期的相符。如果仍然不对,尝试调整系数(例如1倍、10倍或100倍),直到正确为止。截图位置:EA交易选项卡中显示SL/TP距离正确的订单记录。

    参考来源: StrategyQuant论坛 – MT4 EA下单SL/TP错误(2026年1月);Exness帮助中心 – 智能交易使用指南(2026年4月)
    ```