English Русский Español Deutsch 日本語 Português
可视化策略构建工具. 无需编程即可创建交易机器人

可视化策略构建工具. 无需编程即可创建交易机器人

MetaTrader 5测试者 | 1 八月 2018, 07:23
5 827 1
Andrey Barinov
Andrey Barinov

目录


简介

算法交易以及可以在策略测试器中根据历史数据来检验交易思路,是 MetaTrader 5 交易平台最重要的功能。

但是,为了在自动交易模式下在实时图表中或者策略测试器中使用交易策略,需要进行编程并转化为可执行文件(EA交易文件 - EA),并不是每个交易者都有编程能力或者掌握它们的资源,

这篇文章提出了解决这个问题的一种方案 — 可视化的策略构建工具:Mission Automate (自动化任务). 在它的帮助下,任何人都可以不必写一行代码,就能自动化他们的交易,并且在历史数据中检验策略。下方有该程序免费版本的链接。它还包含了5个制作好的、免费的、基于常用策略的EA交易。它们是以模板的形式设计的,可以作为其他策略的基础。

用于 MetaTrader4: Mission Automate Demo MT4

用于 MetaTrader5: Mission Automate Demo MT5

尽管免费版本有“演示(Demo)”的字样,它具有完整版所有的功能,并且不包含任何重要的限制,它只是有几点 "不便之处"。在市场中免费版本的页面描述处有程序完整版的链接。

这个可视化策略构建工具是为“非程序员”设计的,对很多用户都是有用的,任何交易者在花费一点时间了解它并掌握它的工作原理之后,都可以创建完整功能的交易机器人,

这篇文章提供的是通过创建实际应用的EA交易来展示该策略构建工具的主要功能概览。


特性

Mission Automate 应用程序可以使任何人把他们的想法转化为完成的交易机器人,直观的图形界面中支持 "拖曳"技术,使得这个过程简单而有趣。创建EA交易就像是使用已有的模块(元件)而把它们通过逻辑连接起来,组合成一个结构图一般。当结构图创建完毕,它可以立即上线执行或者自动转换为 MQL5 代码用于将来在策略测试器或者实时图表中使用。

下面列出的是一部分可用的元件:

  • MetaTrader 平台中的所有标准指标。
  • 自定义指标
  • 交易 (交易组) 开启 / 关闭 / 修改.
  • 设置 / 取消 / 修改挂单 (订单组).
  • 交易管理:手数计算器;盈亏平衡点,追踪止损。
  • 访问交易历史 (已关闭仓位的信息).
  • 用于取得价格历史中各种信息的元件。
  • 各种交易品种最新分时的数据。
  • 各种数学计算以及价格转换。
  • 逻辑操作。
  • 变量 / 开关.
  • 时间操作。
  • 有关交易品种的各种信息。
  • 账户的信息 (余额,净值,可用保证金,等等).
  • 通知: 提醒,记录,推送以及图表上的注释.
  • 用于创建 EA 交易的输入参数,在设置中可见并且可以在策略测试器中优化的元件。

这样大量的元件又构成了极大数量的可能组合,使任何人都能创建各种类型的交易机器人和工具。下面是使用 Mission Automate 策略构建工具可以创建出的部分成果列表:

  • 基于技术指标的 EA 交易.
  • 价格行为策略
  • 烛形形态 EA 交易.
  • 基于支撑和阻力水平的策略。
  • 不同类型的网格系统。
  • 使用马丁格尔方法的系统。
  • 交易管理工具。
  • 提醒和通知系统。
  • 资金管理工具。

在策略构建工具中以及在这篇文章中,"交易(trade)""仓位(position)"这两个词是作为同义词使用的。一个交易/仓位可以是当前活动的,还没有关闭的,或者是历史的, 也就是过去已经关闭的。文字中的"订单(order)"应当被当成"挂单(pending order)"。挂单在晚些时候可能会成为一个仓位或者被取消而移动到历史中。


