EA 工作室 · 14 分钟阅读

为 MT4 和 MT5 构建并测试移动平均线交叉 EA

了解移动平均线交叉EA的作用、应测试哪些MA设置、为何交叉会产生震荡,以及在MT4或MT5上运行前如何验证。

为 MT4 和 MT5 构建并测试移动平均线交叉 EA
本页内容11 个部分
  1. 01什么是移动平均线交叉 EA?
  2. 02交叉机器人如何做出决策
  3. 03常见的快速和慢速 MA 设置
  4. 04SMA 与 EMA:EA 应使用哪种平均线?
  5. 05为什么交叉 EA 会产生假信号
  6. 06需要配置的风险管理设置
  7. 07EA 的 MT4 与 MT5 版本
  8. 08在 EA Studio 中构建一个:USD/JPY 实例
  9. 09现成替代方案
  10. 10常见问题
  11. 11获取 Algo Trading Space 帮助测试你的交叉 EA

移动平均线交叉 EA 是一种专家顾问,当快速移动平均线穿越慢速移动平均线时,它会自动开仓并管理交易。这一理念是技术分析中最古老的概念之一,但要将其转化为可靠的自动化系统,远不止是在图表上画两条线那么简单:参数设置、过滤器、风险控制以及严谨的测试都会影响最终结果。

本指南解释了这些机器人如何运作,交易者通常测试哪些设置,为什么交叉信号在横盘市场中会失效,以及两个 MetaTrader 版本之间的差异。随后,我们将通过 Algo Trading Space 导师 Sam Jackson 的一个真实 USD/JPY 构建案例,从生成到压力测试再到模拟盘孵化,逐步进行讲解。

什么是移动平均线交叉 EA?

它是一种基于规则的交易机器人,运行在 MetaTrader 中,监控两条移动平均线,并在它们交叉时采取行动。当快速线移动到慢速线上方时,EA 将其视为买入信号;当快速线跌破慢速线时,则将其视为卖出信号或离场信号。

交易者会用几种不同的名称搜索同一类工具,包括 MA 交叉 EA 和移动平均线交叉专家顾问,而每种情况下的吸引力都是相同的:客观性。每个信号都是预先定义的,因此机器人会在凌晨 3 点和盘中执行相同的逻辑,不会犹豫或自我怀疑。Fidelity 将交叉方法描述为当较短的平均线穿越较长的平均线时进行买入或卖出,并指出较短的平均线通常被称为“快速”,因为它们改变方向的速度更快(Fidelity Viewpoints, June 2026)。

如果你对专家顾问(EA)感到陌生,我们关于外汇中 EA 能做什么和不能做什么的解释文章是你在自动化任何操作之前有用的入门读物。

交叉机器人如何做出决策

机器人随着新价格数据的到来重新计算两条线,检查它们是否已经交叉,然后根据编程规则下单、管理或平仓。

组件功能
快速 MA较短周期;对近期价格变化反应迅速
慢速 MA较长周期;平滑噪音并追踪更广泛的趋势
多头入场快速线攀升至慢速线上方
空头入场或离场快速线跌破慢速线
策略类型趋势跟踪
执行在每个新的跳动点或 K 线自动执行
风险控制保护性订单和仓位规模
平台MT4 或 MT5,取决于编译方式
主要弱点在横盘条件下反复出现虚假交叉

交易交叉的 EA 在离场方式上差异最大。有些 EA 永久留在市场中,在每次交叉时反向操作。其他 EA 在交叉时入场,但通过止损、止盈、追踪止损或独立指标离场。这一设计选择对风险状况的影响远大于平均线本身的选择。

代码中如何检测交叉

经典的简单移动平均线(MA)交叉是最容易自动化的版本。无论是用 MQL4 还是 MQL5 编写,核心检查都是比较最近两根已完成 K 线上的两个平均值。当快速读数在两根 K 线前位于慢速移动平均线下方,而在最近一根已收盘 K 线上位于其上方时,即存在看涨交叉;看跌交叉则是其镜像。

