简介
EA Tree 是第一款拖放 MetaTrader MQL5 EA 交易生成器。它是一款在您的本地计算机上运行的 Windows 应用程序。您可以使用非常易用的图形用户界面创建复杂的 MQL5 代码。
在 EA Tree 中,通过将盒子连接在一起创建 EA 交易。盒子可以包含 MQL5 函数、技术指标、自定义指标或值。一个盒子的输出可连接到另一个盒子的输入,从而构成“盒子树”。EA Tree 从“盒子树”生成 MQL5 代码,然后使用安装在您的计算机上的 MetaTrader 5 平台将 MQL5 代码转换为可执行的 EA 交易。
图 1. EA Tree 图形用户界面
在接下来的几节中,我们将介绍 EA Tree 的基本概念。
1. 基本概念
“盒子”和“按钮”概念。
盒子是 EA Tree 中信息的表示。它们可以包含技术指标、数学函数等。每个盒子含有输入按钮和输出按钮。在这个例子中,Add(添加)按钮具有三个分别标记为 A、B、C 的输入按钮以及一个标有 OUT 的输出按钮。
每个盒子的名称跟着一个索引,从而拥有独特标签。在这个例子中,标签 Add_1 表示盒子的名称为 Add,及索引为 1,这意味着它是在盒子布局中创建的第一个盒子。
图 2. Add 盒子
连接按钮:
一个盒子的输出按钮可连接到另一个盒子的输入按钮,如果它们具有相同的数据类型的话,例如它们都是 double数据类型。
在这个例子中,我们将 Add_2 盒子的 OUT 按钮连接到 If_Else_1 盒子的 A 按钮。
图 3. "Add" 盒子 + "If-Else" 盒子
2. "Trade"(交易)盒子
Trade 盒子是 EA Tree 的主盒子。它有很多输入按钮。最重要的按钮是 openLong、openShort、closeLong 和 closeShort 按钮。也有很多交易参数。
图 4. "Trade" 盒子
3. "MM" (MoneyManagement) 盒子
MM 盒子处理 EA Tree 中的 MoneyManagement(资金管理)。它有几个输入按钮。您需要将其输出按钮连接到 Trade 盒子的 MM 按钮。
图 5. "Trade" 盒子 + MM 盒子
4. Logic(逻辑)盒子
Logic 盒子对交易盒子条件按钮(openLong、openShort、closeLong 和 closeShort)和布局中余下的盒子之间的连接非常重要。
If-Else 逻辑盒子
If-Else 盒子具有以下逻辑:
如果 A 运算符 B 则 T(输出按钮)为 true,否则 F(输出按钮)为 true。
其中,运算符为“等于”、“不等于”、“小于”、“大于”等。
图 6. "If-Else" 逻辑盒子
Crossover(穿越)逻辑盒子
Crossover 盒子具有以下逻辑:
如果 A 运算符1 B 与 C 运算符2 D 则 T(输出按钮)为 true,否则 F(输出按钮)为 true。
其中,运算符1 和运算符2 为“等于”、“不等于”、“小于”、“大于”等。移位设置要连接到的指标索引。
在这个例子中,我们具有以下逻辑:
如果当前随机动量主值 > 当前随机动量信号且
如果前一随机动量主值 > 前一随机动量信号
则 T 为 true,F 为 false
图 7. “穿越” + “随机动量”逻辑盒子
AND(与)逻辑盒子
AND 盒子具有以下逻辑:
如果(A 与 B 与 C 与 D),则 OUT(输出按钮)为 true
图 8 "And" 盒子
OR(或)逻辑盒子
OR 盒子具有以下逻辑:
如果(A 或 B 或 C 或 D),则 OUT(输出按钮)为 true
图 9. "Or" 盒子
5. 技术指标盒子
在 Technical Indicators(技术指标)菜单中列出了很多技术指标,例如 MACD 和 Moving Average (MA) 技术指标盒子
MACD 技术指标盒子
图 10. MACD 技术指标盒子
MA(移动平均线)技术指标盒子
图 11. MA(移动平均线)技术指标盒子
6. 自定义指标
可以在 Custom Indicators(自定义指标)菜单和工具栏中使用自定义指标工具。EA Tree 仅使用 MQL5 自定义指标。
7. MQL5 函数
EA Tree 拥有很多用于 MQL5 函数的盒子,包括:
- 时间序列盒子,例如 iOpen、iClose、HighestHigh、LowestLow 等;
- 转换函数;
- 数学函数;
- 字符串函数。
8. 教程:创建一个简单的 EA 交易
在这一节中,让我们使用本文介绍的几个工具创建一个简单的 EA。
首先,让我们列出 EA 交易原则。
进入原则:
建立买入持仓:
- 当前 MACD 主值 > 当前 MACD 信号,且
- 前一 MACD 主值 < 前一 MACD 信号,且
- 当前 EMA(20) > 前一 EMA(20)
建立卖出持仓:
- 当前 MACD 主值 < 当前 MACD 信号,且
- 前一 MACD 主值 > 前一 MACD 信号,且
- 当前 EMA(20) < 前一 EMA(20)
退出原则:
平掉买入持仓:与建立卖出持仓的原则相同
平掉卖出持仓:与建立买入持仓的原则相同
我们将使用默认交易盒子,并且不使用资金管理设置。
让我们开始吧:
1. 创建一个 Trade(交易)盒子,然后创建一个 AND(与)盒子,并将其输出连接到 Trade(交易)盒子的 openLong 按钮:
图 12. Trade(交易)盒子 + And(与)盒子
2. 创建一个 Crossover(穿越)盒子,并将其 T(true) 输出按钮连接到 And(与)盒子的 A 按钮。
图 13. Trade(交易)盒子 + And(与)盒子 + Crossover(穿越)盒子
3. 创建一个 MACD 盒子,并将其 Main(主值)输出按钮连接到 Crossover(穿越)盒子的 A 按钮和 C 按钮,将其 Signal(信号)输出按钮连接到 Crossover(穿越)盒子的 B 按钮和 D 按钮。
逻辑如下所示:
如果当前 MACD 主值 > 当前 MACD 信号,且
前一 MACD 主值 < 前一 MACD 信号
图 14. Trade(交易)盒子 + And(与)盒子 + Crossover(穿越)盒子 + MACD 盒子
4. 创建 MA 和 If-Else 盒子。将 MA 盒子的 Main(主值)输出按钮连接到 If-Else 盒子的 A 按钮和 B 按钮。将 IF-Else 盒子的 OUTPUT(输出)连接到 AND(与)盒子的 B 按钮。
现在,openLong 条件的子树含有以下三个条件:
- 当前 MACD 主值 > 当前 MACD 信号,且
- 前一 MACD 主值 < 前一 MACD 信号,且
- 当前 EMA(20) > 前一 EMA(20)
图 15. Trade(交易)盒子 + And(与)盒子 + Crossover(穿越)盒子 + MACD 盒子 + MA 盒子 + If-else 盒子
5.创建另一个 And (与)盒子,并将其输出按钮连接到交易盒子的 openShort 按钮。
6.因为 openShort 逻辑与 openLong 的逻辑相反,所以将 Crossover(穿越)盒子的 F 输出按钮连接到新建的 And(与)盒子的 A 按钮。同样的,将 If-Else 盒子的 F 输出按钮连接到新建的 And(与)盒子的 B 按钮:
图 16. Trade(交易)盒子 + And(与)盒子 + Crossover(穿越)盒子 + MACD 盒子 + MA 盒子 + If-else 盒子 + And(与)盒子
7. 为了获得退出信号,将第一个 AND(与)盒子的 OUT(输出)变量连接到 Trade(交易)盒子的 closeLong 按钮,将第二个 AND(与)盒子的 OUT(输出)变量连接到 Trade(交易)盒子的 closeShort 按钮:
图 17. 将 CloseShort 添加到 Trade(交易)盒子
8. 双击 MACD 和 MA 盒子,选择若干个在我们将生成的 MQL5 EA 中要作为输入变量的变量。
图 18. 输入参数
9. 现在,布局即已完成。保存布局和 MQL5 文件。然后在 MetaEditor 5 中打开新的 MQL5 EA 文件并进行编译。
图 19. 生成的 EA
10. 最后,我们在 MetaTrader 5 策略测试程序中优化选择的输入变量。
图 20. EA 的测试
总结
使用 EA Tree 有很多优点:
- 易于使用和理解拖放图形用户界面;
- 无需后台编程;
- 能够快速地学习 MQL5;
- 保守您的交易秘密;
- 将 EA 开发时间缩短到几分钟,而不是原来的几天或者数月;
- 能够开发具有多货币和多时间框架的复杂 MQL5 EA;
- 可以在一个 EA 中采用多个交易策略;
- 可以通过保存和载入图(盒子树)来轻松地重复使用代码;
- 仍然能够导入 MQL5 自定义指标;
- 每次都能创建正确的 MetaTrader 5 MQL 代码。