不用写代码做出一个 MT5 EA 智能交易系统,办法是在画布上把它一块块搭起来——一个指标积木、一个条件积木、一个下单积木、一个风险积木——然后让服务器替你生成并编译 MQL5。传回来的文件是真正的 .ex5,和手写 EA 编译出来的是同一类文件。整个过程的任何一步都不涉及 MQL5 语法。
免编程没有替你省掉的那部分,是设计工作,而几乎所有人恰恰输在这里。所以本文把两半都写了:从一个想法走到一个编译文件的机械路径,以及在你改动任何参数之前,这些文件到底测出多少分的证据。
你最终会做出什么
读完这篇文章,你会有一个编译好的 .ex5 躺在 MetaTrader 5 的 MQL5/Experts 文件夹里,它基于一条你自己选定的规则,带着一个你有意设定的止损和仓位大小。有两条路线能把你送到那里,而它们在工作量上确实不一样:
- 从模板出发。 从图库里挑一个已经接好线的策略(共 84 个),然后修改它的积木。这是看清一整套完整流程最快的方式,也是最快在毫无察觉中继承一条亏损基线的方式。
- 从空白画布出发。 放一个 Start 节点,把指标接进条件,把条件接进下单积木,再加上风险控制。慢一些,但每一根连线在做什么你都清清楚楚。
无论走哪条路,词汇表都是同一套:8 个分类下的 118 种积木,每个设计的预算是 50 个节点。这个预算并不是新手以为的那种约束。整个图库里得分最高的模板,只用了六个节点。
开始之前:Builder 是什么,不是什么
你需要一个能用“当 X 发生就买入,当 Y 发生就平仓”表述出来的想法、15–30 分钟时间,以及一个用来运行结果的 MetaTrader 5 终端。你不需要 MQL5、不需要编译器、也不需要 Windows——编辑器跑在浏览器里,编译发生在服务器上。
在你投进一整个晚上之前,有三条边界值得先弄清楚。
它生成代码,但它不交易。 Builder 从不下单、从不连接你的经纪商、也从不发出信号。它交给你的是一个文件。之后的一切都发生在你的终端里、你的账户上、由你控制。
设计免费;编译需要账户。 拖拽积木、载入模板、查看 Code 标签页里的输入参数预览,都不需要登录。编译成 .ex5 以及运行强度测试则需要一个邮箱已验证的免费账户——未验证的账户会拿到 403 和 Your account is not eligible yet,这与完全没有账户时出现的 EAB-E601(Sign in to compile)是两种不同的失败。分清自己撞上的是哪一种,能省下十分钟的困惑。
免费编译出的 .ex5 是被授权的,不是可移植的。 每一次免费编译都带有账户锁:该 EA 只在受支持经纪商的已验证 IB 账户上运行,并且 MetaTrader 5 必须在 Tools > Options > Expert Advisors > Allow WebRequest 中把 https://mt5depot.com 加入白名单,否则 EA 会在启动时自行停用。策略测试器的回测不受这项检查约束——这正是你可以在绑定任何东西之前就先测试的原因。可编辑的 .mq5 源代码是唯一收费的功能,一次性 399 美元的 Pro 授权。
分步操作:把 EA 做出来
- 从 Builder 页面打开编辑器——按钮上写着 Open the builder — free。什么都不用安装,你的工作会在浏览器里自动保存。
- 选一个起点。欢迎界面提供 Build Your EA — Free、Start with blank canvas 和一个 3-min tour,另外还有一个按 Basic / Intermediate / Advanced / Portfolio 筛选的模板图库。空白画布仍然需要一个来自 Utility 面板的 Start 节点——没有它,校验会以
EAB-E202拦住你。 - 放置积木。从左侧面板拖拽,或者双击某一项;
Ctrl+K可以按名称搜索全部 118 种类型。连线的方式是从一个节点右侧的输出端口拖到下一个节点左侧的输入端口,或者按节点上的 + 按钮直接添加并自动连上下一个节点。 - 在右侧的 Properties 标签页里设置每个积木的参数。指标的周期、应用价格和时间周期都在这里——每个指标积木都可以读取与它所在图表不同的时间周期,多周期过滤就是这样在完全不写代码的情况下搭出来的。
- 在 Settings 标签页里设置整个账户层面的规则:Money Management、Filters、Exit Strategy、Position Management、Risk Management。手数默认是固定的
0.01,共享的入场保护在你改动之前默认是 50 点止损和 100 点目标。 - 阅读校验栏和 Preflight diagnosis 面板。错误会阻止生成,警告不会。一个没有止损的流程会触发
CRITICAL级诊断,并要求你先确认“Generate anyway?”才肯继续构建。 - 按 Measure 运行内置的近似回测——选一个品种、一个时间周期和一个以点为单位的点差,然后对照打印出来的合格线读结果。这一步要在编译之前做,不是之后。
- 按 Compile .ex5。服务器会生成 MQL5,用 MetaEditor 编译,并返回
EA_Builder.ex5。通过 File > Open Data Folder 把它移进MQL5/Experts,然后右键导航器选择刷新——如果 EA 没出现,问题几乎总是出在文件夹上,而不是文件上。 - 在把它挂到任何图表之前,先在策略测试器里测一遍。真正挂上去的时候,工具栏上的 Algo Trading 按钮必须是开着的,并且 EA 的 Common 标签页里的 Allow Algo Trading 必须打勾。图表上出现哭脸,意味着这两个开关有一个没开,而不是策略坏了。
- 选一个模板或一张空白画布
- 把指标接进条件,再接进下单
- 设定止损、目标和手数
- 测量这套流程的强度
- 编译成 .ex5
- 在 MT5 策略测试器里测试
- 先跑模拟,再做决定
第 3 步有一个细节常常让人意外:编辑器会拒绝构建那些会悄悄跑偏的流程。把指标直接连到下单积木上,你会得到 EAB-E205——An indicator is wired straight into an action. Insert a condition node (Compare/Cross) in between.(指标被直接接到了动作上,请在两者之间插入一个条件节点)。而从 Start 出发无法到达的节点会触发 EAB-E203,并被明确告知它 will not be included in the generated EA(不会被写进生成的 EA 里)。这些都不是风格提示。它们正是那些拦住新手、不让他交付一个中间三分之一什么都不做的 EA 的错误。
如果失败的是编译本身,那通常不是你的设计的问题。EAB-E402 表示 MetaEditor 拒绝了生成出来的源代码,而它的三个子代码——未声明的标识符、参数个数不对、语法错误——在界面上被标注为 a bug on our side, not yours(这是我们这边的缺陷,不是你的),并附带一个请你附上流程图的请求。凡是映射器不认识的东西,都会原样显示成 MetaEditor 的错误行,而不是一句笼统的道歉,这恰恰让上报变得值得。EAB-E401 和 EAB-E404 则是另一类:前者是编译器忙,后者是单用户频率限制。两者的含义都是等一等,而不是重做。
积木、进出场条件,以及那些不可选的风险设置
整个面板是同一套词汇,分成八组。第一天你用不到其中的大部分;你需要知道的是哪一组回答哪一个问题。
| 积木分组 | 类型数 | 它控制什么 | 合理的初始设置 |
|---|---|---|---|
| Utility | 2 | 流程从哪里开始,以及跨周期读数 | 一个 Start 节点 |
| Indicators | 52 | 你的规则所依据的那个测量 | 一个指标,图表周期 |
| Price / Info | 5 | 原始价格、OHLC、时钟、账户状态 | 用不到就先别碰 |
| Conditions | 10 | 触发规则的那个比较 | Compare 或 Cross |
| Filters | 21 | 什么时候才允许交易 | 点差过滤、持仓数量上限 |
| Actions | 15 | 订单本身,以及它如何了结 | Open Buy / Open Sell |
| Money Mgmt | 7 | 仓位有多大 | Fixed Lot,0.01 |
| Exit Strategy | 6 | 一笔持仓怎样结束 | 固定止损与止盈 |
其中有四种类型——加仓、逐步摊平、反手入场和一键全平——只能从 Settings 面板里配置。把它们丢到画布上,预检会以 EAB-E304 拒绝,并告诉你它们真正的位置在哪里。这是件小事,但正是那种在错误提示写得糟糕时会白白花掉你一小时的小事,而这里的提示写得不糟。
两种条件积木就能覆盖大多数人的第一套策略。Compare 问的是一个值是高于还是低于另一个值——RSI 低于 30、价格高于一条移动平均线。Cross 问的是一条线是否在这根K线上穿越了另一条线,这是一个和“是否高于”完全不同、也严格得多的问题。把这两者搞混,是一套流程不停触发而不是偶尔触发的最常见原因。
决策时机和条件本身同样重要。默认是每根收盘K线评估一次,而不是每个 tick 评估一次。在 M5 图上,这就是一小时几次决策和一小时几百次决策的差别——一条在收盘K线上看起来盈利的规则,被允许在K线中途触发时,行为可能完全不同。
先回测,其他都靠后
Builder 有一个 Measure 按钮,而它会把自己的合格线打印在结果旁边:盈利因子至少 1.2、至少 60 笔交易、最大回撤不差于 20%。这条线才是有用的部分。它是一个固定的、公开的阈值,所以一个结果要么在线上,要么不在,盯着资金曲线眯眼看再久也改变不了答案。
下面就是这条线作用在随附模板上的结果。这是我们自己的数据,不是厂商的说法:每一个图库模板都带着一次运行的实测记录,下表把它们数了一遍。我们如何测试说明了这些记录被要求达到的标准,而汇总脚本就和它的输出一起放在仓库里,所以这个计数是可复现的,而不是断言出来的。
| 入门模板 | 实测 |
|---|---|
| 图库中的模板总数 | 84 |
| 带有实测基线的模板 | 53 |
| 被清单标记为 weak 的 | 53 / 53 |
| 出厂参数下盈利因子低于 1.0 的 | 46 / 53 |
| 盈利因子中位数 | 0.92 |
| 该集合中最好的盈利因子 | 1.10 |
| 通过 Measure 面板自身合格线的 | 0 / 53 |
| 测试条件 | |
|---|---|
| 实验编号 | EXP-BUILDER-TEMPLATE-BASELINE-001 |
| 环境 | Exness MT5 |
| 品种 / 时间周期 | USDJPYm M5 |
| 期间 | 2025-06-01 – 2026-06-09 |
| 模型 | M1 OHLC (Model=1) |
| 入金 | 10,000 |
| 基线实测于 | 2026-06-18 |
| 汇总 / 最近验证 | 2026-08-25 |
这张表有三种读法值得说清楚,因为最显而易见的那种并不是最有用的那种。
复杂度并没有帮上忙。 该集合里最好的基线 1.10,属于一个六节点的移动平均回踩策略。那个 27 节点的多周期振荡指标堆叠得分是 1.04。集合中最差的 0.63,属于一个 15 节点、带自动手数计算和移动止损的多周期设计。加积木就是加参数,而参数是一个设计走向过拟合的途径,不是它变好的途径。
深度和时长是两个不同的问题。 有一个模板在 8,765 笔交易上录得 1.03 的盈利因子,最大回撤为 -7.92%;另一个是 0.69,回撤 -22.54%。一个接近 1 的比值,几乎不告诉你持有它是什么感受。
其中八个被搜索过,而搜索失败了。 八个模板带有记录在案的参数遍历——止损与止盈的网格,跑在三个窗口上:样本内、样本外,以及这两者之前的那一段。八个全部返回 no_robust_edge。有两个连样本内都没能产出一组盈利参数。另外六个找到了却无法复现——表现最好的移动平均交叉组合在 H1 样本内达到 1.23,在此前的窗口上只有 0.98;而一组在样本外守住 1.05 的 CCI 参数,在更早的那段时间里仍然跌到 0.92。合格线是三个窗口全部胜出,而没有一组做到。这个结果比一个调优出来的数字诚实得多,也是“测试你自己的改动,而不是相信任何人的默认值(包括这里的默认值)”这条建议最有力的论据。
这项测量是刻意近似的——K线级别、只覆盖主要节点、不是真实终端。它是一道筛子,不是一份判决。任何能通过它的东西,接下来都应该编译出来,在 MT5 自己的策略测试器里重跑一遍,那里的成交、点差和 tick 模型才是真的。如何在 MT5 里跑一次回测用一份真实的已发布记录,把这第二次运行从头到尾走了一遍;如果你想更深入地理解这些数字的含义,那属于回测指南,而不属于这一页。
- 测量了流程,并对照打印出来的合格线来读结果,而不是凭感觉
- 在同一品种、同一时间周期上,把编译好的
.ex5放进 MT5 策略测试器重跑了一遍 - 明确设定了止损,而不是接受 50 点的默认值
- 检查了你本来必须坐着熬过去的回撤,而不只是看最终结果
- 跑了足够长的模拟账户,久到能看见这套策略亏一段再涨回来
- 事先写下了那个一旦出现就会让你关掉它的亏损数字
常见错误
编译一个模板就当完事了。 这是第一大错误,而且领先其他错误一大截,上面那张表就是原因。模板是别人已经替你画好的接线图。里面的参数从来没有针对你的品种、你的时间周期或你的经纪商点差拟合过。
一直调到回测好看为止。 如果你改一个参数、重新测量、再改一次,然后留下最好的那一组,你并不是在改进策略——你是在把它拟合到历史的某一片切面上。图库里那八次记录在案的参数搜索,全部以 no_robust_edge 收尾:六次找到了一个样本内的赢家却撑不过下一个窗口,另外两次干脆一个都没找到。除非你用同样的方式检验,否则你的结果也会是同一个样子。
只测一个运气好的年份。 上面这条基线覆盖的是一家经纪商、一个品种上的一年。这足以说明“这东西还没做完”;离说明“这东西有效”还差得很远。在相信任何结论之前,先把窗口拉长,再换一个品种。
靠堆过滤器来救一条亏损的规则。 可用的过滤器类型有 21 种,随便加上五个,几乎能让任何回测变好看。它同时也会把交易笔数削减到结果只剩下寥寥几笔来支撑。请像盯盈利因子一样盯紧交易笔数——Measure 面板对低于 60 笔的稀薄样本给出警示,正是为了这个原因。
同时跑好几个 EA 却不把它们分开。 如果你在同一个账户上运行不止一个 EA,每个都需要自己的魔术号,否则其中一个 EA 的出场逻辑会把另一个的持仓平掉。把这件事做对不花任何成本,事后再来排查却很痛苦。
跳过模拟盘这一关。 一次回测框定的是一套规则在已记录的价格上本来可能做到什么。它不包含你的延迟、你的重新报价,也不包含在你的规则触发那一刻扩大的点差。本文没有任何内容构成盈利承诺,而这一页上的每一条记录描述的都是过去。
下一步与变体
接下来往哪走,取决于你觉得哪一块最薄。
如果薄的是策略,就从一条你能用一句话讲清楚的规则出发,搭出能表达它的最小流程。在实测集合里六个节点赢过二十七个节点,所以小的那个版本并不是妥协。到了这一步,翻一翻指标参考比再加一个过滤器有用得多——唐奇安通道突破和 RSI 回归是两个相反的思路,而你正在搭哪一个,决定了它之后的每一个参数。如何搭一个 RSI EA 和如何搭一个 MACD EA 各把其中一个从头走到尾,包括在你改动任何东西之前,那些随包发布的模板得了多少分。
如果薄的是测试,那是更深的一门功夫,它有自己的归处:回测指南。简版是:做样本外测试,盯住交易笔数,并且把一个你必须搜索才找到的结果当作警告,而不是当作发现。
如果你想在自己动手之前先看一份完整的参考,已发布的 EA 每一个都给出完整的平仓交易清单、回撤和运行清单——把其中一份从头读到尾,因为它会让你看清一份有文档的记录长什么样,也给了你一个可以拿来对照自己测量结果的标尺。EA 智能交易系统能赚钱吗?用同一份目录去读“盈利”从内部看究竟是什么样子,包括那些长时间什么都不奏效的阶段。
如果你还在决定要不要自动化,EA 与手动交易的对比用一个主观交易者真正会采用的停止规则,把已有的记录重放了一遍,那是这个比较的诚实版本。
如果你做出了值得展示的东西,编译流程会提供把它提交到免费公共投稿池的选项——每一份提交都会经过审核,而一个能在不止一个品种上通过合格线的设计,是真的很少见。免费 EA 怎么用记录了那道审核究竟检查什么、经过验证徽章意味着什么又不意味着什么,以及本站免费的这一面是靠什么养活的——从投稿者的角度读,和从下载者的角度读,同样值得。