以这种方式编码,而不是比较正在形成的 K 线上的实时值,可以防止 EA 在价格在线条附近来回波动时反复触发。这也使得回测和实时交易的行为完全一致,因为两者评估的都是相同的已完成数据。

EA 应在当前 K 线还是已收盘 K 线上交易?

大多数构建良好的实现方案会在已完成的 K 线上确认交叉,并在下一根 K 线开盘时入场。在 K 线仍在形成时出现的交叉可能在收盘前消失,从而产生一个从未真正存在的信号。

在已收盘 K 线上确认会稍微牺牲入场速度,但能消除这些幻影交易。MetaQuotes 指出,其“仅开盘价”测试模式仅使用每根 K 线的开盘价(MetaQuotes 测试文档),这适用于仅在新 K 线时行动的 EA,但会错误地表示在 K 线内交易的 EA。

常见的快速和慢速 MA 设置

没有普遍最佳的组合;正确的配对取决于你交易的市场、时间框架和波动性。下表显示了交易者通常测试的典型配对,从反应灵敏到缓慢。

快速 MA慢速 MA特征
9 EMA21 EMA非常灵敏,信号更多,噪音也更多
1020短期摆动
2050中期趋势
50200长期趋势

50/200 组合是唯一拥有广泛认可名称的组合:Nasdaq 的术语表将金叉定义为 50 日均线向上穿越 200 日均线(Nasdaq 术语表)。9/21 EMA 交叉在趋势反转后的几根 K 线内即可做出反应,而 50/200 设置在日线图上可能会滞后数周。较短的组合交易更频繁,每次移动平均线交叉都会产生点差和佣金成本;而较长的组合捕捉较少但幅度更大的波动,但在退出前会回吐更多利润。请将任何组合视为需要在您自己的数据上进行测试的假设,而不是直接照搬的设置。

可定制的移动平均线 EA 将每个周期和平均类型作为输入参数暴露出来,因此您可以在不修改代码的情况下测试各种组合。请注意不要过度优化周期。如果 17/43 组合在回测中看起来比 15/45 或 20/50 好得多,这种差异更可能是噪音而非洞察;合理的设置应在附近数值范围内表现良好,而不仅仅是在某一个精确组合上表现优异。

SMA 与 EMA:EA 应使用哪种平均线?

指数移动平均线(EMA)比简单移动平均线(SMA)反应更快,因为它对近期价格赋予更高的权重。MetaQuotes 在 MetaTrader 中列出了四种类型:简单、指数、平滑和加权,并解释说第一种对周期内的每个价格赋予相等权重,而指数和线性加权版本则更重视最新数据(MetaQuotes 指标参考)。

在实际应用中:

  • SMA/SMA: 信号出现较晚,但较少受到假信号(whipsaws)的影响。
  • EMA/EMA: EMA 交叉出现得更早,能捕捉到新趋势的更多部分,但代价是会产生更多的假警报。
  • 混合类型: 如果 EA 允许为每条线设置独立参数,则可以使用混合类型。

更快并不一定更好。EMA 组合可能会更早加入趋势,但也可能更早陷入每一个假突破,因此选择唯一的方法是在相同的数据上测试两者。

为什么交叉 EA 会产生假信号

交叉策略在持续趋势中表现最佳,但在价格横向波动时表现不佳。在震荡区间内,两条线会相互缠绕,触发一系列小额亏损交易,这被称为“鞭打”(whipsaws);这是该方法最大的弱点。

交易者通常会测试旨在跳过低质量交叉信号的过滤器:

  • 高时间框架趋势过滤器: 仅当较慢的图表也处于上升趋势时才做多。
  • 趋势强度: 要求 ADX 读数高于选定的阈值。
  • 动量: 使用 RSI 或随机指标(Stochastic)以避免在极端水平入场。
  • 波动性: 使用 ATR 来跳过非常平静的时期,或动态调整止损规模。
  • 价格位置: 要求收盘价位于慢速平均线的另一侧,而不仅仅是超过快速平均线。
  • 交易时段: 仅在该工具通常出现趋势的时段内交易。