概览

总体来说,把想法转换为交易机器人的过程包含了下面几个阶段:

  1. 交易者的头脑中构思一个交易策略  - 创作工作。
  2. "在书面上"把策略规划为一系列规则 - 策略的规范化,或者说 EA 交易规格的准备。
  3. 把这些规则转化为交易机器人的代码和可执行文件 - EA 交易的编程。

大多数交易者可以自己独立成功完成步骤 # 1 和 # 2。本文中所述的产品可以完成步骤 # 3, 它可以为任何交易者制作算法交易。

Mission Automate 策略构建工具使您可以从头创建您自己的策略,或者从已经制作好的模板/实例开始,这会更加简单。

下面的视频展示了从头创建一个新的 EA 交易的全部过程,在这个例子中,构建的是一个基于两条移动平均线的经典策略,

视频展示了下面的步骤 (晚些时候将会更加详细地描述它们).
  • 从元件开始组成结构.
  • 使用逻辑链接连接元件.
  • 调整元件和链接的参数.
  • 自动生成 .mq5 EA 文件.
  • 编译代码并得到可执行的 .ex5 文件.
  • 在策略测试器中运行和测试 EA 交易i.



策略是由模块组合的,这些模块被称为元件(elements).

所有可用的元件都位于元件条(elements bar)中.

元件可以使用逻辑链接(links)来连接起来.

常有的元件和链接的组合可以保存为片段(snippets).

所有创建好的片段都位于片段条(snippets bar)中。

元件可以使用"拖曳"来移动,

一组元件和链接可以构成一个设计图(scheme).

一个新的设计图可以使用模板(template)来创建,

所有可用的模板都位于模板条(templates bar)中.

概览


新的设计图可以从一个可用的模板或者从头创建,

如需从模板创建设计图,要在面板中选择对应的模板并把它拖到工作空间(workspace)中,在点击模板的图标时,会出现模板的简要描述,

当创建好了设计图时,设计条(schemes bar)上会出现它的图标。设计图图标是用于快速访问设计可行的操作的,在单次点击了图标的时候,会出现设计图的控制面板。如果您双击图标,所选的设计图就会移动到屏幕的中心位置。每个设计图都可以起一个名字,您可以在工作空间中自由移动设计图。

设计图的创建


如需把新的元件加到设计图中,只需要把它们从元件条中拖到设计图上就可以了。

如果一个元件被从元件条中拖到一个空白的空间中,就会创建一个新的只包含这个元件的设计图。每个元件也可以赋予一个名称。

在点击了元件之后, 就会出现它的设计面板,您可以修改元件参数的数值或者把它们设为默认值。除了设置参数,还有选项可以克隆元件,删除元件或者重置它的设置,以及访问元件的简短描述和它的参数。

元件

在元件条上点击了元件之后,会弹出它的设置窗口,在这种情况下,如果您从面板上修改了元件的参数,它们就会用于这个元件以后的所有新的拷贝中。

元件可以被分为三组。

  1. 用于当某些条件发生时,进行某些操作的元件 (建立新的仓位,通知,修改已有仓位,等等) 。这些进行操作所需的条件被称为触发器(trigger).
  2. 对象元件 (分时,柱形,交易品种,仓位,挂单,指标). 首先,您需要创建一个对象并配置它的参数,之后您才能取得它的有关信息。
  3. 用于获得这些对象(当前价格,账户状态有关信息,交易历史,等等)信息的元件。
元件的参数和对象数据可以是不同类型的,例如,货币汇率是小数类型的, 而仓位的注释可以设为字符串类型。柱形的编号类型为整数, 而它开启的时刻是时间类型。

元件可以使用逻辑链接(links)来连接起来. 链接可以把数据从一个元件传送到另一个元件,

只有相同类型或者在转换之间不会丢失数据的元件和参数,才能使用链接来相连。

