不用写代码在 MT5 里做一个 RSI EA 智能交易系统,办法是在画布上放四类积木:一个 Start 节点、一个 RSI 指标、一个把 RSI 数值与某个水平作比较的条件,以及一个下单积木。随后服务器会替你生成并编译 MQL5。整个过程大约十五分钟,任何一步都不涉及 MQL5 语法。
更难回答的问题是:做完之后你手上的到底是什么。本文先把这个 EA 搭出来,然后去读 Builder 自己对同一套设计的记录,而那份记录没有任何一篇教程会告诉你的那么好看。
你最终会做出什么
一个只做一个货币对的单持仓 EA:RSI 跌破超卖水平时买入,升破超买水平时卖出,配一个固定止损和一个固定止盈,编译成一个可以直接丢进 MetaTrader 5 的真正的 .ex5。八个积木。不写代码。
这是机械的那一半,而且它确实很容易。本页剩下的部分,是决定这个文件值不值得运行的另一半。
开始之前:RSI 测的是什么,不测什么
你需要一个邮箱已验证的免费账户(设计免费,也不需要登录;编译成 .ex5 才需要)、大约十五分钟,以及一个用来测试结果的 MetaTrader 5 终端。
RSI 报告的是最近 n 根收盘价,在它自己近期的涨幅与跌幅之间处在什么位置,量程 0–100。在这套配方里,它只做一件事:说出价格相对于它自己近期的表现,已经在一个方向上走得又远又快。它没有说的是,这段行情已经结束了。这个区别就是这套策略的全部风险所在——下跌趋势里的一个超卖读数,是对这段下跌趋势的描述,而不是一个反对它的信号。
Builder 的 RSI 积木暴露出下面这些参数,而默认值都是那些约定俗成的值:
| 积木参数 | 默认值 | 它控制什么 |
|---|---|---|
period | 14 | 计算回看多少根K线。取值范围 1–999 |
applied_price | PRICE_CLOSE | 每根K线的哪个价格进入计算 |
shift | 0 | 读哪一根K线——0 是正在形成的那根,1 是最后一根已收盘的 |
timeframe | 当前图表 | M1 到 MN1 中的任意一个,与图表本身无关地读取 |
symbol | 当前图表 | 留空表示图表自己的品种 |
timeframe 那一行值得早点注意。这个积木可以从比它交易的那张图更高的时间周期上读取 RSI。多周期过滤就是这样在完全不写代码的情况下搭出来的。
分步操作:在 Builder 里把这个 RSI EA 搭出来
- 打开 EA Builder,从图库载入
rsi_reversal模板,或者从一张空白画布开始。载入模板更快;自己搭一遍,才知道哪一根连线在做什么。 - 从 Utility 面板放一个 Start 节点。没有它的流程,会在生成任何东西之前以
EAB-E202通不过校验。 - 加上 RSI 指标积木并设置
period。第一次搭的时候就把它留在 14,这样你的结果才能和下面那条基线对得上;如果你希望规则只在已收盘的K线上评估,就把shift设成 1。 - 加一个 Compare 条件,把 RSI 积木接进去。这一步不是可有可无的接线:把指标直接接到下单积木上会被
EAB-E205打回来——“insert a condition node (Compare/Cross) in between”(请在两者之间插入一个条件节点)——原因恰恰是,一个原始的指标数值并不是一个决策。 - 设定比较。买入一侧:RSI 小于 30。卖出一侧:RSI 大于 70。Compare 积木自己的默认运算符是
>,所以要记得翻过来的是买入那一支。 - 把每个条件分别接进它自己的 Open Buy / Open Sell 动作积木。
- 在 Settings 标签页里设定风险——Money Management 和 Exit Strategy。共享的默认值是 50 点止损、100 点止盈和固定
0.01手。一个没有有效止损的流程会触发CRITICAL级预检诊断,并要求你先确认才肯构建。 - 按 Measure 运行内置的近似回测,然后对照面板打印出来的那条线来读结果:盈利因子至少 1.2、至少 60 笔交易、回撤不差于 20%。
- 按 Compile .ex5,通过 File > Open Data Folder 把下载下来的文件移进
MQL5/Experts,然后刷新导航器。接着在策略测试器里认真测一遍,再让它靠近任何一个账户。
- Start 节点
- RSI 指标,period 14
- Compare —— RSI 低于超卖水平
- Compare —— RSI 高于超买水平
- Open Buy
- Open Sell
- 止损与止盈
- 编译成 .ex5
有两个积木新手总想去用,而现在还不该用。
Cross 问的是一条线是否在这根K线上穿越了另一条。这是一个比“是否低于”更严格、也完全不同的问题。用在这里,它只会在 RSI 跌穿 30 的那一根K线上触发——而不是在它一直停留在下面的每一根K线上都触发。
面板里还带着一个 RSI Divergence 条件积木。它检测的是价格创出新极值而 RSI 没有跟上,默认 level 30、pivot_bars 70、near_band 10。它需要一个 shift 设为 1 的 RSI 积木接进来。那是一套确实不同的策略,不是对这一套的调参。
RSI 的进场、出场与参数设置
下面是这套配方暴露出来的每一个值,以及改动它究竟会发生什么。
| 参数 | 模板取值 | 改动它会怎样 |
|---|---|---|
RSI period | 14 | 越短反应越快,触发次数多得多;越长越平滑,极少触发。它改变交易笔数的程度,大于改变胜率 |
| 超卖水平 | 30 | 越低越严格——入场更少、更深。这个模板的身份就住在这里 |
| 超买水平 | 70 | 卖出一侧的镜像 |
shift | 0 | 设为 1 表示只在已收盘的K线上做决定。在 M5 上,这就是一小时几次决策和一小时几百次决策的差别 |
| 止损 | 50 点(共享默认值) | 被搜索过的范围是 20–50 |
| 止盈 | 100 点(共享默认值) | 被搜索过的范围是 20–100 |
| 手数 | 固定 0.01 | 这不是一个策略参数;它只是把这套策略做的事情按比例放大,亏损也一样 |
每个人都会问的那个敏感度问题,这里给一个诚实的答案。 “要不要把 30/70 放宽到 20/80?”是每一篇 RSI 教程首先都会建议的事,而本页无法告诉你答案,因为这个模板记录在案的搜索从未改动过那两个水平。它改动的是止损和止盈——SL20-50 × TP20-100,H1 上跨三个窗口的 12 组组合——结论是 no_robust_edge,样本内最好的盈利因子是 0.91。所以那两个水平在这里仍然是一个未经检验的假设,而那些确实被测过的参数,无论从哪个方向都没能把这套设计抬到盈亏平衡。任何向你报出一个“最佳” RSI 水平的人,报的都是一种信念。
回测这个 RSI EA
这是 Builder 自己对这个模板的实测记录,不是一次重跑。下面这份对比里的每一个模板,共用紧随其后那张表中的同一套条件。我们如何测试说明了这些记录被要求达到的标准。
rsi_reversal 基线 | 数值 |
|---|---|
| 盈利因子 | 0.94 |
| 交易笔数 | 682 |
| 最大回撤 | -0.97% |
| 净利 | -51.37 |
| 被清单标记为 weak | 是 |
| 在图库中被列为 recommended | 是 |
| 通过 Measure 面板自身的合格线 | 否 |
| 测试条件 | |
|---|---|
| 实验编号 | EXP-RSI-RECIPE-BASELINE-001 |
| 父实验 | EXP-BUILDER-TEMPLATE-BASELINE-001 |
| 品种 / 时间周期 | USDJPYm M5 |
| 期间 | 2025-06-01 – 2026-06-09 |
| 模型 | M1 OHLC (Model=1) |
| 入金 | 10,000 |
| 环境 | Exness MT5 |
| 基线实测于 | 2026-06-18 |
| 最近验证 | 2026-08-25 |
读这张表的时候,请把最后两行放在一起看。图库把这个模板标为 recommended,而清单把它标为 weak,两个标记各自都是对的,只是说的不是同一件事:它是这个模式一个干净、成型的范例,而它亏了钱。在 53 个带有实测基线的模板里,40 个被标为 recommended,而 53 个全部被标记为 weak。“recommended”说的是接线,从来不是优势。
RSI 在它的邻居中间处在什么位置。 这八套设计全部是在上面那一套条件下实测的,而这也是把它们并排放在一起唯一说得过去的理由:
| 模板 | 积木数 | 盈利因子 | 回撤 | 交易笔数 |
|---|---|---|---|---|
ma_distance_pullback | 6 | 1.10 | -0.26% | 159 |
envelope_reversal | 10 | 0.95 | -1.16% | 989 |
cci_level | 7 | 0.95 | -0.94% | 789 |
rsi_reversal | 8 | 0.94 | -0.97% | 682 |
bb_bounce | 9 | 0.92 | -0.98% | 616 |
stoch_bb | 14 | 0.90 | -1.41% | 888 |
hl_range_reversal | 8 | 0.90 | -1.33% | 573 |
mfi_stddev_revert | 12 | 0.80 | -1.66% | 362 |
恰好只有一个越过了 1.0,而它正是那个不跟趋势对着干的。 ma_distance_pullback 在趋势仍然完好时买入一次回踩。那是在一个方向内部的均值回归,而不是与之对抗。它同时也是这一组里最小的设计,只有六个积木。每一个纯粹的“价格走过头了,所以反转”的模板,包括 RSI 在内,都收在盈亏平衡以下。
这就是本页上支持在 RSI 入场前面加一道趋势过滤的最有力论据。不过它的局限也值得直说。它只做了 159 笔交易,而 RSI 是 682 笔,所以那个结果是拿选择性换来的——而四分之一的样本量是一个更弱的主张,不是更强的。
需要避开的常见错误
把“超卖”读成“马上就要转向”。 这是这个指标特有的失效方式,也正是那些纯反转模板全都聚在 1.0 以下的原因。在一段持续的行情里,RSI 会长时间钉在一个极值上,而规则会一次又一次地触发,打进一段还没走完的趋势里。结束这些交易的是止损,这也是为什么把止损放宽会让这套设计变得更糟,而不是更安全。
编译了模板就当完事。 它同时带着一个 recommended 徽章和一份亏损的记录。那个徽章说的是接线。
一直调到回测好看为止。 这里记录在案的那次搜索已经诚实地做过这件事了——12 组组合、三个窗口——报出来的是 no_robust_edge。如果你自己的调参在一次系统性搜索都失败的地方产出了一个赢家,请先怀疑调参,再去相信那个赢家。这就是过拟合从内部看起来的样子。
靠增加货币对来抚平资金曲线。 那个双货币对组合就在上面的表里:回撤是单货币对版本的 37 倍。
相信一个建立在插值K线上的 M5 结果。 这条基线用的是 M1 OHLC 模型,所以K线内部的运动是仿真出来的,不是真实的。对一条在日内进出的规则来说,那是可信度的粗糙那一端——任何看起来有希望的东西,都请拿 MT5 自己的测试器、在真实 tick 数据上重跑一遍。
和另一个 EA 并排运行却不把它们分开。 同一个账户上的每一个 EA 都需要自己的魔术号,否则其中一个 EA 的出场逻辑会把另一个的持仓平掉。
下一步与变体
什么时候干脆别用 RSI。 在一个强趋势市场里,一条不带过滤的 RSI 反转就是一台卖出强势、买入弱势的机器。如果你说不出一个能在趋势期间把这条规则关掉的条件,那么诚实的选项就只有两个:加一道趋势过滤,或者换一个思路——均值回归讲的就是这一族策略需要什么样的市场条件,以及这些条件缺席时它要付出什么代价。
按证据强弱排序、值得一试的变体。 先加一道更高时间周期的方向过滤,因为这一族里唯一越过 1.0 的那个设计,正是要求趋势完好的那个——RSI 积木自己的 timeframe 参数不写一行代码就能做到这件事。然后再去试 RSI Divergence 条件积木,它问的是一个和水平穿越不同、也更严格的问题。只有在这之后才去动那两个水平,而且一次只改一个。
然后认真测一遍。 Measure 面板是一道筛子,不是一份判决:它是K线级别的,而且是近似的。MT5 回测怎么做从头到尾走了一次真实运行,包括报告里那两个回撤数字该信哪一个,而其余的回测指南覆盖了之后才轮到的优化与前进分析步骤。不用写代码做一个 MT5 MACD EA 则是那篇失效方式正好相反的姊妹配方——它那次搜索 确实 找到了一个在样本外也能赢的参数,而这比一个都没找到更危险。如果这套配方是你的第一个流程,不用写代码做一个 MT5 EA 会带你更完整地走一遍积木词汇表。
而如果你想看看一份有文档的记录长什么样,已发布的 EA 每一个都带着完整的平仓交易清单和一份运行清单。拿其中一份去对照上面那张表,是校准“实测”二字究竟应该意味着什么最快的办法——在你相信任何一套策略之前,包括你自己的那一套。