自动交易被禁用(AutoTrading disabled)导致EA不运行
目录
- 10027 与 10026 的区别(客户端禁用 vs 服务器禁用)
- ① TRADE_RETCODE_CLIENT_DISABLES_AT = 10027(你的终端侧OFF)
- ② TRADE_RETCODE_SERVER_DISABLES_AT = 10026(经纪商侧OFF)
- MT5的交易许可是4层结构 — 全部ON才能运行
- 第1层:工具栏的"算法交易"按钮(终端整体)
- 第2层:选项设置中的"允许算法交易"
- 第3层:每个图表的EA设置"允许算法交易"
- 第4层:图表右上角EA图标的状态
- 30秒排查法(按此顺序检查)
- 容易被忽视的5个原因
- ① 使用只读密码(Investor密码)登录
- ② 经纪商在该账户类型下禁止使用EA(10026)
- ③ 终端重启・更新・切换账户后按钮恢复OFF
- ④ VPS自动启动时自动交易保持OFF
- ⑤ 混淆模拟账户与真实账户
- 用MQL5检测此状态(面向EA开发者)
- 运用要点
- 优先级检查清单
- 总结
- 常见问题
- Q: 已经开启了算法交易按钮,但EA仍不开仓。
- Q: 10027 与 10026 有什么区别?
- Q: 明明昨天还能运行,自动交易却莫名其妙变成了OFF。
- Q: 手动下单可以,但只有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的账户类型)。
| 代码 | 常量 | 阻止方 | 处理方法 |
|---|---|---|---|
| 10027 | TRADE_RETCODE_CLIENT_DISABLES_AT | 自己的MT5终端 | 将终端的4层许可全部设为ON(本文可解决) |
| 10026 | TRADE_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设置→通用标签页 | 仅该图表的EA | MQL_TRADE_ALLOWED |
| ④ EA图标 | 图表右上角 | 状态显示 | —(①〜③的结果) |
30秒排查法(按此顺序检查)
- 工具栏的"算法交易"按钮是绿色(▶)吗? → 若为红色,点击开启(Ctrl+E)
- 图表右上角是否显示EA名称+彩色笑脸图标? → 若为灰色,继续下一步;若连名称都没有,重新插入EA
- EA设置 → 通用标签页 →"允许算法交易"是否已勾选? → 未勾选则勾上并重新应用
- 工具 → 选项 → 智能交易系统 →"允许算法交易"是否已启用? → 同时确认"切换账户时禁用"等勾选项
- 确认账户信息 — 是否用只读(Investor)密码登录的? → 改用交易密码重新登录
- 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目前均为首发价,并将随销量阶梯式上调。在每次涨价前收到通知,另有每日一封邮件:自动交易本质、正确解读回测、券商选择技巧。
※ 严格保护隐私。可随时取消订阅。