首页 > 博客 > 止损水平与冻结水平|SL设不上的真正原因

MT5品种规格风险管理

止损水平与冻结水平|SL设不上的真正原因

发布日: 2026-11-07阅读时间:约 4 分钟
⏱ 本文为发布之日的信息。EA的业绩数值(PF、DD、年化)会随实盘运行与重新验证而变动,最新数值请在各EA页面确认。 查看最新EA业绩 →

SL设不上,不一定是EA的故障

先说结论。SL设不上或无法移动,多数情况下并不是EA逻辑的问题,而是品种规格中规定的“最小距离”。MT5有两个相关设置:一是“止损水平”(Stop Level),规定SL、TP必须离当前价格至少多远;二是“冻结水平”(Freeze Level),规定当价格接近SL、TP或挂单时,禁止修改订单。

麻烦的是,这个距离并不总是固定不变。平时能正常通过的SL距离,可能只在经济指标发布之后被拒绝。我们开发EA时,发单前一定会检查这个距离。本文整理了其中的机制、确认步骤,以及EA端对策的局限。

推荐经纪商比较 →

🎁 免费下载EA

📧 免费邮件课程(共 8 封)+ 订阅者专享 MT5 指标 13 款合集

※ 严格保护隐私。可随时取消订阅。

机制:两个“最小距离”

止损水平

止损水平(SYMBOL_TRADE_STOPS_LEVEL)是从当前价格到SL、TP的最小距离,以点(point)为单位。多单从平仓基准的Bid开始测量,空单从Ask开始测量。如果设置的SL比这个距离更近,订单会被服务器拒绝,MT5返回的代码是“Invalid stops”(10016)。

冻结水平

冻结水平(SYMBOL_TRADE_FREEZE_LEVEL)是当价格接近SL、TP或挂单价格时,禁止修改、删除该订单的距离。移动止损类EA在即将平仓前想移动SL却被拒绝,多半就是这个原因。返回代码是“Frozen”(10029)。

项目含义受影响的操作主要拒绝代码
止损水平当前价格到SL、TP的最小距离新开仓时指定SL/TP、修改SLInvalid stops(10016)
冻结水平价格接近SL、TP或挂单时禁止修改的距离修改SL/TP、修改或取消挂单Frozen(10029)

“0”并不代表没有限制

即使品种规格中的止损水平显示为0,也不代表可以随意靠近放置。止损水平为0时,有些经纪商似乎会在服务器端采用其他规则(例如以点差为基准的距离)。我们并没有确认过每家经纪商的实现,所以保守地按**“0=至少离开一个点差以上”**来处理。

经济指标发布时距离会扩大

止损水平和冻结水平并非固定值,经纪商可能根据自己的判断调整。有些经纪商会在重要经济指标发布前后、周一开盘刚开始时、展期(rollover)时段临时扩大。同一时段点差也会扩大,因此从Ask开始测量的空单SL,需要离得比实际行情波动更远。

也就是说,即使按平时的品种规格判断“这个距离没问题”,在最关键的时刻仍可能被拒绝。如果EA的设计是没有SL也能成功开仓,还可能留下毫无保护的持仓。

确认步骤与检查清单

请在你使用的账户上确认以下项目。

  1. 打开品种规格:在报价窗口中右键点击品种 →“规格”。记下“止损水平”和“冻结水平”的数值(单位为点)。
  2. 把点换算成价格:XAUUSD和USDJPY的1点价格幅度不同,请先确认小数位数,再换算成价差。
  3. 与EA的SL距离比较:确认EA设置或逻辑中使用的SL距离,是否明显大于止损水平加上点差的距离。
  4. 在指标发布前后再看一次:在发布前夕再打开同一个界面,确认数值是否变化。哪些经纪商会变化,不实际看是不知道的。
  5. 查看日志:在“操作日志”标签和“专家”标签中,确认是否出现“Invalid stops”或“Frozen”。订单被拒绝时的排查方法,也整理在EA・MT5知识库中。

EA本身的设置方法请参考EA设置方法,不同经纪商的交易条件差异请参考外汇经纪商比较。

EA端的最小距离检查

我们的EA在发单之前,会按以下顺序进行检查。

  • 每次都获取当时的止损水平、冻结水平和点差(不使用启动时只获取一次的数值)
  • 最小距离取“止损水平与冻结水平中较大者”,再加上点差和少量余量
  • 如果SL比这个距离更近,不擅自放宽SL,而是放弃这次入场

不采用自动放宽SL的设计,是因为放宽SL会使单笔亏损金额超出设计值。如果手数是根据SL距离反推出来的,只放宽SL就会打乱风险百分比。放弃入场会减少机会,但我们认为这比承担预期之外的风险更好。

局限与注意事项

这项检查并不能防止所有问题。

  • 回测难以复现:据我们的理解,MT5的策略测试器使用的是品种规格中的当前设置,无法复现过去经济指标发布时距离被扩大的情况。SL越短的EA,测试结果与实际结果的差距可能越大。例如GOLD TRIPWIRE在回测中的平均持仓时间只有0:21:12,属于较短的类型,我们认为它比较容易受到这类差异的影响。
  • 放弃入场会改变业绩:被检查拦下的交易中,也包含本来会盈利的单子。加入检查后,交易内容就会和回测不同。
  • 发单瞬间条件也会变:通过检查后到订单抵达服务器之间,条件也可能发生变化,因此无法让拒绝彻底归零。
  • SL本身会滑点:即使SL设置成功,行情急变时也可能以比SL更不利的价格成交。最小距离检查并不是滑点对策。

总结

  • SL设不上的多数原因,是品种规格中的止损水平(最小距离)和冻结水平(禁止修改的距离)
  • 被拒绝时,返回代码为“Invalid stops”或“Frozen”
  • 止损水平为0不一定代表“没有限制”,至少要离开一个点差以上
  • 有些经纪商会在指标发布前后等时段扩大距离和点差,在最关键的时刻可能被拒绝
  • 在EA端,每次都获取当时的数值进行检查,不足时不放宽SL而是放弃入场,这是我们的设计
  • 回测难以复现过去距离的变化。SL越短的EA,越要注意实盘中的差异

📧 免费邮件课程(共 8 封)+ 订阅者专享 MT5 指标 13 款合集

※ 严格保护隐私。可随时取消订阅。

对EA或外汇有疑问吗?

可以在Nattzy交易论坛发帖提问(免费注册)。不限于本文内容,EA设置、经纪商选择等问题也欢迎。

在Nattzy提问 ↗

评论与提问