过滤器并非免费。每个过滤器都会增加一个可以针对历史数据进行拟合的参数,因此过滤器应通过改善样本外结果(而不仅仅是回测结果)来证明其在交易系统中的价值。

交叉策略何时表现最佳?在长期的方向性阶段,例如中央银行周期推动货币持续向一个方向移动。鞭打造成的损失是当这些阶段到来时保持持仓所付出的代价,这就是为什么交叉系统的结果往往呈爆发式出现,而不是平滑分布。

需要配置的风险管理设置

风险控制决定了当机器人的信号错误时(在震荡市场中这种情况很常见),它能承受多大的损失。在进行任何实盘测试之前,值得定义的设置包括:

  1. 仓位规模: 固定手数很简单;每笔交易设定权益的一定百分比可以让风险随账户规模缩放。
  2. 止损: 固定距离或基于波动性的止损,例如 ATR 的倍数。
  3. 止盈: 静态止盈,或省略止盈而采用移动退出方式,让趋势延续。
  4. 追踪止损和保本: 一旦交易向有利方向移动足够远,就锁定利润。
  5. 最大点差: 当成本激增时(例如在新闻发布或流动性稀薄时)跳过入场。
  6. 未平仓头寸上限和每日亏损限制: 如果 EA 频繁触发,限制风险敞口。

杠杆限制也很重要。受欧盟监管经纪商的零售客户在主要货币对(如 USD/JPY)上的杠杆上限为 30:1(CNMV 关于 ESMA 措施的摘要,2018 年 6 月),而在其他地方更高的杠杆会像放大盈利一样快速放大亏损。请在回测中测试这些风险设置,而不是事后添加,因为止损或点差过滤器可能会改变哪些交易存在,从而改变整体结果。

EA 的 MT4 与 MT5 版本

MT4 EA 和 MT5 EA 是独立的程序。MT4 机器人使用 MQL4 编写,并作为 .ex4 文件运行;MT5 版本使用 MQL5,根据 MetaQuotes 的说法,编译为存储在 MQL5/Experts 文件夹中的 .ex5 文件(MetaTrader 5 帮助,算法交易)。你不能将 MT4 文件复制到 MT5 并期望它能运行。要安装任一版本,请前往“文件”>“打开数据文件夹”,将 EA 放入 Experts 目录,然后刷新导航器。

除了文件格式外,MT5 还增加了多线程测试器和实时刻度建模,并且其订单处理方式有所不同,包括支持净持仓账户和对冲账户。两个终端都附带一个简单的基于移动平均线的示例 EA,你可以在导航器中研究它。像 EA Studio 这样的构建工具可以将相同的逻辑导出到任一平台,从而避免维护两个手工编码的版本。

在 EA Studio 中构建一个:USD/JPY 实例

在上述视频中(录制于 2024 年初),Sam Jackson 使用 EA Studio 为 USD/JPY 生成、筛选和验证交叉策略。过程比具体的机器人更重要,这些机器人是基于现已过时的数据创建的。

为什么生成策略而不是手工编码一个?生成器可以快速测试数千种规则和参数组合,而构建器的筛选和验证工具随后会完成更艰巨的工作,即拒绝那些仅因运气而看起来不错的策略。危险在于与手工编码相反的情况:由于候选者众多,有些仅凭运气就能通过,这就是为什么下面的检查很重要。

生成设置

设置视频中使用的值
交易品种和时间框架USD/JPY, M15
数据源Darwinex
生成周期2 年,然后 6 个月样本外,再加半年用于验证
接受标准至少 150 笔交易,盈利因子为 1.1 或更高
保护性订单固定止损和目标,每个在 20 到 120 点之间
指标限制最多 3 个入场指标和 2 个出场指标
生成器运行时间接近 40 分钟

