English Русский Español Deutsch 日本語 Português 한국어 Français Italiano Türkçe
使用 EA Tree 在几分钟内创建 MQL5 EA 交易:第一部分

使用 EA Tree 在几分钟内创建 MQL5 EA 交易:第一部分

MetaTrader 5交易系统 | 18 三月 2014, 08:17
4 294 0
eatree
eatree

简介

EA Tree 是第一款拖放 MetaTrader MQL5 EA 交易生成器。它是一款在您的本地计算机上运行的 Windows 应用程序。您可以使用非常易用的图形用户界面创建复杂的 MQL5 代码。

在 EA Tree 中,通过将盒子连接在一起创建 EA 交易。盒子可以包含 MQL5 函数、技术指标、自定义指标或值。一个盒子的输出可连接到另一个盒子的输入,从而构成“盒子树”。EA Tree 从“盒子树”生成 MQL5 代码,然后使用安装在您的计算机上的 MetaTrader 5 平台将 MQL5 代码转换为可执行的 EA 交易。

图 1. EA Tree 图形用户界面

图 1. EA Tree 图形用户界面


在接下来的几节中,我们将介绍 EA Tree 的基本概念。

1. 基本概念

“盒子”和“按钮”概念。

盒子是 EA Tree 中信息的表示。它们可以包含技术指标、数学函数等。每个盒子含有输入按钮和输出按钮。在这个例子中,Add(添加)按钮具有三个分别标记为 A、B、C 的输入按钮以及一个标有 OUT 的输出按钮。

每个盒子的名称跟着一个索引,从而拥有独特标签。在这个例子中,标签 Add_1 表示盒子的名称为 Add,及索引为 1,这意味着它是在盒子布局中创建的第一个盒子。

图 2. Add 盒子

图 2. Add 盒子

连接按钮:

一个盒子的输出按钮可连接到另一个盒子的输入按钮,如果它们具有相同的数据类型的话,例如它们都是 double数据类型。

在这个例子中,我们将 Add_2 盒子的 OUT 按钮连接到 If_Else_1 盒子的 A 按钮。

图 3. "Add" 盒子 + "if else" 盒子

图 3. "Add" 盒子 + "If-Else" 盒子

2. "Trade"(交易)盒子

Trade 盒子是 EA Tree 的主盒子。它有很多输入按钮。最重要的按钮是 openLong、openShort、closeLong 和 closeShort 按钮。也有很多交易参数。

 图 4. "Trade" 盒子

图 4. "Trade" 盒子

3. "MM" (MoneyManagement) 盒子

MM 盒子处理 EA Tree 中的 MoneyManagement(资金管理)。它有几个输入按钮。您需要将其输出按钮连接到 Trade 盒子的 MM 按钮。

图 5. "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" 逻辑盒子

图 6. "If-Else" 逻辑盒子

Crossover(穿越)逻辑盒子

Crossover 盒子具有以下逻辑:

如果 A 运算符1 B 与 C 运算符2 D 则 T(输出按钮)为 true,否则 F(输出按钮)为 true。

其中,运算符1 和运算符2 为“等于”、“不等于”、“小于”、“大于”等。移位设置要连接到的指标索引。

在这个例子中,我们具有以下逻辑:

如果当前随机动量主值 > 当前随机动量信号且

如果前一随机动量主值 > 前一随机动量信号

则 T 为 true,F 为 false

图 7. 穿越 + 随机动量逻辑盒子

图 7. “穿越” + “随机动量”逻辑盒子

AND(与)逻辑盒子

AND 盒子具有以下逻辑:

如果(A 与 B 与 C 与 D),则 OUT(输出按钮)为 true

图 8 "And" 盒子

OR(或)逻辑盒子

OR 盒子具有以下逻辑:

如果(A 或 B 或 C 或 D),则 OUT(输出按钮)为 true

图 9. "Or" 盒子

图 9. "Or" 盒子


5. 技术指标盒子

在 Technical Indicators(技术指标)菜单中列出了很多技术指标,例如 MACDMoving Average (MA) 技术指标盒子

MACD 技术指标盒子

图 10. MACD 技术指标盒子

图 10. MACD 技术指标盒子

MA(移动平均线)技术指标盒子

图 11. MA(移动平均线)技术指标盒子

图 11. MA(移动平均线)技术指标盒子

6. 自定义指标

可以在 Custom Indicators(自定义指标)菜单和工具栏中使用自定义指标工具。EA Tree 仅使用 MQL5 自定义指标。

7. MQL5 函数

EA Tree 拥有很多用于 MQL5 函数的盒子,包括:

  • 时间序列盒子,例如 iOpen、iClose、HighestHigh、LowestLow 等;
  • 转换函数;
  • 数学函数;
  • 字符串函数。

8. 教程:创建一个简单的 EA 交易

在这一节中,让我们使用本文介绍的几个工具创建一个简单的 EA。

首先,让我们列出 EA 交易原则。

进入原则

建立买入持仓:

  1. 当前 MACD 主值 > 当前 MACD 信号,且
  2. MACD 主值 < 前一 MACD 信号,且
  3. 当前 EMA(20) > 前一 EMA(20)

建立卖出持仓:

  1. MACD 主值 < 当前 MACD 信号,且
  2. MACD 主值 > 前一 MACD 信号,且
  3. EMA(20) < 前一 EMA(20)

退出原则:

平掉买入持仓:与建立卖出持仓的原则相同
平掉卖出持仓:与建立买入持仓的原则相同

