如何开始学习MQL5 - 页 4

 

MQL5 Cookbook: 获取仓位属性

前一篇文章:"MQL5 Cookbook: 使用不同的打印模式" 向我们展示了如何快速写一个脚本来使用三种不同模式打印所需的信息,现在让我们创建一个脚本来向用户显示所有的仓位属性。

我们需要允许用户从脚本的外部参数中选择对应的选项,如下实现:或者只取得一个(当前)交易品种的仓位属性,或者一个接一个地遍历所有交易品种的所有持仓。这一次,我们会在对话框中查看所需的信息,这非常方便,你们中的一些人可能会觉得这种方法更为有用。

 

MQL5 Cookbook: 自定义信息面板上的仓位属性

这一次我们创建一个简单的EA交易,它可以取得当前交易品种的仓位属性并且在人工交易的时候在自定义信息面板上显示它们。信息面板将使用图形对象创建,显示的信息在每当有订单时都会刷新,这将比系列中的前一篇文章("MQL5 Cookbook: 获取仓位属性")中每次必须人工运行脚本要方便得多。

 

自定义图形控件。第一部分:创建简单控件



MQL5 语言向开发人员提供各种各样以程序方式控制的图形对象:一个按钮、一个文本标签、一个编辑字段、一个位图标签 、不同的图形分析工具 。


MetaTrader 5 客户端中共有四十多种图形对象。所有这些对象都可以单独使用,但是更常见的是在一个相互连接的对象链中使用它们。例如,当使用一个编辑字段 (OBJ_EDIT) 时,通常还会使用一个位图标签 (OBJ_LABEL), 以指明该编辑字段的功能。

使用编辑字段时,通常您不得不检查用户输入的数据是否正确,还要提供使用句点和逗号作为小数分隔符的可能性。

使用程序化数据输出时,您应对数据进行格式化。例如,您应删除不必要的零。因此,拥有一个包含编辑字段、位图标签和某些其他功能特征的单一对象会更加简单一些。

 

您决定学习现代 MQL5 交易策略编程语言的原因可能多种多样,但不管怎样,我们都热烈欢迎!有经验的用户可以随心所欲地徜徉浏览此语言文档,以及于此提供的各种文章和服务。但如 果您是首次接触 MetaTrader 5 客户端,刚开始可能会对许多事物觉得不习惯,晕头转向。

那么,通过掌握 MQL5,您能得到哪些好处呢?可能您已经决定要学习一门当代的 OOP (面向对象编程)语言。学成 MQL5 后,您就可以轻松掌握其它的高级语言,比如 C++、С#、Java 等。当然,这并不是说它们非常相似,而是其基础都大同小异。

或者,您已经掌握了上述某种语言,而且有制作自己的交易机器人或信息分析系统、以供金融市场中使用的想法?这种情况下,您就可以轻松掌握专门为此创建的专用 MQL5 语言。

又或者,您已经懂得 MQL4 语言,且活学活用于制作各种交易机器人,并针对备受欢迎的 MetaTrader 4 交易终端制作指标?那么,您只需要驾轻就熟地查看新 MQL5 语言的全部阵容,以及新 MetaEditor 5 开发环境的所有优点。

学习 MQL5 的理由可能多种多样,而我们会为您提供一些小贴士,告诉您从哪里着手以及重点关注的内容。那么,我们开始吧。


MQL5 快速上手
 

MQL5 中的交易操作 - 很简单


几乎所有的交易者都是为了赚钱而进入市场,但也有一些交易者却是享受交易过程的本身。然而,并不是只有手动交易才能给您兴奋的体验。自动化交易系统开发也可以让您欲罢不能。创建一个交易机器人,可以像读一本出色的悬疑小说一样有趣。

开发某种交易算法的过程中,我们必须要处理大量的技术问题,其中就包括几个最重要的问题:

  1. 交易什么?
  2. 何时交易?
  3. 如何交易?

我们需要回答第一个问题以选择最适合的交易品种。我们的选择可能会受到多种因素的影响,其中包括将我们的市场交易系统自动化的能力。第二个问题涉及 对清楚指明交易方向以及进场与出场点的交易规则的详尽阐述。第三个问题看起来相对简单:如何利用某种明确的编程语言买入和卖出?

本文中,我们会研究如何利用采用 MQL5 语言的算法交易实现交易操作。
 

初学者快速入门或简明指南


亲爱的读者,您好!本文中,我们会试着为您解释并向您呈现可以如何轻松快速地掌握创建“EA 交易”、使用指标等等原则的要领。本文面向初学者,所以不会包含任何难懂或晦涩的示例。因此,对于那些已经清楚如何编写“EA 交易”程序的人来说,本文可能没有那么多的启示感悟,信息量也不是很充分。

 

