MQL4和MQL5编程文章

在众多发表的文章中研究 MQL5语言编程交易策略 的多数由您—我们 MQL5.community的会员所作。文章以类别分组来帮助您迅速找到任何有关MQL5编程问题的答案:集成,测试,交易策略等等。

Follow our 新发表讨论它们在 MQL5.community论坛

轻松快捷开发 MetaTrader 程序的函数库(第二十部分):创建和存储程序资源

本文讨论如何将数据存储在程序的源代码之中,并从中创建音频和图形文件。 在开发应用程序时,我们经常需要音频和图像。 MQL 语言拥有运用此类数据的若干种方法。

使用单独模块构建智能交易系统

开发指标、智能交易系统和脚本时,开发人员往往需要创建大量与交易策略没有直接关系的各种代码片段。 在本文中,我们研究一种复用早前已创建的模块(例如尾随、过滤和调度代码、亦或其他)来搭建智能交易系统的方法。 我们将看到这种编程方式的益处。

轻松快捷开发 MetaTrader 程序的函数库(第十九部分):函数库消息类

在本文中,我们将研究显示文本的消息类。 目前,我们有众多的不同消息。 是时候重新编排它们的存储、俄/英语言翻译成其他语言、以及显示消息的方法。 此外,最好引入便利的方法来向函数库中添加新语言,并在它们之间快速切换。

开发轴心均值振荡器:一款新颖的累积移动平均线指标

本文介绍轴心均值振荡器(PMO),它是累积移动平均线(CMA)的一种实现,作为一款 MetaTrader 平台的交易指标。 特别是,我们首先引入数据轴心均值(PM)作为时间序列的常规化指数,该指数计算任意数据点位和 CMA 之间的分值。 然后,我们依据两个 PM 信号均值之间的差值构建 PMO。 报告还针对 EURUSD

轻松快捷开发 MetaTrader 程序的函数库(第十八部分):帐户与任意其他函数库对象之间的交互

本文将帐户对象的操作安置于任意函数库对象的新基准对象之上,改进了 CBaseObj 基准对象,并测试了设置跟踪参数,以及接收任意函数库对象事件。

轻松快捷开发 MetaTrader 程序的函数库(第十七部分):函数库对象之间的交互

在本文中,我们将完成所有函数库对象的基准对象开发,以便任何基于此函数库的对象都能够与用户进行交互。 例如,用户将能够设置开仓时可接受的点差大小,和预警价位,当点差达到该数值,或价格触及预警价位时,来自品种对象的事件将被一并发送到监听此信号的程序。

MQL5 酷宝书:利用自定义品种进行交易策略压力测试

本文研究一种利用自定义品种进行交易策略压力测试的方法。 为此目的,将创建一个自定义品种类。 此类用于接收源自第三方的报价数据,以及更改品种属性。 根据所完成操作的结果,我们将研究若干选项,并在这些选项下测试交易策略。

利用 curl 解析 HTML

本文论述利用第三方控件的简易 HTML 代码解析库。 特别是,它涵盖了诸多访问数据的可能性,甚至有些用往常的 GET 和 POST 请求都无法检索。 我们将选择一个页面不太大的网站,并尝试从该网站获取感兴趣的数据。

轻松快捷开发 MetaTrader 程序的函数库 (第十六部分) : 品种集合事件

在本文中,我们将为所有函数库的对象创建一个新的基类,在其所有衍生类中加入事件功能,并基于新的基类开发用来跟踪品种集合事件的类。 我们还将修改帐户和帐户事件类,以便开发新的基本对象功能。

轻松快捷开发 MetaTrader 程序的函数库(第十五部分):品种对象集合

在本文中,我们将研究基于上一篇文章中所开发的抽象品种对象来创建品种集合。 抽象品种的后代会阐明品种数据,并在程序中定义基本品种对象属性的可用性。 此类品种对象应按其隶属的分组关系加以区分。

解读经典和隐藏背离的新途径。 第二部分

本文针对各种指标的常规背离及其成效进行了严格查验。 此外,它还包含用于提升分析准确性的过滤选项,并提供非标准解决方案的功能描述。 结果就是,我们将创建一个解决技术任务的新工具。

优化管理(第二部分):创建按键对象和附加逻辑

这篇文章是之前发表的关于创建优化管理图形界面的延续,本文探讨了附加组件的逻辑,将为 MetaTrader 5 终端创建一个包装器:它将使附加组件通过C#作为一个托管进程运行。此外,本文还探讨了对配置文件和安装文件的操作。应用逻辑分为两部分:第一部分描述了按下特定按键后调用的方法,第二部分描述了优化启动和管理。

美林(Merrill)形态

在本文中,我们将研究美林形态的模型,并尝试评估它们与当前行情的相关性。 为此,我们将开发一种工具来测试形态,并将其模型应用在各种数据类型,例如收盘价、最高价和最低价,以及震荡指标。

轻松快捷开发 MetaTrader 程序的函数库(第十四部分):品种对象

在本文中,我们将创建品种对象类,该类将成为创建品种集合的基本对象。 该类可令我们获取必要品种的数据,以便进一步进行分析和比较。