如需创建新的链接,只要“拖住”元件的边缘,在点击链接之后,会出现含有其设置的窗口。

连接元件


上面的图片显示了“出现新柱提醒通知”工具看起来的样子,

链接只能用于连接相同类型或者在相互转换时不会丢失数据的元件和参数,

有些操作可以应用于一组选中的元件,

如需创建一组元件,可以按住 Ctrl 键来选择设计图,所有位于其中的元件都会被选择。另外,如果在点击的时候按住了 Ctrl 键,元件会被突出显示。

在选定的组中点击了一个元件之后,会出现组的设置窗口,被选中的组可以被复制,删除或者保存到一个文件中。另外,您可以在组里创建一个包含多个元件的片段(snippet),在片段条就将出现一个新的片段,可以加到新的设计图中。使用片段条,您可以修改任何片段中的元件参数。

片段


程序的其他特性可以通过构建真实 EA 交易的实例来了解。


实例 #1: "移动平均交叉" EA 交易

我们先来探讨一个经典的交易策略,它是基于两条移动平均线的交叉。

这个策略可以如下简要描述:

当快速移动平均(MA)向上与慢速MA交叉时,我们买入。当快速MA向下与慢速MA交叉时,我们卖出。当有反向信号出现时,我们关闭仓位,另外还有止损和获利。

现在让我们以更加正式的形式来把策略描述成一系列规则/条件:

  • 移动平均应当使用烛形的收盘价生成;我们只在已经完成的柱上工作;所有的交易操作在信号出现之后的柱开启时进行;
  • 快速和慢速移动平均的周期数应当在 EA 的输入参数中可以调整;
  • 买入信号(以及卖出平仓)的状态是,在前一个柱快速MA低于慢速MA,而在当前柱变得快速高于慢速;
  • 卖出信号(以及买入平仓)的状态时,在前一个柱快速MA高于慢速MA,而在当前柱变得快速低于慢速;
  • 在任何时刻只能存在一个仓位;
  • 所有的交易应当使用固定的手数大小;手数大小应当在EA的输入参数中可以调整;
  • 止损和获利点数的数值必须在 EA 的输入参数中可以调整; 
  • EA交易应当只作用于它所在图表的交易品种;指标时段的计算应当对应当前图表的时段;
  • 应当可以有多个EA使用唯一的幻数标识工作在同一个账户中,这个参数必须在 EA 的输入参数中设置;
  • 应当可以为 EA 交易的交易指定自定义注释。

这一系列规则作为 EA 交易的规范已经足够好了,让我们开始使用可视化策略构建工具来开发这个交易机器人。

移动平均的周期数应当创建为 EA 交易的输入参数,

为此,要使用一个 Input 元件。对于不同类型的输入参数都有单独的元件,

指标周期数是一个整数(integer),我们将会使用对应的元件。让我们创建一个新的设计图,在上面加上两个这样的元件,再设置它们的名称并调整它们的数值,对于快速 MA, 我们把默认值设为 14,  而慢速 MA = 28. 这些数值可以在策略测试器中进一步优化。

MA 周期数


我们的策略使用了一个标准指标,但是使用了不同的周期数,

我们需要两个叫做Moving Average(移动平均)的元件。

让我们把它们加到设计图中,并且把指标周期数元件连接到 Indicator Period(指标周期数) 参数。在这之后,设计图看起来就像这样:

指标


默认情况下,指标使用当前图表的交易品种和时段,这正是我们所需要的。计算指标的周期数将取自对应的元件,

现在,为了确定买入/卖出信号的条件,我们从每个指标中取得两个值 - 对于前一个柱和当前柱。

为了取得指标值, 应当使用Indicator Value(指标值) 元件。让我们在设计图中加入4个这样的元件并创建对应的链接。

柱是按照从现在到以前的顺序编号的,当前没有完成的柱的编号是 0. 前一个形成的柱编号赋值为 1, 再往前的柱编号为2,以此类推。

