使用 EA Builder Pro 构建 EA
如果您来到这里是因为您正在开始构建交易机器人 (EA) 的旅程,那么您来对地方了!本教程将重点介绍如何使用 EA Builder Pro 构建 EA。 您可以按照我们的步骤构建示例 EA,也可以利用本教程提供的额外信息做出自己的决定。
在我们开始之前
Section titled “在我们开始之前”本教程给出了构建高级 EA 的示例,教程本身也可能感觉相当复杂。
如果您想从 简单 难度的 EA 开始,请尝试我们的 YouTube 频道:学习构建交易机器人。
如果您想从 中等 难度的 EA 开始(仅限 MT5),我们想提一下我们的长期用户 Raoul 写了一篇关于他的 EA 以及如何使用我们的工具构建它的博客。欢迎查看 Raoul 的博客。
如何使用 EA Builder Pro 创建 EA?
Section titled “如何使用 EA Builder Pro 创建 EA?”让我们开始吧!在这个高级教程中,我们将创建著名的 ‘Cowabunga’ EA。 这个 EA 将使用 H4(4 小时)时间框架的趋势作为过滤器,然后在 M15 时间框架上寻找做多或做空的机会。
让我们写下入场/出场条件,我们统称为”信号”——作为入场和出场条件集合的通用术语。
-
Open buy 信号:
做多的过滤器检查趋势是否向上。当在 H4 时间框架上满足以下条件时,趋势向上:- 5 周期 EMA 在 10 周期 EMA 之上
- RSI 大于 50
- Stochastic 向上移动但未超买
在 M15 时间框架上做多的入场机会是:
- MACD 向上穿越 0 值 或
- MACD 为负但刚开始向上移动
-
Open sell 信号:
做空的过滤器检查趋势是否向下。当在 H4 时间框架上满足以下条件时,趋势向下:- 5 周期 EMA 在 10 周期 EMA 之下
- RSI 小于 50
- Stochastic 向下移动但未超卖
在 M15 时间框架上做空的入场条件是:
- MACD 向下穿越 0 值 或
- MACD 为正但刚开始向下移动
-
Close 策略(买入和卖出均适用):
我们将设置 50 和 00 价格水平作为我们出场信号的目标。因此,如果开立买入订单时的价格为 1.09887,那么我们将目标定为 1.10000,即上涨 11.3 点。 然而,如果目标距离不到 5 点,我们将改变策略,将出场设置为订单开仓价到 Parabolic SAR 的距离。因此,如果 Parabolic SAR 在订单开仓价下方 10 点, 那么我们将出场设置为订单开仓价上方 10 点。
我们还将把 Stop Loss 设置为当 SAR 低于订单开仓价时的 Parabolic SAR 值。
好的,内容很多!您心中的 EA 可能没有这么复杂。实际上十分之九的交易策略都比 Cowabunga 策略简单。 然而,我们希望本教程展示 EA Builder Pro 能够创建高级 EA,同时确保您学到足够的知识来自己创建高级 EA。 如果您刚开始构建 EA,在本教程中遇到问题并需要额外帮助,请订阅并向我们发送您的问题。 现在,让我们继续!
要开始创建我们的第一个 Expert Advisor (EA),即交易机器人,请点击蓝色的 Add Expert Advisor 按钮,您可以在使用我们的 网页工具 时找到它。
接下来,您将被要求选择 MT4 或 MT5 的模板。如果您不知道选择哪个,请查看我的博客:MT4 还是 MT5,哪个更好?
接着,决定您是否要从一个可用示例开始,例如 ‘Moving average template’,或者从空白 EA 开始。由于我们要从头开始构建新的 EA,并且我们将引导您完成所有步骤,所以我们选择 Empty template。
接下来,为您的 EA 输入一个名称。我们将命名我们的 EA 为 ‘Cowabunga’,然后点击 Create EA。
工具现在将自动打开您的 EA,分为 4 个主要部分:指标、信号、策略和资金管理。 在本教程的下一部分中,我们将从第一个部分开始:指标。
现在我们要为这个 EA 添加指标。
要添加指标,请在指标列表中点击 Add。
您可以从按字母排序的所有标准 MetaTrader 指标中选择。如果您上传了自己的 Custom Indicators,这些指标也将显示在列表顶部。您可以添加的指标数量和种类没有限制。
对于我们的 EA,我们将添加 “Moving Average” 指标。实际上,我们将添加此指标 2 次。还记得我们在本教程开头为您的 EA 设定的目标吗?
我们使用了 2 种不同的 EMA 变体。
现在,在列表中找到 “Moving Average” 指标:
选择指标后,您将看到该指标的所有参数。 您应该熟悉这些参数,因为这些与在 MetaTrader 中向图表添加指标时显示的参数相同。您在此处输入的值将是您的 EA 在每次引用此指标的交易决策中使用的值。
以下是我们设置指标的方式(未提及的参数保持默认值):
- Moving average:名称 ‘5 EMA’,时间框架 ‘PERIOD_H4’,周期 ‘5’,方法 ‘EMA’,应用价格 ‘Close’
- Moving average:名称 ‘10 EMA’,时间框架 ‘PERIOD_H4’,周期 ‘10’,方法 ‘EMA’,应用价格 ‘Close’
- Stochastic Oscillator:名称 ‘Stochastic’,时间框架 ‘PERIOD_H4’,K 周期 ‘10’,D 周期 ‘3’,减速 ‘3’,方法:SMA,价格字段:Low/ High,模式:Main
- Relative Strength Index:名称 ‘RSI’,时间框架 ‘PERIOD_H4’,周期:9,应用于:Close
- MACD:名称 ‘MACD’,Fast EMA:12,Slow EMA:26,SMA:9,应用价格:Close,模式:Main
- Parabolic SAR:名称 ‘PSAR’,Step:0.02,Maximum:0.2
设置完所有指标后,您应该有一个如下所示的指标列表:
我们现在已添加了所有指标,可以进入下一部分。
2b Custom Indicators
Section titled “2b Custom Indicators”如果您想使用 Custom Indicators,请观看我们的教程视频,或阅读如何实现: Custom Indicators。
将指标添加到 EA 后,您的 EA 还不会开仓或平仓。您只是让 EA 知道了指标(及其参数)。因此,下一个任务是创建入场/出场信号,它由一个或多个条件组成,定义 EA 何时开仓和平仓。 首先,选择您要先创建哪个信号。我们强烈建议您先创建 ‘Open Buy’信号,并在验证买入订单在正确时机开立后再创建其他信号。我们建议您这样做,以便在学习阶段尽可能降低创建和调整信号的复杂性。我们现在就这样做,所以我们从创建 Open Buy 入场信号开始。
4 种类型的信号是:
- Open Buy:当此信号激活时,您的 EA 将开立(进入)一个买入订单。
- Open Sell:当此信号激活时,您的 EA 将开立一个卖出订单。
- Close Buy:当此信号激活时,您的 EA 将平仓(退出)您的买入订单,除非 Open Buy 信号同时处于活跃状态。
- Close Sell:当此信号激活时,您的 EA 将平仓您的卖出订单,除非 Open Sell 信号同时处于活跃状态。
要创建 Open Buy 信号,请在 EA 主界面上点击 Open Buy。
如果您在本教程的第 1 部分(EA Builder Pro - 入门)中选择了 Empty template,那么您现在将看到一个几乎空白的屏幕。这是因为信号还没有条件。我们需要自己添加条件来构成信号。
您可能看到的是这样的:
信号显示一个占位符来输入您的第一个条件。要添加更多条件,请点击”菜单图标”,它看起来像 3 个垂直排列的深色圆点。点击后,我们选择 Add Condition 来添加条件。
重复此步骤 3 次,使您的信号总共有 4 个条件,它们看起来都一样。
还记得我们在教程介绍页面中的 Open Buy 信号吗?让我们重新表述 Open buy 信号:
- 5 周期 EMA 在 10 周期 EMA 之上
- RSI 在 50 之上
- Stochastic 向上移动,但未超买
- MACD 向上穿越 0 或
- MACD 为负但刚开始向上移动
现在让我们调整刚才创建的条件,使条件匹配 Open Buy 信号第一部分的描述:
1. 5 周期 EMA 在 10 周期 EMA 之上
要检查 EMA 5 指标值是否高于 (>) EMA 10 指标值,我们将使用”高于”(>) 运算符将指标与另一个指标进行比较。
2. RSI 在 50 之上
要检查 RSI 指标值是否高于 (>) 50,我们将使用”高于”(>) 运算符将指标与值进行比较。为了选择 ‘50’,您需要先将条件右侧从 ‘Indicator’ 更改为 ‘Constant’,更多信息。
3. Stochastic 向上移动但未超买
这里我们需要使用 2 个条件,一个用于检查指标是否向上移动,一个用于检查指标是否不在超买区域。
- 要检查 Stochastic 指标是否向上移动,我们需要将指标的前一个值与当前值进行比较。当值增加时,它在向上移动。因此,要检查线是否向上移动,我们需要检查当前值(shift 0)是否高于 (>) 前一个值(shift 1)。
- 要检查 Stochastic 指标是否不在超买区域,我们需要检查指标值是否低于 80。我们将使用”低于”(<) 运算符来实现。
4. MACD 向上穿越 0 或
MACD 为负但刚开始向上移动
现在我们要向信号添加另一个(第 5 个)条件,但这次我们选择 ‘Group’ 并选择 ‘Any’。使用新 ‘Any’ 组的菜单,添加另一个条件和另一个(第二个)组。
在第二个组上,选择 ‘All’。使用第二个组的菜单,添加 3 个条件。很好!您越来越熟练了!
所以,第一个组有 2 个条件,但只需一个为真,这就是我们对第一个组使用 ‘Any’ 的原因。第二个组包含 3 个条件。
然而,对于第二个组,我们使用 ‘All’ 运算符告诉 EA 所有条件都必须满足。
我们现在已经创建了第一个信号。现在是测试信号的时候了,所以我们将:
- 导出 EA。
- 将 EA 放入 ‘Experts’ 文件夹(在 MT5 中双击下载的文件会自动完成,MT4 需要手动操作)。
- 在 MetaTrader 的 Tester 中以 ‘Visual mode’ 运行 EA。
- 验证买入订单是否在正确的时机被开立。
现在我们已经让第一个信号工作了,我们还要创建其他信号:
Open Sell
Close Buy
还记得我在本教程开始页面说过这个教程会很高级吗?好的,我们来了。
如果您很快感到不知所措,不要担心:先尝试,如果需要休息一下再回来。这是一种学习体验,长期来看会带来成果。
让我们重新回顾平仓策略:
我们将目标设定在 50 和 00 价格水平,但仅当下一个水平距离超过 5 点时。否则,我们将把目标设置为到 Parabolic SAR 值的距离。我们还将设置 Stop Loss,为此我们将在本教程稍后使用 Stop Loss 模块。
那么,我们如何实现这一切?我们知道平仓信号将由 2 个条件组成:
- 到下一个价格水平的距离必须超过 5 点。
- 价格必须高于开仓价 + 到下一个价格水平的距离。
1. 到下一个价格水平的距离必须超过 5 点
要知道下一个价格水平有多远,我们必须计算订单开仓价除以价格水平距离(50 点)的余数。在我们的网页工具中使用算术运算符时,选择 ’%‘(取模)运算符来计算除法的余数。所以当我们计算:1.09887(开仓价)% 0.00500 时,余数为 0.00387(38.7 点)。因此,如果我们能创建一个检查余数是否小于 45 点的条件,我们就知道到下一个价格水平的距离超过 5 点。
现在,让我们创建第一个条件:
Close Buy
2. 价格必须高于开仓价 + 到下一个价格水平的距离。
现在,因为第一个条件已设置,第二个条件只有在到下一个价格水平的距离超过 5 点时才会被评估。
第二个条件将检查当前价格是否已经通过了下一个价格水平。为此,我们需要检查价格是否高于订单开仓价 + 到下一个价格水平的距离。到下一个价格水平的距离可以通过从 50 点中减去余数来计算。所以,计算公式是 50 点 - (开仓价 % 50 点) = 到下一个价格水平的点数。因此,当 Bid 价格高于订单开仓价 + (50 点 - (开仓价 % 50 点)) 时,我们平仓买入订单。
在我们的示例中,这转换为 1.09887 + (0.00500 - (1.09887 % 0.00500)) = 1.01000。所以如果价格上涨 11.3 点,订单将被平仓。以下是检查 Bid 是否高于 (>) 开仓价 + (50 点 - (开仓价 % 50 点)) 的条件,与我们的第一个平仓条件组合在一起:
加油鼓励 太棒了!您已经创建了 Close Buy 信号!等等…您还在吗?如果您仍在纸上做计算来检查所有这些并试图理解,不要担心。在构建 EA 时也可以休息一下,这确实需要练习,而且经常感觉像拼图,但您会越来越好,在不知不觉中您就能构建任何您能想象的 EA!
Close Sell 以下是卖出订单的平仓信号。它基本上与买入订单的平仓信号相同,但方向相反。
如果您想了解更多关于信号及其功能的信息,请查看深入的 信号文档。 您现在已经创建了 EA 的 Open 和 Close 信号,这意味着您的 EA 已经可以自动交易了。然而,还有更多。有各种方法可以改变 EA 的行为。 这些就是所谓的”模块”,我们也将在 EA 中使用它们。
添加了信号后,您的 EA 现在将开仓和平仓。还剩下两个任务:在目标距离不到 5 点的情况下将替代 Take Profit 设置为 PSAR,以及将 Stop Loss 设置为 PSAR 的值。为此,我们需要添加 Take profit - Conditional (Pro) 和 Stop loss - Conditional (Pro) 模块各两次,一次用于买入,一次用于卖出。所以我们最终将有 4 个平仓模块:2 个用于 Take Profit,2 个用于 Stop Loss。
要添加 Take profit - Conditional (Pro) 模块,请在 EA 主界面的策略部分点击 Add。
您现在将看到可以添加到 EA 的所有模块列表。 我们将添加 Take profit - Conditional (Pro) 模块,这是最高级的模块之一。 点击 Add 后,您将看到模块列表:
您现在需要输入模块的参数。我们将先输入名称和其他基本设置:
- 名称:Buy TP
- 启用对象:Is Enabled For Buy Order(仅对买入订单启用此模块)
然后我们将定义前置条件,即在设置 TP 之前必须满足的条件。由于我们只想在订单开仓价与目标之间的差距小于 5 点时设置 Take Profit,我们将应用与本教程上一页相同的逻辑。此外,我们只会在 PSAR 低于当前价格时将 TP 设置为 PSAR 的值,这样价格方向是向上的。简而言之,如果价格在上升,我们将检查开仓价取模 50 点的余数是否大于 45 点:
接下来,我们将 Take Profit 的值设置为订单开仓价 + 到 PSAR 的距离:
我们不会输入何时移除 Take Profit 的条件,因此将最后一个条件留空。但我们确实设置了最后的值:
- Trail distance (pips):0
- Trail step size:0
- Close percentage:100
我们还将为卖出订单添加相同的 Take profit - Conditional (Pro)。以下是我们的设置方式:
现在我们将添加 Stop Loss 模块,它的配置更简单,因为有一个简单的前置条件: 当 PSAR 高于当前价格时,我们只需将 Stop Loss 的值设置为订单价格减去 PSAR。 因此,(对于买入的)前置条件是 PSAR 高于当前价格。起始值是 PSAR 的值。
对于卖出,前置条件相反,但其他一切都相同:
如果您想了解更多关于模块及其功能的信息,请查看深入的 模块文档。 您会对使用模块创造的灵活性感到惊讶。要查看示例,请查看这篇博客: 如何基于 ATR 指标设置 Stop Loss?
您现在已经完成了第一个完全可用的 EA!
您现在可以导出 EA 并在 MetaTrader 中使用它。如果您需要详细说明,请查看我们的教程 如何运行您的第一个 EA。
我们建议以下后续步骤:
- 在 MetaTrader 中通过运行 Backtest 来测试您的 EA。确保启用 ‘Visual mode’,这样您可以直观地确认订单是否在预期的时间被开仓和平仓。如果您不确定在跟随本教程时是否犯了错误,您可以将您的 EA 与 ‘Tutorial - Cowabunga’ 模板 EA 进行比较,在向账户添加新 EA 时可以选择该模板。
- 如果您需要更多帮助配置 EA,请订阅并联系我们提出您的问题。我们将回答并提供示例,直到您达到目标。
- 通过改进 EA 的输入值来调优您的 EA。如果您使用的是 EA Builder Pro 的免费版本,您可以在 EA Builder Pro 中更改设置。如果您是订阅者,您可以在 MetaTrader 中(自动)优化输入参数。
- 当您认为您有了一个运行良好的 EA 并想将其投入实际使用时,请在模拟账户上运行 EA,直到您确信 EA 按预期工作。我们强烈建议在 VPS 上运行 EA (更多信息)。
- 在模拟账户上运行 EA 足够长的时间。请注意,运行 EA 大约一周通常不被认为是足够长的时间。 我们个人至少手动验证 200 个订单,并且至少在模拟账户上运行 EA 3 个月后才转到实盘账户。 请注意,我们没有资格提供财务建议。将 EA 放在实盘账户上的决定(以及基于哪些信息)是您的责任。
感谢您与我们一起完成本教程,我们希望继续与您同行!超过 50,000 名交易者在您之前来过这里。使用我们的在线 Backtest 工具执行了超过 200 万次测试!