轻松快捷开发 MetaTrader 程序的函数库(第十三部分):帐户对象事件

本文研究如何处理帐户事件,跟踪影响自动交易的重要帐户属性变化。 在开发帐户对象集合时,我们已在上一篇文章中实现了一些跟踪帐户事件的功能。

轻松快捷开发 MetaTrader 程序的函数库(第十二部分)。

上篇文章中,我们在函数库中为 MQL4 定义了平仓事件,并删除了若干未使用的订单属性。 在此,我们将研究创建 Account 对象,开发帐户对象的集合,并筹备跟踪帐户事件的功能。

开发跨平台网格 EA 交易(第三部分): 使用马丁格尔的基于修正的网格

在本文中,我们将尝试开发尽可能最好的基于网格的 EA 交易。像往常一样,这将是一个跨平台的EA,能够与 MetaTrader 4 和 MetaTrader 5一起工作。第一个 EA 已经足够好了,只是它在很长一段时间内不能盈利。第二个EA在几年之内可能有效,不幸的是,在最大回撤低于50%的条件下, 它每年无法产生超过50%的利润。

轻松快捷开发 MetaTrader 程序的函数库(第十一部分)。 与 MQL4 的兼容性 - 平仓事件

我们继续大型跨平台函数库的开发,简化 MetaTrader 5 和 MetaTrader 4 平台程序的开发。 在第十部分中,我们重启与 MQL4 函数库兼容性的工作,并定义了开仓和激活挂单的事件。 在本文中,我们将定义平仓事件,并剔除未使用的订单属性。

优化管理 (第一部分): 创建一个GUI(图形用户界面)

本文描述了为MetaTrader终端创建扩展的过程,所讨论的解决方案有助于通过在其他终端中运行优化来自动化优化过程。关于这个话题,我们将再写几篇文章。扩展是使用C#语言和设计模式开发的,它还展示了通过开发自定义模块扩展终端功能的能力,以及使用首选程序的功能创建自定义图形用户界面的能力。

轻松快捷开发 MetaTrader 程序的函数库(第十部分):与 MQL4 的兼容性 - 开仓和激活挂单的事件

在之前的文章中,我们已着手创建一个大型跨平台函数库,简化 MetaTrader 5 和 MetaTrader 4 平台程序的开发。 在第九部分中,我们开始改进 MQL4 的库类。 在此,我们将继续改进函数库,确保其与 MQL4 的完全兼容。

通过谷歌服务安排邮寄活动

交易者可能希望安排一次邮寄活动,以维持与其他交易者、订户、客户或朋友的业务关系。此外,可能需要发送屏幕截图、日志或报告。这些任务可能不是最经常出现的任务,但是拥有这样的特性显然是一个优势。本文讨论同时使用几个Google服务,在C#上开发适当的程序集,并将其与MQL工具集成。

攫取盈利至最后的点位

本文尝试阐述在算法交易领域中将理论与实践相结合。 有关创建交易系统的大多数讨论都与依据历史柱线和其上应用的各种指标有关联。 这是覆盖率最高的领域,因此我们不会再过多涉及。 柱线体现出非常人工的实体; 因此,我们将使用更接近原始数据的东西,即价格的即时报价。

开发一个跨平台的EA交易来根据风险设置止损和获利

在本文中,我们将创建一个EA交易,用于基于风险值自动进行入场手数的计算。此外,EA交易将能够以止损的比率来自动设置获利,也就是说,它可以根据任何选择的比率计算获利,例如3比1、4比1或任何其他选择的值。

轻松快捷开发 MetaTrader 程序的函数库(第九部分):与 MQL4 的兼容性 - 准备数据

在之前的文章中,我们已着手创建一个大型跨平台函数库,简化 MetaTrader 5 和 MetaTrader 4 平台程序的开发。 在第八部分中,我们实现了跟踪订单和持仓修改事件的类。 在此,我们将令其与 MQL4 完全兼容来,极大改进函数库。

轻松快捷开发 MetaTrader 程序的函数库(第八部分):订单和持仓修改事件

在之前的文章中,我们已着手创建一个大型跨平台函数库,简化 MetaTrader 5 和 MetaTrader 4 平台程序的开发。 在第七部分中,我们加入了 StopLimit 订单激活跟踪,以及准备了其它涉及订单和持仓事件的跟踪功能。 在本文中,我们将开发用于跟踪订单和持仓修改事件的类。

开发跨平台网格EA(第二部分):在趋势方向上的基于范围的网格

在本文中,我们将开发一个网格EA,用于在一个范围内的趋势方向上进行交易。这样,此EA主要适用于外汇和大宗商品市场,根据测试,我们的网格EA 自2018年以来显示盈利,不幸的是,这在2014-2018年期间并非如此。

通过差异化和熵值分析来探索市场"记忆"

分数型差分的应用范围足够广泛。 例如,差分序列通常作为机器学习算法的输入。 问题是,必须在机器学习模型可识别的前提下,显示相应历史阶段的新数据。 在本文中,我们将研究时间序列差分的原始方法。 本文还包含基于所接收差分序列的交易系统自我优化示例。

价格速度测量方法

市场研究和分析有多种不同的方法,主要是技术分析和基础分析。在技术分析中,交易者收集、处理和分析与市场有关的数字数据和参数,包括价格、数量等。在基本面分析中,交易者分析直接或间接影响市场的事件和新闻。本文研究了价格-速度测量方法,并在此基础上研究了交易策略。

评估分形指数和Hurst指数预测金融时间序列的能力

有关金融数据分形行为的研究表明,在经济时间序列看似混乱的行为背后,存在着参与者集体行为的隐性稳定机制。这些机制可以导致交易所出现价格动态,从而定义和描述价格序列的具体属性。应用于交易中,能够有效、可靠地估计尺度和时间框架内的分形参数的指标,具有一定的实用价值。

轻松快捷开发 MetaTrader 程序的函数库(第七部分): StopLimit 订单激活事件,为修改订单和持仓事件准备功能

在之前的文章中,我们已着手创建一个大型跨平台函数库,简化了 MetaTrader 5 和 MetaTrader 4 平台程序的开发。 在第六部分中,我们训导函数在净持结算账户上工作。 在此,我们将实现跟踪 StopLimit 订单激活,并准备跟踪修改订单和持仓事件的功能。

轻松快捷开发 MetaTrader 程序的函数库(第六部分):净持帐户事件

在之前的文章中,我们已着手创建一个大型跨平台函数库,简化 MetaTrader 5 和 MetaTrader 4 平台程序的开发。 在本系列文章的第五部分中,我们创建了交易事件类和事件集合,从中将事件发送到 Engine 函数库的基础对象和控制程序图表。 在这部分中,我们将让函数工作在净结算账户上。

在交易中应用 OLAP(第 2 部分):可视化交互式多维数据分析的结果

在本文中,我们会探讨为一个MQL程序创建一个交互式图形界面,该程序设计用于使用OLAP技术处理帐户历史和交易报告。为了获得视觉效果,我们将使用最大化和可伸缩的窗口、自适应布局的控件和用于显示图表的新控件。为了提供可视化功能,我们将实现一个GUI,其中沿着坐标轴选择变量,以及选择聚合函数、图表类型和排序选项。

在交易中应用 OLAP(第 1 部分):在线分析多维数据

本文论述如何创建多维数据(OLAP - 在线分析处理)的在线分析框架,以及如何在 MQL 中实现此框架,还有利用交易帐户历史数据在 MetaTrader 环境中应用此类分析的示例。

基于 .Net 框架和 C# 开发图形界面(第二部分):另外的图形元素

本文是之前发表的“基于.NET框架和C为EA交易和指标开发图形界面”的后续部分,它引入了新的图形元素来创建图形界面。

轻松快捷开发 MetaTrader 程序的函数库(第五部分):交易事件集合类,向程序发送事件

在之前的文章中,我们已着手创建一个大型跨平台函数库,简化 MetaTrader 5 和 MetaTrader 4 平台上的程序开发。 在第四部分中,我们测试了在帐户上跟踪交易事件。 在本文中,我们将开发交易事件类,并将它们置于事件集合当中。 从那里,它们将被发送到 Engine (引擎)库的基准对象,并控制程序图表。

利用 MQL5 和 MQL4 实现的选择和导航工具: 把数据添加到图表中

在本文中,我们将继续扩展实用程序的功能。这一次,我们将增加显示简化交易的数据的能力,特别是前一天的最高、最低价位,全年的最高、最低价位,开盘时间等。

轻松快捷开发 MetaTrader 程序的函数库(第四部分):交易事件

在之前的文章中,我们已着手创建一个大型跨平台函数库,简化 MetaTrader 5 和 MetaTrader 4 平台程序的开发。 我们已拥有历史订单和成交集合,在场订单和仓位的集合,以及便捷选择和订单排序的类。 在这一部分中,我们将继续开发基础对象,并教导引擎(Engine)函数库跟踪帐户上的交易事件。

如何基于HTML和CSV报表可视化多币种交易历史

自推出以来,MetaTrader 5提供了多货币测试选项,也许交易者经常使用这个功能。然而,这种功能并不是万能的。本文介绍了几种基于HTML和CSV交易历史报告的图表图形绘制程序,多货币交易可以在多个子窗口以及使用动态切换命令的一个窗口中并行分析。

研究烛条分析技术(第四部分):形态分析器的更新和补充

本文论述了形态分析器(Pattern Analyzer)应用程序的新版本。 此版本修复了已发现错误并提供了一些新功能,还改进了用户界面。 在新版本的开发过程中参考了上一篇文章中的意见和建议。 最终的应用程序会在本文中进行说明。

开发一个跨平台网格 EA

在本文中,我们将学习如何创建在 MetaTrader 4 和 MetaTrader 5 中都能工作的 EA 交易。为此,我们将开发一个 EA 构建的订单网格,网格是指将多个限价订单置于当前价格之上,同时将相同数量的限价订单置于当前价格之下的 EA 交易。