手动设置日期范围可确保在生成期间最后一年数据未被查看,因此后续检查在真正新的价格行为上测试策略。

将规则限制为交叉逻辑

为了引导生成器走向交叉系统,Jackson 仅允许少数几个指标:移动平均线交叉规则、单个移动平均线、RSI、随机指标和布林带。额外的指标为生成器提供了构建筛选器的空间,而限制则使输出接近预期的策略家族。

筛选集合

EA Studio 的性能筛选器随后缩小了范围。将最低盈利因子提高到 1.2 将其减少到 103 个策略,随后还有两个阈值:至少 60 的余额稳定性和至少 1 的回报/回撤比率。这些是此示例中的选择,而非行业标准。

  • 盈利因子: 盈利交易总和除以亏损交易总和;大于 1 意味着历史收益超过了亏损交易。
  • 余额稳定性: EA Studio 衡量余额线上升稳定性的指标;较高的值表示曲线更平滑。
  • 回报与回撤: 净收益相对于历史最大跌幅的比率,是衡量每单位痛苦所获回报的快速指标。

蒙特卡洛压力测试

接下来,经过筛选的策略通过 EA Studio 的验证器,其中蒙特卡洛测试在 20 次运行中随机化了历史数据和指标参数,要求至少 80% 的运行以盈利结束。在视频中,63 个策略通过了测试。

通过此检查表明系统并非完全依赖于某一个确切的价格序列或参数集。它并不保证实盘结果具有可比性。我们关于外汇策略的蒙特卡洛模拟的指南解释了该方法能证明什么以及不能证明什么。

手动审查和第二个数据源

生成器并不总是产生你所要求的结果。63 个幸存者中的许多主要依赖布林带,因此 Jackson 审查了每一个,只保留了真正的交叉系统,剩下 12 个。他还在不同经纪商的数据上重新测试了它们,将数据源之间的巨大差异视为系统可能无法良好迁移的警告。这种快速比较是廉价的保险:仅在一家数据供应商价格上有效的系统,不太可能在你那里有效。

样本外和验证检查

在六个月样本外窗口上重新计算这 12 个策略,删除了几个在未见过数据上表现不佳的策略。幸存者随后通过最终验证窗口,该窗口于 2024 年 2 月结束。在那里,一个策略继续表现良好,另一个持续亏损并被移除,第三个大致持平,剩下两个进行交易。

这些幸存者已进入停滞期,这是趋势跟踪系统的正常特征,而不是自动丢弃它们的理由。要更系统地执行此步骤,请参阅我们关于向前推进分析的解释。EA Studio 的 Reactor 工具可以自动化整个序列;视频将其分解为手动步骤以清晰展示。

从导出到模拟账户

最后两个策略被导出为专家顾问(EA),并放置在模拟账户中进行孵化。此阶段旨在确认 EA 在当前经纪商条件下按预期执行;它并不能证明未来的盈利能力,因为实盘交易会增加滑点、可变点差、佣金和执行延迟。我们关于为何回测结果与实盘交易不同的指南详细涵盖了这些差异。

现成替代方案

本视频中的两个 EA 当时曾作为免费下载提供,但 Algo Trading Space 已于 2025 年 9 月撤回了旧视频中所有免费 EA,因为它们需要重新优化。多年前分享的 EA 是针对当时市场条件调整的,而市场条件已经改变,因此请将旧文件视为学习材料,而非可直接交易的系统。目前,在免费平台账户的“免费赠品”标签页中,每月更新三个 EA。如果你更想研究一个基于此逻辑构建的成品专家顾问,我们的MetaTrader 移动平均交叉机器人介绍了一个结合交叉与随机指标确认的系统。

常见问题