我们将使用默认交易盒子,并且不使用资金管理设置。

让我们开始吧:

1. 创建一个 Trade(交易)盒子,然后创建一个 AND(与)盒子,并将其输出连接到 Trade(交易)盒子的 openLong 按钮:


图 12. Trade(交易)盒子 + And(与)盒子

图 12. Trade(交易)盒子 + And(与)盒子

2. 创建一个 Crossover(穿越)盒子,并将其 T(true) 输出按钮连接到 And(与)盒子的 A 按钮。

图 13. Trade(交易)盒子 + And(与)盒子 + Crossover(穿越)盒子

图 13. Trade(交易)盒子 + And(与)盒子 + Crossover(穿越)盒子

3. 创建一个 MACD 盒子,并将其 Main(主值)输出按钮连接到 Crossover(穿越)盒子的 A 按钮和 C 按钮,将其 Signal(信号)输出按钮连接到 Crossover(穿越)盒子的 B 按钮和 D 按钮。

逻辑如下所示:

如果当前 MACD 主值 > 当前 MACD 信号,且
      
前一 MACD 主值 < 前一 MACD 信号

图 14. Trade(交易)盒子 + And(与)盒子 + Crossover(穿越)盒子 + MACD 盒子

图 14. Trade(交易)盒子 + And(与)盒子 + Crossover(穿越)盒子 + MACD 盒子


4. 创建 MA 和 If-Else 盒子。将 MA 盒子的 Main(主值)输出按钮连接到 If-Else 盒子的 A 按钮和 B 按钮。将 IF-Else 盒子的 OUTPUT(输出)连接到 AND(与)盒子的 B 按钮。

现在,openLong 条件的子树含有以下三个条件:

  1. 当前 MACD 主值 > 当前 MACD 信号,且
  2. MACD 主值 < 前一 MACD 信号,且
  3. EMA(20) > 前一 EMA(20)

图 15. Trade(交易)盒子 + And(与)盒子 + Crossover(穿越)盒子 + MACD 盒子 + MA 盒子 + If-else 盒子

图 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(与)盒子

图 16. Trade(交易)盒子 + And(与)盒子 + Crossover(穿越)盒子 + MACD 盒子 + MA 盒子 + If-else 盒子 + And(与)盒子

7. 为了获得退出信号,将第一个 AND(与)盒子的 OUT(输出)变量连接到 Trade(交易)盒子的 closeLong 按钮,将第二个 AND(与)盒子的 OUT(输出)变量连接到 Trade(交易)盒子的 closeShort 按钮:

图 17. 将 CloseShort 添加到 Trade(交易)盒子
 图 17. 将 CloseShort 添加到 Trade(交易)盒子

8. 双击 MACD 和 MA 盒子,选择若干个在我们将生成的 MQL5 EA 中要作为输入变量的变量。

图 18. 输入参数

图 18. 输入参数

9. 现在,布局即已完成。保存布局和 MQL5 文件。然后在 MetaEditor 5 中打开新的 MQL5 EA 文件并进行编译。

图 19. 生成的 EA

图 19. 生成的 EA

10. 最后,我们在 MetaTrader 5 策略测试程序中优化选择的输入变量。


图 20. EA 的测试 

图 20. EA 的测试


总结

使用 EA Tree 有很多优点:

  • 易于使用和理解拖放图形用户界面;
  • 无需后台编程;
  • 能够快速地学习 MQL5
  • 保守您的交易秘密;
  • 将 EA 开发时间缩短到几分钟,而不是原来的几天或者数月;
  • 能够开发具有多货币和多时间框架的复杂 MQL5 EA;
  • 可以在一个 EA 中采用多个交易策略;
  • 可以通过保存和载入图(盒子树)来轻松地重复使用代码;
  • 仍然能够导入 MQL5 自定义指标;
  • 每次都能创建正确的 MetaTrader 5 MQL 代码。

本文由MetaQuotes Ltd译自英文
原文地址: https://www.mql5.com/en/articles/337

附加的文件 |
eatree-sample.mq5 (33.7 KB)
多元回归分析。策略生成程序和策略分析程序二合一 多元回归分析。策略生成程序和策略分析程序二合一
本文介绍针对交易系统开发的多元回归分析的运用方法。它说明策略搜索自动化的回归分析的运用。生成了一个回归等式,并作为一个例子集成在一个不需要精通编程的 EA 中。
要么赢走全部,要么输个精光的 ForEx 策略 要么赢走全部,要么输个精光的 ForEx 策略
本文旨在创建最简单的交易策略,实施"要么赢走全部,要么输个精光"的游戏原则。我们不想创建一个能盈利的 EA 交易- 目标是通过最大可能概率让初始存款增加几倍。在不知道任何技术分析或不使用任何指标的情况下是否有可能在 ForEx 市场中赢走全部或输个精光?
未知概率密度函数的核密度估计 未知概率密度函数的核密度估计
本文主要介绍用于估计未知概率密度函数的核密度程序的创建。核密度估计方法被选择用于执行此任务。本文包含该方法的软件实现的源代码、其使用示例以及插图。
升级至MetaTrader 4 Build 600及更高版本 升级至MetaTrader 4 Build 600及更高版本
新版MetaTrader 4客户端的新版本拥有用户数据存储的更新结构。在早期版本中所有程序,模板,配置文件等都被直接存储在程序端的安装文件夹。现在,特定用户所需的所有必要的数据都存储在一个单独的称为数据文件夹的目录中。阅读文章来寻找常见问题的答案。