如何开始学习MQL5 - 页 8

 

一个使用命名管道在 MetaTrader 5 客户端之间进行通信的无 DLL 解决方案



有时,我想知道在 MetaTrader 5 客户端之间进行通信的几种可能方式。我的目标是使用价格变动指标并且在其中一个客户端上显示来自不同报价者的价格变动。

自然的解决方案是使用硬盘中的单独文件。一个客户端将数据写入到文件,另一个客户端会读取该文件。此方法尽管与发送单一消息有关,但是似乎不是针对流式报价的最有效方式。

之后,我偶然遇到了 Alexander 所写的一篇关于如何使用 WCF 服务将报价导出到 .NET 应用程序的好文章,在我即将到此为止的时候,又遇到 Sergeev 所写的另一篇文章

两篇文章都接近我想要的,但是我需要一个能够被不同客户端(一个担当服务器,另一个担当客户端)使用的无 DLL 解决方案。在搜索 Web 的时候,我找到一条建议使用命名管道进行通信的说明,我仔细阅读了针对使用管道进行进程间通信的 MSDN 规范

我发现命名管道支持在同一台计算机上或通过内部网在不同的计算机上进行的通信,因此我决定采用这种方法。

本文介绍了命名管道通信并说明了设计 CNamedPipes 类的过程。它还包含在 MetaTrader 5 客户端之间测试价格变动指标流以及整体系统吞吐能力。

 

一个用于通过 Google Chart API 构建图表的库

Google Chart 允许创建 11 类不同的图表。包括:

  1. 线条图
  2. 柱形图
  3. 散点图
  4. 雷达图
  5. 烛形图
  6. 维恩图
  7. QR 码
  8. 地图
  9. 公式
  10. 图形图
  11. 饼图



 

生长型神经气:MQL5 中的实施


上世纪 90 年代,人工神经网络研究人员得出了一个结论:有必要为那些缺少网络层固定拓扑特征的运算机制,开发一个新的类。也就是说,人工神经在特征空间内的数量和布置并不会事先指定,而是在学习此类模型的过程中、根据输入数据的特性来计算,独立调节也与其适应。

之所以有这种想法,就是因为出现了大量输入参数的压缩和向量量化受阻的实际问题,比如语音与图像识别、抽象范式的分类与识别等。

因为当时 自组织映射赫布型学习已为人所知(尤其是生成网络拓扑 - 即在神经元之间创建一系列连接,构成一个“框架”层 - 的算法),而且 ”软“竞争学习的方法亦已算出(在此类流程中,权重不仅适应”赢家“神经元,还适用其”近邻“神经元),合理的步骤是将上述方法结合起来,而这已由德国科学家 Bernd Fritzke 于 1995 年完成,从而创建了如今的流行算法 “生长型神经气”(GNG)。

此方法被证实非常成功,所以出现了一系列由其衍生的修改版本;其中之一就是监督式学习的 改编适应版本 (Supervised-GNG)。据作者称:与径向基函数网络相比,S-GNG 因其在难以分类的输入空间领域中的优化拓扑能力,而显示出强大得多的数据分类效率。勿庸置疑,GNG 要优于 "K-means" 聚类。

值得注意的是,2001 年,Fritzke 在接受德国证券交易所 (Deutsche Bӧrse) 的工作邀请之后,结束了自己在鲁尔大学(德国波鸿)的科研生涯。本文中之所以选择他的算法作为基础,这也是一个原因。

 

MQL5 向导:无需编程即可创建 EA 交易程序


当您创建自动化交易系统时,有必要编写分析市场状况、生成交易信号的算法,以及追踪您的敞口仓位、资金管理与风险管理系统的算法。

模块代码编写完毕后,最难的环节就是把各个部分组合起来,并对交易机器人源代码实施调试。模块交互的架构是这里当之无愧的主角:如其构建不良,则大多数的时间都会花在查找和纠正错误方面;而且,如您更换任何模块的算法,都会造成整个源代码的重写。

在 MQL5 中,利用面向对象方法会明显方便自动化交易系统的编写和测试。

MetaQuotes Software Corp. 已经开发出了实施交易策略的类。现在,通过在 MetaEditor 中直接选择必要的交易信号(当前为 20 个)、追踪 (4) 和资金管理 (5) 模块,我们可以自动生成“EA 交易”代码。通过上述模块的组合,您就可以得到众多种类的即用型交易系统变体。

您还可以搭配上述任何模块的实现来使用自己的类。自行创建,或是通过任务服务订购。

本文中我们要研究的,是利用 MQL5 向导自动生成“EA 交易”源代码。而且无需任何编程!
 

利用标准库类创建您自己的“市场报价”



我们任务的主要目标在于:开发一款用于 MetaTrader 5 客户端的图表任意文本信息输出的用户友好且可扩展的工具。比如说,“EA 交易”的当前设置,或是指定时间间隔内其运行结果(作为一个表呈现),交易者使用的价格值或指标值表,或是“EA 交易”的交易日志。在 EA 或使用此库的指标运行期间,所有此类信息都可以动态显示于图表上方。