我可以在 MetaTrader 之外构建交叉逻辑吗?

可以。该规则足够简单,可以在大多数平台上编码。TradingView 的 Pine Script、TradeStation 的 EasyLanguage 和 Python 库都可以比较两个平均值,并在它们交叉时触发订单或警报。变化的是执行方式:MetaTrader EA 直接通过你的经纪商终端交易,而其他平台可能需要经纪商集成或外部桥接。无论采取哪种方式,请在信任其使用真实资金之前,在历史价格和模拟环境中测试代码。

交叉逻辑适用于黄金吗?

可以,但黄金剧烈且由新闻驱动的波动使得双向震荡和宽止损比主要货币对更常见。在 XAUUSD 上测试交叉的交易者通常会添加波动率过滤器(如 ATR),加宽止损距离,并将活动限制在伦敦和纽约时段,因为黄金在这些时段往往波动最大。请将任何 XAUUSD 版本视为一个独立项目,拥有自己的回测,因为在货币对上调整的设置很少能直接转移到如此不同的工具上。

什么时间框架适合 MA 交叉机器人?

没有唯一最佳的时间框架;每个都涉及权衡。较低的时间框架(如 M5 或 M15)更接近剥头皮交易,产生更多的交叉,因此交易成本和噪音在每笔交易中占更大比例。较高的时间框架(如 H4 或 D1)产生较少但更清晰的信号,但需要更宽的止损和在盘整期间的更多耐心。本指南中的示例在 USD/JPY 上使用了 M15。测试你能够现实监控的时间框架,并始终在扣除点差和佣金后评估结果。

这种 EA 能盈利吗?

一些交叉系统在特定时期内赚取了利润,但盈利能力从未得到保证,且简单的双线版本在计入交易成本后往往表现不佳。结果更多地取决于市场状况、过滤器、风险设置和经纪商执行,而非交叉本身。现实的目标是建立一个具有小而持久优势的设置,能够经受样本外测试和模拟孵化,并以能够承受任何亏损连串的头寸规模运行。过往业绩不预示未来结果。

EA 是否应始终处于市场中?

不一定。止损反转设计在每次交叉时翻转方向,因此不会错过任何趋势,但会吸收沿途的所有双向震荡。仅入场设计使用交叉来开仓,并使用止损、目标或追踪退出来平仓,这允许在无风险敞口的盘整期间保持空仓。许多交易者发现第二种方法更容易控制,特别是在那些在趋势之间长时间横向漂移的工具上,频繁的反复会迅速累积成本。

我可以在一个账户上运行多个交叉 EA 吗?

可以,只要每个 EA 使用唯一的魔术数字,以便 MetaTrader 能区分哪些头寸属于哪个机器人。运行多个不相关的交叉策略(如视频中的投资组合)可以平滑整体净值曲线。然而,相关货币对上的交叉系统往往在相似时间发出信号,这集中了风险而非分散风险。在将一个账户中添加更多 EA 之前,请在投资组合回测中检查相关性和综合回撤。

获取 Algo Trading Space 帮助测试你的交叉 EA

如果你希望有人对你的移动平均交叉 EA 的设置、过滤器或验证测试提供第二双眼睛,请联系 Algo Trading Space 团队。我们可以帮助你在任何资本面临风险之前,基于你的经纪商数据设置公平的测试流程。

风险警告:交易外汇和差价合约(CFD)存在高损失风险,杠杆可能会使损失超过你的初始存款。本文仅供教育目的,不构成财务建议。回测结果是假设性的,不保证未来表现。

分享这篇文章

WhatsApp
Samuel

关于作者

Samuel · Mentor & Trader

Master's in Mechanical Engineering turned trader. Sam brings an analytical, methodical approach to trading strategy development, specializing in backtesting, optimization, and risk management.

查看个人资料 →

Comments

No comments yet. Be the first to comment!

Leave a Comment

Your email address will not be published. Required fields are marked with *