我们的策略中只使用已经完成的柱,所以,对于当前柱我们使用 value = 1, 而对于前一柱我们使用 value = 2. 所有四个元件都要设置对应的值。

移动平均的数值


现在,我们需要比较指标值并且检查入场条件是否满足。

为了比较数字, 我们要使用 Compare(比较) 元件, 这个元件在满足指定条件时会输出数值 "true" ,而不满足时数值为 "false"。让我们在设计图中加上两个这样的元件,在第一个元件中,我们将检查在前一个柱是否快速MA高于慢速MA,在第二个元件中,我们检查在当前柱是否快速MA高于慢速MA。让我们创建对应的链接并配置比较元件的参数。

数值比较


买入信号要同时满足两个条件:

  • 快速 MA 在前一个柱高于慢速 MA
  • 快速 MA 在当前柱变得高于慢速 MA

为了检验这些条件同时满足, 要使用 "logical AND"(逻辑“与”)元件。这个元件在全部条件都满足的情况下,输出"true",如果 至少它们中有一个不满足的时候就输出"false"。

在设计图上加上两个这样的元件,并且把它们与两个 Compare 元件都要连接起来。

当这样做的时候,我们需要 "反转" 其中一些链接。如果在前一个柱上快速 MA 高于慢速 MA,Compare 元件会取得"true",但是我们需要检查的是高于的情况,所以,我们需要通过调整相应连接在元件参数中的链接来反转输出值。反转过的链接在设计图上是使用红色画出的.

信号


让我们继续实现交易操作。在开启一个新的仓位之前,我们必须检查当前的状态,如果交易在期望的方向上已经开启,就忽略这个信号,或者有开启的反向仓位时就要关闭该仓位。为了做到这一点,我们需要知道已有买入或者卖出仓位在当前时刻的数量。

为了访问交易信息,要使用Trades Group(交易组)元件。这个元件构成的是一组满足某些条件的交易,交易可以通过各种参数来过滤,例如交易品种,幻数,注释,等等。

我们需要一个这种元件来用于买入交易,而另一个用于卖出交易,让我们在设计图中加入这样两个元件并相应地配置它们:

交易组

如需取得交易组的信息 (我们需要知道其中交易的数量), 我们将使用Trades Group Information (Integer) (交易组信息,整数)元件。 让我们在设计图中加上两个这种元件。它们的输出值将会使用Compare元件来与0作比较。

交易数量


现在我们需要创建最后的条件 - 交易操作的触发器。每个触发器包含两个条件:

  1. 开启买入的触发器 - (1) 当前时刻没有已经开启的买入交易,以及 (2) 买入信号
  2. 开启卖出的触发器 - (1) 当前时刻没有已经开启的卖出交易,以及(2) 卖出信号
  3. 关闭买入的触发器 - (1) 当前时刻一个已经开启的买入仓位,以及 (2) 卖出信号
  4. 关闭卖出的触发器 - (1) 当前时刻一个已经开启的卖出仓位,以及 (2) 买入信号

因为我们需要检查几个条件的满足情况,我们将再次会使用逻辑元件,每个触发器用一个。在设计图上加上4个这样的元件,并创建对应的链接。

请注意,对于开启仓位的触发器,Compare 元件的链接必须要反转。

触发器


触发器做好了,剩下的事情只有加上交易元件了。

如需开启一个仓位,要使用的是Open Trade(开启交易)元件. 我们需要一个用于开启买入仓位,而另一个用于开启卖出仓位。

如需关闭交易,需要使用的是 Close Trades Group(关闭交易组)元件。这里我们还需要一个元件用于关闭卖出交易,而另一个来用于关闭买入交易。

除了触发器,我们还需要把交易组自身与 Close Trades Group 元件相连。在把这些元件加上,并创建对应链接之后,设计图看起来就像这样了:

交易元件


EA 的交易逻辑已经完成了,现在我们需要确认的是交易手数大小,交易注释和止损/获利值可以通过 EA 交易的输入参数来进行调整,为此,我们又一次需要来自 Input Parameters(输入参数) 组的元件。

交易手数是一个小数, 交易注释是一个字符串, 而幻数、止损和获利都是整数。在设计图上加入这些元件,并把它们附加到交易元件的对应参数中。

完成的设计图视图


设计图已经完成了,现在您需要的是创建一个可执行的 EA 文件。

如果您想要把 EA 的输入参数按照一定顺序排列,您可以使用Arrange Inputs 选项。这将会列出所有用于输入参数的元件,它们可以上下移动,指定它们在 EA 设置窗口中出现的顺序。

排列 EA 输入参数

我们已经准备好,可以生成源代码和创建 EA 交易文件了,整个过程显示在下面的图片中,并包含下面的步骤:
  1. 使用策略构建工具的文件导航器来生成 EA 文件;
  2. 在 MetaEditor 程序中打开创建好的 EA 源代码文件 (.mq5);
  3. 编译该 EA 交易并取得可执行的 EA 文件(.ex5).

创建 EA 文件

编译成功之后,会生成与源代码文件名相同的,以.ex5 为扩展名的 EA 文件 ,并且位于源文件 (.mq5) 所在相同的文件夹中

这个 EA 文件应当放在交易终端的 Experts 文件夹中,然后它就可以在交易终端中使用了。

如果我们在策略测试器中运行创建好的 EA 交易,我们将会看到下面的画面:

策略测试

EA 已经完成了,并且完全符合交易策略的原始规则。


实例 #2: "反马丁格尔" EA 交易

让我们探讨另一个常见的基于马丁格尔系统的交易策略。该策略可以描述如下:

我们使用初始手数大小在任意方向上开启一个仓位;我们设置相同大小的止损和获利值;如果仓位获利关闭,下一个将会再次以初始手数大小开启;如果仓位亏损关闭,下一个交易将会有加大的手数大小,并且使用抵消之前亏损的利润来关闭。

这样的机器人的技术规格像这样:

  • 第一个交易应当以用户定义的方向 (输入参数) 和初始手数大小 (输入参数)开启.
  • 对于任何开启的仓位,都设置相同大小的止损和获利水平点数 (输入参数).
  • 如果交易获利关闭,下一个仓位在反方向以初始手数大小开启,
  • 如果交易亏损关闭,下一个仓位在反方向上以增加的手数大小开启 (Lot Multiplier - 输入参数).
  • 应当可以为所有的 EA 的交易设置注释 (输入参数).
  • 应当可以同时运行多个 EA (Magic - 输入参数).
  • EA 应当交易的资产是它所附加的图表对应的资产. 时段设置没有关系.

让我们开始使用可视化策略构建工具来创建这个 EA 交易。

为了实现这个策略,我们需要有当前状态的信息(是否存在已经开启的仓位)以及交易历史 (我们需要知道前一个交易的方向,利润和手数大小).

构建两个交易组: 一个用于已经关闭的仓位 (历史),而另一个用于开启的仓位 (当前). 另外,为幻数设置加上 Input Parameter 元件。

交易组

如果不存在已经开启的仓位,必须开启仓位。就像在之前例子中那样,使用 Trades Group Information 元件来确定已经开启仓位的数量,并且把取得的数值和0作比较。如果没有仓位,就会触发开启一个新的交易,在我们的例子中,链接必须要反转。

开启下一个交易

如果已经有了开启的仓位,我们需要为它设置止损和获利。

在前面的例子中,这是在交易开启之后立即进行的,但是不是所有的执行模式 /经纪商都允许这样做。所以,要考虑开启仓位时没有止损和获利,而在将来设置它们的方法。

设置 (修改) 止损和获利水平是通过Modify Trades Group(修改交易组)元件来进行的,