MQL5 Cookbook: 在EA交易中使用指标来设置交易条件


在本文中,我们将增强EA交易,使用指标值来检查建仓条件。为了增加点乐趣,我们会在外部参数中创建一个下拉列表,可以从三个交易指标中选择一个。
这里提醒一下:我们会继续修改MQL5 Cookbook系列中前文里的EA交易,最新版本的EA交易可以从叫做"MQL5 Cookbook: 交易历史和取得仓位属性的函数库"一文中下载。

另外,本文中我们会特别创建一个函数来检查交易操作是否能够进行,建仓函数将被修改,会让EA交易决定交易模式(即时执行 和 市场执行)。

因为EA交易的代码在前面的文章中经过增强和提高以后已经超过了1500行,每个新功能增加以后都会变得越来越不方便,所以,逻辑上的解决方案是把它分成几类,分别作为独立的库文件。现在,目标已经设定,让我们开始吧。

 

订单策略。多目标 EA 交易


任何交易策略的首要核心元素,就是价格分析以及作为建仓基础的技术指标分析。我们称其为市场分析,即市场中发生的所有事情以及我们无法控制的事情。

此外,策略可能还需要另外一种类型的分析。我们称其为当前交易状况分析。 它包括交易仓位状态分析、以及任何可用/缺失的挂单分析(如果用于一个策略之中)。这些分析的结果,可以帮助我们决定是否应该对仓位或订单采取某些动作, 比如平仓,移动止损,下挂单或删除挂单等。换言之,这种分析会根据我们(或一个EA交易)所创建的情况以及所使用的策略规则,对我们的市场行为、动作进行 研究。

从某种程度上来说,人们通常所说的“跟踪止损”,被认为是交易策略中的第二种元素类型。让我们来看看以下的分析:如果有一个持仓,其利润高于设定值,但没有设置止损,或者设置的止损远远高于当前的价格,就应该移动止损。

跟踪止损是一个非常简单的功能,而且效果很好。此外,它还是一种完全不同的交易策略因素,是一个仓位管理函数。因此,一个交易策略可以包括三种类型的要素:

  1. 以其为基础的市场分析和动作。

  2. 以其为基础的交易情况和动作分析。

  3. 仓位管理。

本文主要介绍一些主动使用挂单的策略(我们称其为订单策略)、用来描述这些策略的一种元语言、以及如何使用一种以这些描述为基础运行的多目标工具(EA 交易)。

 

MQL5 Cookbook: 基于三重滤网策略开发交易系统框架



在寻找或者开发交易系统的过程中,很多交易者肯定听说过由Alexander Elder博士提出的三重滤网策略。在互联网上很多人认为这个策略不佳,然而,也有很多人认为它可以帮人获利,您不一定要相信任何一种观点,每件事都应该 做亲手验证,如果您学习编程,您就可以使用回溯测试来亲手检验这个交易策略的效果了。

在本文中,我们将基于三重滤网(Triple Screen)策略,使用MQL5开发一个交易系统的框架。EA交易不会从头开始开发,我们会简单地修改前一篇文章,即"MQL5 Cookbook: 在EA交易中使用指标设置交易条件"中的程序。所以这篇文章也会向您展示如何简单地修改已经完成的程序的模式。

前文中的EA交易已经有了很多功能,它可以启用/禁用止损/获利和跟踪止损,仓位交易量增加以及在相反信号下做仓位反转,所有所需的函数都已经做好了。所以我们的任务就集中在修改外部参数列表,增加额外的选项以及修改一些已有函数上。

为了说明我们的目标, 我们将使用移动平均指标在三个时间范围上产生信号,晚些时候,当我们继续在开发框架上做实验时,您将只要少量修改代码即可使用任何其他指标。我们也会实现 在每个滤网上设置时间范围,如果指标周期参数为0, 则说明不使用对应的滤网,换句话说,系统可以设置为只有一个或两个时间范围。

在您开始之前,请把来自前文的EA交易文件所在文件夹复制一份并重新命名。

 

使用信号指标的简单交易系统

信号指标是指明入市出市时机的简单探测器。如果当前柱有一个入市信号,则交易品种图表上会出现相应的标签。而此标签之后可用作执行某交易的一个条件。

此类的指标纷繁复杂,但基于此类指标的原创交易系统的本质精髓却根本没有变化。因此,以最简单且通用的形式来实现,是个很好的想法。如此一来,在使用任何无重大变动的类似指标时,就能够更进一步地使用已获得的结果。

典型信号指标示例

典型信号趋势指标示例
原因: