首页 > 博客 > 自动交易被禁用(AutoTrading disabled)导致EA不运行

MT5MQL5错误故障排查EA

自动交易被禁用(AutoTrading disabled)导致EA不运行

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

"自动交易被禁用"导致EA不运行(MT5)

明明已经把EA挂载到图表上,却等了几个小时一次开仓都没有——遇到这种情况,首先应该怀疑的就是"自动交易(算法交易)被禁用"。这种情况的特点是没有明显报错、完全沉默,是EA不运行的头号原因。而且MT5的交易许可是4层结构,只要其中任意一层是OFF,订单就无法发出。

本文面向使用MT5运行EA的用户,以及用MQL5开发EA的开发者,将系统梳理两个相关返回代码 10027(TRADE_RETCODE_CLIENT_DISABLES_AT)10026(TRADE_RETCODE_SERVER_DISABLES_AT) 的含义、4层许可结构、容易被忽视的原因,以及在代码层面的检测方法。关于错误代码的完整列表,请参见MQL5 / MT5 错误代码处理综合指南

本文以2026年7月时点的MT5(build 4xxx系列)为准。界面名称・图标外观可能因build版本略有差异。


10027 与 10026 的区别(客户端禁用 vs 服务器禁用)

表示"自动交易被禁用"的返回代码有两个,区别在于是哪一方在阻止交易。搞清楚这一点,应对方法就已经明确了一半。

① TRADE_RETCODE_CLIENT_DISABLES_AT = 10027(你的终端侧OFF)

客户端(即你的MT5终端)侧的设置导致自动交易被禁用的状态。工具栏的"算法交易"按钮为OFF、选项设置中的许可未开启等都是原因。此时订单请求会在发送到经纪商服务器之前就被终端内部拒绝

含义: 客户端终端中自动交易被禁用(AutoTrading disabled by client)
常量: TRADE_RETCODE_CLIENT_DISABLES_AT
值  : 10027

"Experts"(专家)标签页中会出现如下日志。

2026.07.07 09:15:32.441 EA_NAME (XAUUSD,H1) OrderSend failed 10027
2026.07.07 09:15:32.441 EA_NAME (XAUUSD,H1) CTrade::OrderSend: ... [autotrading disabled by client]

处理方法只需修正自己MT5的设置。将下一章介绍的4层全部设为ON即可解决。

② TRADE_RETCODE_SERVER_DISABLES_AT = 10026(经纪商侧OFF)

服务器(即经纪商)侧禁止了该账户的自动交易的状态。无论如何检查终端设置都无法解决。部分赠金账户・美分账户・比赛账户等的条款中规定"不可使用EA",或经纪商因违反条款等原因按账户单位停止算法交易,均属于此类情况。

含义: 服务器端自动交易被禁用(AutoTrading disabled by server)
常量: TRADE_RETCODE_SERVER_DISABLES_AT
值  : 10026

唯一的处理方法是联系经纪商确认。请向客服咨询该账户类型是否支持EA(是否需要变更或新开支持EA的账户类型)。

代码常量阻止方处理方法
10027TRADE_RETCODE_CLIENT_DISABLES_AT自己的MT5终端将终端的4层许可全部设为ON(本文可解决)
10026TRADE_RETCODE_SERVER_DISABLES_AT经纪商的服务器向经纪商确认账户是否支持EA

MT5的交易许可是4层结构 — 全部ON才能运行

在MT5中,EA能够下单之前需要经过4个独立的开关。只要有一个是OFF,订单就无法发出。"明明昨天还能正常运行"的情况,往往是这4层中的某一层被关闭了。

第1层:工具栏的"算法交易"按钮(终端整体)

MT5顶部工具栏的**"算法交易"按钮**。ON时显示为绿色播放标记(▶),OFF时显示为红色停止标记。快捷键是Ctrl+E(意外碰到而不自知地关闭的情况其实不少)。这一层是OFF的话,所有图表・所有EA的下单会被一并停止,返回10027。

第2层:选项设置中的"允许算法交易"

工具 → 选项 → 智能交易系统 标签页中的"允许算法交易"勾选项。这是第1层按钮的基础设置,若未勾选,按钮就无法开启,或即使开启也无法下单。

同一标签页中还有"切换账户/配置文件/图表品种・周期时禁用算法交易"系列的勾选项(切换账户时/切换配置文件时/图表品种・周期变更时)。如果勾选了这些选项,切换账户等操作瞬间就会让第1层的按钮自动变回OFF。"偶尔莫名其妙就停了"的元凶大多正是这个。

第3层:每个图表的EA设置"允许算法交易"

在图表上插入EA时的对话框(或右键点击图表上的EA名称→属性)中的 "通用(Common)"标签页 → "允许算法交易" 勾选项。这是仅对该图表上该EA生效的开关。如果未勾选,就会出现其他EA能运行、唯独这个EA不运行的情况(此时 MQLInfoInteger(MQL_TRADE_ALLOWED) 会返回false)。

第4层:图表右上角EA图标的状态

EA正确加载后,图表右上角会显示EA名称和一个小图标(笑脸标记)

  • 彩色(蓝色系)笑脸 = EA正在运行且可以交易
  • 灰色笑脸/带取消标记 = EA已加载但无法交易(上述1〜3层中某一层为OFF)
  • EA名称本身未显示 = EA根本没有加载到图表上(插入失败・已删除)

图标是"结果的显示",并非可直接操作的开关,但它是一眼就能确认状态的最快检查点。不同build的表现形式可能略有差异。

层级位置影响范围MQL5中的检测
① 算法交易按钮工具栏(Ctrl+E)终端整体TERMINAL_TRADE_ALLOWED
② 选项中的许可工具→选项→智能交易系统终端整体TERMINAL_TRADE_ALLOWED
③ 每个图表的许可EA设置→通用标签页仅该图表的EAMQL_TRADE_ALLOWED
④ EA图标图表右上角状态显示—(①〜③的结果)

30秒排查法(按此顺序检查)

  1. 工具栏的"算法交易"按钮是绿色(▶)吗? → 若为红色,点击开启(Ctrl+E)
  2. 图表右上角是否显示EA名称+彩色笑脸图标? → 若为灰色,继续下一步;若连名称都没有,重新插入EA
  3. EA设置 → 通用标签页 →"允许算法交易"是否已勾选? → 未勾选则勾上并重新应用
  4. 工具 → 选项 → 智能交易系统 →"允许算法交易"是否已启用? → 同时确认"切换账户时禁用"等勾选项
  5. 确认账户信息 — 是否用只读(Investor)密码登录的? → 改用交易密码重新登录
  6. 1〜5全部正常却仍出现10026 → 向经纪商确认该账户是否可以使用EA

绝大多数情况在步骤1〜3就能解决。


容易被忽视的5个原因

① 使用只读密码(Investor密码)登录

MT5账户有交易密码只读密码(Investor密码,仅供查看)两种。用只读密码登录时,无论手动还是自动都完全无法下单,即使按下算法交易按钮也无法交易。这种情况常见于将账户展示给他人之后,或密码管理器记录的是旧密码的场合。在MQL5中可通过 AccountInfoInteger(ACCOUNT_TRADE_ALLOWED) 返回false来判断。请改用交易密码重新登录

② 经纪商在该账户类型下禁止使用EA(10026)

部分美分账户・附赠金账户・比赛账户的条款中可能规定不可使用EA。此时服务器端会拒绝,返回10026,终端侧无法修复。请确认开户时的条款,必要时变更为支持EA的账户类型。

③ 终端重启・更新・切换账户后按钮恢复OFF

在MT5更新之后,或选项中"切换账户时禁用算法交易"等设置为启用的环境下,算法交易按钮可能会恢复为OFF。"明明上周还能运行,不知不觉就停了"是典型模式。建议养成每次重启・切换后都确认按钮颜色的习惯,或取消勾选选项中的自动禁用项。

④ VPS自动启动时自动交易保持OFF

在VPS运行环境中,即使配置了"Windows重启 → MT5自动启动",也可能出现启动后的MT5算法交易仍为OFF的情况。MT5在启动时可以通过 /config 传入设置文件(ini文件),在 [Experts] 部分可以指定自动交易许可(AllowLiveTrading)以及EA的自动挂载。配置自动启动时,务必将这部分启动设置一并纳入,并且每次重启后务必远程确认图表右上角图标是否显示为彩色。VPS本就是"为了无人值守运行"的环境,如果疏于这项确认,可能造成数天到数周的机会损失。

⑤ 混淆模拟账户与真实账户

如果出现模拟账户中EA能运行、真实账户不运行(或相反)的情况,请确认MT5当前登录的是哪个账户。典型情况包括:选项中的"切换账户时禁用算法交易"生效导致按钮关闭,或仅真实账户一侧用只读密码登录。查看导航器中的账户号码和终端右下角的连接状态,10秒即可确认。


用MQL5检测此状态(面向EA开发者)

"悄无声息地停止"正是10027/10026令人头疼之处。让EA端通过日志和提示自主报告是哪一层被阻断,能大幅降低支持成本。需要用到以下4个函数。

函数检测内容
TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)终端整体的算法交易许可(按钮+选项)
MQLInfoInteger(MQL_TRADE_ALLOWED)该EA(该图表)的交易许可
AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)该账户是否可交易(只读登录时为false)
AccountInfoInteger(ACCOUNT_TRADE_EXPERT)该账户是否允许EA交易(服务器端设置)
// 确定并输出是哪一层阻止了自动交易
bool CheckAlgoTradingAllowed()
{
   bool ok = true;

   if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
   {
      Print("BLOCKED [Terminal]: AutoTrading button is OFF (toolbar / Ctrl+E) or disabled in Options");
      ok = false;
   }
   if(!MQLInfoInteger(MQL_TRADE_ALLOWED))
   {
      Print("BLOCKED [Chart/EA]: 'Allow Algo Trading' is unchecked in this EA's Common tab");
      ok = false;
   }
   if(!AccountInfoInteger(ACCOUNT_TRADE_ALLOWED))
   {
      Print("BLOCKED [Account]: trading not allowed - investor (read-only) login?");
      ok = false;
   }
   if(!AccountInfoInteger(ACCOUNT_TRADE_EXPERT))
   {
      Print("BLOCKED [Server]: broker disabled EA trading for this account (retcode 10026)");
      ok = false;
   }
   return ok;
}

运用要点

在OnInit中检查一次并发出警告,在OnTick中不做停止处理,是通行做法。

int OnInit()
{
   if(!CheckAlgoTradingAllowed())
      Alert("EA loaded, but algo trading is blocked. See Experts log for the reason.");
   return INIT_SUCCEEDED;   // 不要设为 INIT_FAILED
}

如果这里设为 INIT_FAILED,用户在开启按钮之后就需要重新插入EA,比较麻烦。只要让加载本身成功,用户一旦开启算法交易按钮,交易就会立即开始。OnTick侧建议只在状态发生变化时输出一次日志(不要每个tick都Print),这样Experts标签页就不会被刷屏。

另外,在 OrderSend() 的retcode收到10027 / 10026时,将常量名一并写入日志,便于事后排查。

if(res.retcode == TRADE_RETCODE_CLIENT_DISABLES_AT)   // 10027
   Print("Order rejected: AutoTrading disabled on YOUR terminal. Turn ON the Algo Trading button.");
else if(res.retcode == TRADE_RETCODE_SERVER_DISABLES_AT) // 10026
   Print("Order rejected: broker disabled autotrading for this account. Contact your broker.");

FXEA365提供的EA在图表上的仪表盘中始终显示自动交易的ON/OFF状态,因此只需看一眼画面,就能立刻发现这种"悄然停止"的状态。


优先级检查清单

优先级确认项处理方法
🚨 首先算法交易按钮是否为红色(OFF)点击开启(Ctrl+E)
🚨 首先图表右上角EA图标是否为灰色依次检查4层
⚠️ 其次EA设置・通用标签页的"允许算法交易"勾选后重新应用
⚠️ 其次选项中的许可+自动禁用勾选项开启许可・重新检查自动禁用设置
✅ 确认是否用只读密码登录改用交易密码重新登录
✅ 确认10026(服务器端拒绝)向经纪商确认账户是否支持EA
🛠 开发EA无声停止运行实现上述分层检测代码

总结

  • "EA不运行"的头号原因是自动交易(算法交易)被禁用。特点是没有报错、悄然停止。
  • 10027 = 自己终端侧OFF(自己可以解决),10026 = 经纪商侧OFF(需向客服确认)。
  • MT5的交易许可分为①工具栏按钮 ②选项 ③每个图表的EA设置 ④图标显示共4层。全部ON才能真正下单。
  • 只读密码、切换账户导致的自动OFF、VPS重启后OFF恢复,是三大容易被忽视的陷阱。
  • EA开发者应通过 TERMINAL_TRADE_ALLOWED / MQL_TRADE_ALLOWED / ACCOUNT_TRADE_ALLOWED / ACCOUNT_TRADE_EXPERT 让EA自主报告是哪一层导致停止

关于错误代码的完整内容,请参见MQL5 / MT5 错误代码处理综合指南;配备状态常显仪表盘的免费EA,请参见EA列表


常见问题

Q: 已经开启了算法交易按钮,但EA仍不开仓。

请检查按钮(第1层)以外的其他层级。最常见的是每个图表的EA设置(通用标签页)中"允许算法交易"未勾选。可以通过图表右上角的EA图标是否显示为彩色来做最终确认。如果图标已是彩色却仍不开仓,很可能不是自动交易的问题,而是EA的开仓条件尚未满足(请查看Experts标签页的日志)。

Q: 10027 与 10026 有什么区别?

10027(TRADE_RETCODE_CLIENT_DISABLES_AT)是你的MT5终端禁用了自动交易,可以通过修改终端设置解决。10026(TRADE_RETCODE_SERVER_DISABLES_AT)是经纪商的服务器按账户禁止了自动交易,终端侧无法解决,请向经纪商确认账户类型是否支持EA。

Q: 明明昨天还能运行,自动交易却莫名其妙变成了OFF。

很可能是选项(工具 → 选项 → 智能交易系统)中"切换账户时/切换配置文件时禁用算法交易"系列勾选项导致的。此外,MT5更新后也可能以按钮OFF的状态启动。如果是VPS运行,务必将重启后的确认纳入常规流程。

Q: 手动下单可以,但只有EA无法下单。

如果手动交易正常,说明账户本身是可用的。问题出在每个图表的EA设置(通用标签页)工具栏的算法交易按钮处于OFF状态。手动交易的执行与"算法交易"的许可无关,因此这种症状强烈提示是自动交易层被禁用。如果仍无法解决且出现10026,则说明经纪商限制了该账户使用EA。

📧 涨价预告 + 免费5天邮件课程

所有EA目前均为首发价,并将随销量阶梯式上调。在每次涨价前收到通知,另有每日一封邮件:自动交易本质、正确解读回测、券商选择技巧。

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

评论与提问