另外,要加入用于交易注释的输入参数和止损以及获利点数的输入参数。

设置止损

为了确定之后交易的类型,我们需要知道之前最后关闭仓位的方向。为了取得仓位的信息,要使用Trade Information(交易信息) 元件。为此,我们需要知道最后一次交易的单号,我们可以使用 Trades Group Information(交易组信息) 元件来取得它。

最近交易

让我们取得最近交易的类型,看它是买入还是卖出,为此,我们要使用Equal(相等)元件. 它允许比较不同类型数据的数字,如果它们是相等的,就会输出 "true" 。

最近交易的类型

使用Variable(变量)元件, 为下一个交易创建一个类型. 这个元件在不同条件满足情况下会输出不同的数值,类似于一种 switch.

如果之前的交易是买入,则下一个交易将是卖出,反之亦然。如果最近交易的类型未知 (如果还没有仓位开启过), 则使用输入设置中的类型。在对应元件的协助下创建它。

下个交易的类型

现在我们需要做的就是计算下一个交易的交易量,为此,我们需要最近所关闭仓位的结果、以及它的交易量。交易的利润和交易量是使用 Trade Information 元件来获得的,利润将会与0做比较,来确定交易关闭时是盈利还是亏损。

最近交易的利润和交易量

如果这是第一个交易,或者最近仓位是以获利关闭的,我们就是用初始手数大小设置一个新的循环,

为了确定新循环开始的条件,使用 逻辑 OR(或) 元件. 如果至少有一个条件满足,它就返回"true",如果所有的条件都没有满足,它就返回"false"。我们需要检查两个条件:(1) 是否获利关闭仓位的条件是通过Compare元件取得的, 它会检查交易是否是以0来比较的 (连接或元件的连接必须要被反转。(2) 检查是否这是第一个交易,要使用 AND 元件, 在那里我们会连接来自Equal元件转换过来的数值。然后,如果之前的交易既不是买入也不是卖出,也就是说在这种情况下没有之前的仓位。

新的循环

如果没有之前的仓位,我们就需要计算下一个交易的交易量,为此,我们要使用 Arithmetic(算术) 元件,它可以进行两个数字的各种数学计算。在本例中,我们要把之前交易的手数乘以 Lot Multiplier 参数指定的系数, 它是用 Input Parameter 元件创建的。对于我们的策略,把它的默认值设为 2。

手数计算

对于下一次交易手数大小的计算,要使用 Variable 元件, 与确定下次交易类型类似。如果我们要开始一次新的循环,我们就需要使用初始手数,但是如果我们是在一次亏损交易后继续循环,我们就需要在后一次交易中使用根据之前阶段计算所得的手数。

另外,还要增加一个元件用于初始手数大小(输入参数). 完成后的设计图看起来是这样的:

后一次交易的手数

如需快速浏览设计图/策略中所有元件的参数,您可以使用 Parameters Layout view(参数布局视图) 功能

在这种情况下,设计图会改变它的外观,被分成两个区域。第一个区域列出所有设计图中的参数,而第二部分列出所有包含这些参数的元件。在这种布局中,我们可以检查所有元件的每个参数的设置。

让我们确保所有元件都是使用 EA 交易所运行图表的当前交易品种,要做到这一点,先把设计图切换到 Parameter Layout 模式,然后在左边的列表中选择 Symbol Name 参数,然后,在右手边的区域,您可以看到这个参数位于设计图的三个元件中,并且每个都被设为 Current Symbol (当前交易品种),意思就是使用当前图表的资产。如有必要,这个值可以改成市场报价(Market Watch)中任何其他货币对的名称。

参数布局视图(Parameters Layout view)

让我们在策略测试器中检验我们已经完成的 EA 交易,要做到这一点,就像在前一个例子中那样,我们需要生成一个源代码文件并在 MetaEditor 程序中编译它。

策略测试

这个策略是有风险的,但是根据给出的算法它是有效的!有很多空间可以进一步提高这个策略,优化它的参数以及降低风险,您可以增加不同的入场过滤器,增加一个点差过滤器,在周末之前的星期五禁止开始新的循环,限制最大手数大小或者循环中交易的最大数量,或者其他一些内容。


实例 #3: "根据总利润关闭一组交易" 工具

使用可视化策略构建工具,用户不仅能够创建交易策略,也可以创建更简单的工具 - 交易小工具.

现在我们将创建一个小工具,它可以在一组交易达到指定的利润水平时关闭它们。

交易必须满足下面的要求:

  • 它不应当开启任何仓位.
  • 它应当跟踪账户中使用特定幻数(输入参数)的当前开启的仓位.
  • 当这些交易达到指定的总利润水平(输入参数)时, 必须关闭所有这些仓位。
  • 这个工具在关闭一组交易的时候必须生成提醒,指出总利润以及尝试关闭整个交易组的次数。

最后一点需求是因为并不是永远在第一次尝试关闭仓位的时候就会成功,这种情况的原因可能有所不同,最常见的是所请求的报价过期了 (requotes). 所关闭交易组中的仓位数量越多,就越有可能它们不会在第一次尝试的时候就都被关闭,特别是在动荡加剧的时候。

关闭一组交易的触发器将是这些仓位达到了给定的利润水平,所以,我们需要访问这组仓位和它们的参数。

使用指定的幻数(Input Parameter 元件)创建一个交易组(Trades Group 元件),得到其中交易的数量再把它与0做比较,确定是否至少有一个仓位需要监控。

交易组

取得交易组的当前总利润 (Trades Group Information 元件) 并把这个值与指定的平仓利润水平 (Input Parameter 元件)做比较。

交易组利润

现在我们可以使用 Compare 元件作为触发器来立即关闭整个交易组,但是我们会使用少许不同的方法来这样做。因为在实际应用中 EA 交易是在每个分时执行的 - 每个分时执行一次。而在真实交易中可能有以下情况,关闭所有交易的条件达到了,这个工具开始关闭它们,但是因为一些原因在这个分时只有这些交易的一部分能被关闭,有些还会保持开启,在下一个分时,工具将会再次检查条件,但是就可能无法再达成了,因为有些仓位在前一个分时已经被关闭,它们不再是交易组的一部分了。

解决方案是要在 Variable 元件中 "记住" 交易组达到条件的事实,EA 会在变量保持为 "true" 的时候在后面的分时中关闭所有交易,直到它们全部被成功关闭。当所有的交易被关闭之后,把条件重新置为关闭 (把变量值设为"false") 再等待下一个平仓的触发器。

仓位的关闭是使用Close Trades Group元件完成的。

关闭一个交易组


工具的交易逻辑已经完成,它已经有了全部功能了,现在我们要加上的就是记录尝试关闭交易组次数的功能,

为此,我们要再次使用 Variable 元件, 但是这一次它是作为计数器使用的。当交易组中没有开启的交易时,我们把它的数值重置为0,而当我们每次尝试关闭一组仓位的时候就把它的值增加1 (使用 Arithmetic 元件)。

除了这两个元件,我们还需要一个元件来把小数转换为整数 (Transformation), 因为我们在计数器中使用了整型变量,而 Arithmetic 元件返回的值是小数类型。如果我们使用小数类型的 Variable 元件,就可以不需要这个转换。

把元件加到图表中并且做好配置,显示如下:

尝试次数计数器

剩下的唯一事情就是生成消息文本,并且在关闭仓位的时刻做提醒了,消息文本可以使用 Combine String(组合字符串)元件来构成, 它可以把消息部分组成一个字符串。

MetaTrader5 标准提醒功能是使用Alert(提醒)元件来实现的。

提醒

让我们回顾一下这个例子中的另一个功能,每个设计图可能含有多个ends(结局) - 即设计图执行完毕而不触发任何操作后必须执行的一些行为,在这个设计图中,它是一个提醒以及交易组的关闭

如果您希望这些操作以某种顺序执行,例如,在关闭交易之前做提醒 - 您需要使用Arrange Ends(处理结局)选项。随后就会出现一个对话框,就像处理输入参数那样,您可以在那里上下移动元件来指定它们的执行顺序。

处理结局


我们的工具已经完全做好了,因为这个 EA 交易不开启任何订单,而只是一个交易助理,就不需要在策略测试器中测试它了。

交易图可以立即执行,甚至不必生成源代码和创建 EA 文件 (尽管可以这样做,这样制作好的 EA 可以运行于终端中的独立图表中)。如需实时运行交易图,只要按下 Start / Stop Executing 按钮。当点击了它时,设计图会按照 EA 文件在独立图标中载入的相同方式开始执行。这个选项可以用于同时执行多个简单工具,而不必为它们生成源代码并且不用在独立图表中运行它们的情况。

实时执行交易图


结论

本文包含了可视化策略构建工具 Mission Automate 的概览,通过使用例子,它展示了任何人怎样不通过编程就能创建交易机器人。

从市场上下载此应用程序并实际尝试它都是免费和简单的,它包含了5个制作好的、基于常用策略的 EA 交易。

对于 MetaTrader4Mission Automate Demo MT4

对于 MetaTrader5Mission Automate Demo MT5

我对这一项目的未来开发还有大的计划,所以有任何提高此程序的建议和留言,我都会非常感谢。

让我们使每个人都可以创造算法交易!

本文由MetaQuotes Ltd译自俄文
原文地址: https://www.mql5.com/ru/articles/4951

最近评论 | 前往讨论 (1)
mensz
mensz | 2 4月 2019 在 10:40

@mensz

Hello there!

Thank you very much for your dedication. I think that if you can add various "neural network" modules inside the software, it is more perfect to use neural networks to process indicator data and signals. In addition, you can specify the use of neural networks.

包含图形用户界面 (GUI) 的 EA 交易: 创建面板 (第一部分) 包含图形用户界面 (GUI) 的 EA 交易: 创建面板 (第一部分)
尽管很多交易者还是倾向于人工交易,但是很难完全避免一些重复性操作的自动化。这篇文章展示了一个实例,为人工交易开发一个多交易品种信号的 EA 交易。
社交交易。 可盈利的信号能否变得更好? 社交交易。 可盈利的信号能否变得更好?
大多数订阅者是通过优美的余额曲线和订阅用户数量来选择交易信号。 这就是为什么如今许多提供者只在乎漂亮的统计数据而非信号的真实质量,经常玩弄手数把戏并人为地将余额曲线整理到理想的外观。 本文论述了可靠性准则,以及提供者可用于提高其信号质量的方法。 展现特定信号历史的示例性分析,以及有助于提供者提升盈利并降低风险的方法。
如何分析图表中所选择信号的交易 如何分析图表中所选择信号的交易
交易信号服务正在突飞猛进地发展。 将我们的资金托付给信号提供者,我们希望尽量减少资金亏损的风险。 那么如何在这个交易信号的森林中解开拼图呢? 如何发现能赚取盈利的产品? 本文提出创建一种工具,可在品种图表中直观地分析交易信号的交易历史。
开发基于振荡器的之字折线 (ZigZag) 指标。 执行需求规范的示例 开发基于振荡器的之字折线 (ZigZag) 指标。 执行需求规范的示例
本文根据《订购指标时如何准备需求规范》一文中描述的规范样本之一展示之字折线 (ZigZag) 指标的开发。 该指标利用振荡器所定义的极值来构建。 它能够采用五种振荡器之一: WPR,CCI,Chaikin,RSI 或 Stochastic 振荡器。