作为开发此库的基础,有一系列的 MetaTrader 5 客户端标准库类被采用。我们首先要研究这些类,并对其实施相应的扩展,以完成我们的任务。

 

建立一个频谱分析程序



本文旨在让读者熟悉使用 MQL5 语言图形对象的一种可能变量。它会对一个利用图形对象管理简单频谱分析程序的控制面板的实施指标进行分析。

本文随附三份文件:

  1. SpecAnalyzer.mq5 – 本文中讲述的指标。
  2. SpecAnalyzer.mqh – SpecAnalyzer.mq5 的包含文件。
  3. SAInpData.mq5 – 用于组织外部数据访问的指标。

为 了正常加载 SpecAnalyzer 指标,您要将全部三个文件放到客户端 \MQL5\Indicators 文件夹中。之后,您还要编译 SpecAnalyzer.mq5 和 SAInpData.mq5 文件。该指标设计于主图表窗口中加载。一旦指标被加载,它就会更改此窗口显示的参数,而当其被移除时,窗口中的所有图形对象也被被删除。正因如此,您要在 其被创建的专用独立窗口中加载该指标,以避免终端现有窗口显示模式的意外变更。

您要认清一点:本文中并不包含该指标的完整源代码,阅读本文时,建议您打开随附文件中的代码。

本文所述指标无意充当即用型应用程序。它只是使用该语言图形对象的一个示例而已。而有意者可自行升级和优化文中所示之代码。

 
newdigital:

建立一个频谱分析程序

本文旨在让读者熟悉使用 MQL5 语言图形对象的一种可能变量。它会对一个利用图形对象管理简单频谱分析程序的控制面板的实施指标进行分析。

本文随附三份文件:

  1. SpecAnalyzer.mq5 – 本文中讲述的指标。
  2. SpecAnalyzer.mqh – SpecAnalyzer.mq5 的包含文件。
  3. SAInpData.mq5 – 用于组织外部数据访问的指标。

为了正常加载 SpecAnalyzer 指标,您要将全部三个文件放到客户端 \MQL5\Indicators 文件夹中。之后,您还要编译 SpecAnalyzer.mq5 和 SAInpData.mq5 文件。该指标设计于主图表窗口中加载。一旦指标被加载,它就会更改此窗口显示的参数,而当其被移除时,窗口中的所有图形对象也被被删除。正因如此,您要在其被创建的专用独立窗口中加载该指标,以避免终端现有窗口显示模式的意外变更。

您要认清一点:本文中并不包含该指标的完整源代码,阅读本文时,建议您打开随附文件中的代码。

本文所述指标无意充当即用型应用程序。它只是使用该语言图形对象的一个示例而已。而有意者可自行升级和优化文中所示之代码。

看起来有些复杂哦。
 

将指标从 MQL4 迁移到 MQL5


亲爱的读者们,你们好!

在今天的文章中,我将向你们介绍一个将简单价格计算从 MQL4 迁移到 MQL5 的算法。在快速查看 MQL5 和 MQL4 之间的差异之后,我添加了函数库 mql4_2_mql5.mqh;在读完本文之后,我们将学会如何使用它。

 

针对市场分析的数据库的具体应用




处理数据成为现代软件的主要任务 - 独立应用程序和网络应用程序都是如此。为解决此问题而创建了专业软件。这些软件被称为数据库管理系统 (DBMS),能够针对它们的计算机存储和处理对数据进行构建、系统化和组织。这些软件是所有领域的信息活动的基础 - 从制造到金融再到电信。 

对于交易,大多数分析师并不在他们的工作中使用数据库。但是对于一些任务,必须使用此类解决方案。 

本文介绍此类任务中的一个:保存数据以及从数据库中加载数据的价格变动指标。

 

例解 MQL5 中的面向对象编程:处理警告和错误代码


在我们开始开发之前,让我们先熟悉将在本文中使用的面向对象编程 (OOP) 的一些特点。 

当然,我们将使用结构和类。这些是面向对象的语言的基础。结构是什么?类是什么?它们有何区别?

结构是一种允许包含一组不同类型(void 除外)的变量和函数的构造。

与结构一样也是一组数据字段。但类是一种更加复杂和“灵活”的构造。类是 OOP 的基本概念。说明文档说明了类和结构的差异。我将重复如下:

  • 在声明中使用关键字 class;
  • 默认情况下,所有类成员的访问说明符是私有的,除非另有指定。默认情况下,结构的数据成员是公共访问类型,除非另有指定;
  • 类对象始终有一个虚拟函数表,即使在类中没有声明虚拟函数。结构不能有虚拟函数;
  • 运算符 new 可应用到类对象,但是此运算符不能应用到结构;
  • 类只能从类继承,结构只能从结构继承。