MQL5 编程示例的文章

icon

访问海量文章以及代码实例集合,演示如何使用 MQL5 语言 为 MetaTrader 平台创建指标和交易机器人。源代码已附加在文章之中,因此您可以在 MetaEditor 中打开并运行它们,看看应用程序如何工作。

这些文章对那些刚开始探索自动交易的人,以及具有编程经验的职业交易员都极其有用。它们的特色不仅是例子,而且也蕴含着新的想法。

添加一个新的文章
最近 | 最佳
交易机器人的原型
交易机器人的原型

交易机器人的原型

本文是对创建算法的原则以及交易系统的元素的总结和系统化。本文讨论EA 交易算法的设计。我们将以CExpertAdvisor类作为示例进行探讨,该类可用于轻松快捷地开发交易系统。
探索新功能:MQL5 的自定义指标
探索新功能:MQL5 的自定义指标

探索新功能:MQL5 的自定义指标

在这里,我无法一一列举新终端和新编程语言的所有新的可能性和功能。这数不胜数,而且部分创新点也需要以单独的章节来进行详细探讨。同样,本章节也不会出现以面向对象编程语言写就的代码。这部分内容十分重要,不能简单地附于其他内容之后作为补充优点呈现给开发人员。在本文中,我们将会探讨指标,以及相比 MQL4 指标的结构、图形、类型和编程细节。希望无论是初学者还是经验丰富的开发人员均能从本文中获益,也许部分读者还会有自己新的发现。
一个为莫斯科交易所期货开发的点差策略实例
一个为莫斯科交易所期货开发的点差策略实例

一个为莫斯科交易所期货开发的点差策略实例

MetaTrader 5 可以开发和测试同时交易多种金融资产的交易机器人。其内建的策略测试器能够自动从经纪商的服务器中下载所需的订单时刻历史,并会考虑到账户的合约规范,所以开发人员不用做任何人工工作。这可以使交易环境条件的重建能够简单和可靠,包括乃至不同交易品种中订单来临之间毫秒级的间隔。在本文中,我们将演示在两种莫斯科交易所期货上开发和测试一种点差策略。
开发基于振荡器的之字折线 (ZigZag) 指标。 执行需求规范的示例
开发基于振荡器的之字折线 (ZigZag) 指标。 执行需求规范的示例

开发基于振荡器的之字折线 (ZigZag) 指标。 执行需求规范的示例

本文根据《订购指标时如何准备需求规范》一文中描述的规范样本之一展示之字折线 (ZigZag) 指标的开发。 该指标利用振荡器所定义的极值来构建。 它能够采用五种振荡器之一: WPR,CCI,Chaikin,RSI 或 Stochastic 振荡器。
图形界面 X: 高级列表和表格管理。代码优化 (集成构建 7)
图形界面 X: 高级列表和表格管理。代码优化 (集成构建 7)

图形界面 X: 高级列表和表格管理。代码优化 (集成构建 7)

函数库的代码需要进行优化: 它应该更规范化, 这样可以 — 更具可读性并易于理解学习。此外, 我们将继续开发之前创建的控件: 列表, 表格和滚动条。
利用 CCanvas 的自定义指标和信息图
利用 CCanvas 的自定义指标和信息图

利用 CCanvas 的自定义指标和信息图

本文研究结构更加复杂实现的新型指标。它还描述了如何开发伪 3D 指标类型和动态信息图。
OpenCL:并行世界的桥梁
OpenCL:并行世界的桥梁

OpenCL:并行世界的桥梁

2012 年 1 月末,从事 MetaTrader 5 开发业务的软件开发公司宣布 MQL5 可向 OpenCL 提供原生支持。本文通过一个示例说明了 MQL5 环境下 OpenCL 的编程基础知识,并列举了几个示例,讲述了为提高运行速度所做的朴素优化。
preview
如何从算法交易中赚取$1,000,000?使用MQL5.com服务!

如何从算法交易中赚取$1,000,000?使用MQL5.com服务!

所有交易者都以赚取第一个百万美元为目标来访问市场。如何在没有过多风险和启动预算的情况下实现这个目标?MQL5服务为来自世界各地的开发人员和交易者提供了这样的机会。
MQL5 对决 QLUA - 为什么在 MQL5 中交易操作速度快达 28 倍?
MQL5 对决 QLUA - 为什么在 MQL5 中交易操作速度快达 28 倍?

MQL5 对决 QLUA - 为什么在 MQL5 中交易操作速度快达 28 倍?

您可曾想过您的订单是如何迅速传递到交易所, 它的执行速度如何, 而您的终端需要多久才能收到操作结果?我们已经准备好一场交易操作执行速度的比对, 因为从未有人测量过使用 MQL5 和 QLUA 应用时的这些数值。
MQL5 编程基础: 终端中的全局变量
MQL5 编程基础: 终端中的全局变量

MQL5 编程基础: 终端中的全局变量

终端中的全局变量为开发复杂而可靠的EA交易提供了一种方便的工具,如果您掌握了全局变量,您就会发现在使用MQL5开发EA交易的时候它们是必不可少的。
如何交换数据:10 分钟为 MQL5 创建 DLL
如何交换数据:10 分钟为 MQL5 创建 DLL

如何交换数据:10 分钟为 MQL5 创建 DLL

现在很多开发人员不知道如何编写简单的 DLL,而这是不同系统绑定的特殊特性。我将通过多个示例,展示在 10 分钟内创建简单 DLL 的整个过程,并讨论我们绑定实施的一些技术细节。我将给出 Visual Studio 中的 DLL 创建的分步过程,以及交换不同变量类型的示例(数字、数组、字符串等)。此外,我还将说明在自定义 DLL 中如何使您的客户端免于崩溃。
轻松快捷开发 MetaTrader 程序的函数库(第八部分):订单和持仓修改事件
轻松快捷开发 MetaTrader 程序的函数库(第八部分):订单和持仓修改事件

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

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

EA 遥控方法

交易机器人的主要优势在于能够在远程 VPS 服务器上每天 24 小时不间断工作。 但有时候有必要干预它们的工作,而此刻可能无法直接访问服务器。 是否可以遥控管理 EA? 本文提出了一种通过外部命令控制 EA 的选项。
Elder-Ray (多头力度和空头力度)
Elder-Ray (多头力度和空头力度)

Elder-Ray (多头力度和空头力度)

本文详述了基于多头力度(Bulls Power),空头力度(Bears Power)和均线指标(EMA - 指数平均)的 Elder-Ray 交易系统。 Alexander Elder 在他的著作“为生活而交易”中描述了这个系统。
图形界面 V: 列表视图元件 (第二章)
图形界面 V: 列表视图元件 (第二章)

图形界面 V: 列表视图元件 (第二章)

在前一章中,我们开发了用于创建垂直和水平滚动条的类。在本章中,我们将应用它们,我们将开发一个用于创建列表视图元件的类,它的一个组成部分将是一个垂直滚动条。
图形界面III:简单与多功能按钮(第一章)
图形界面III:简单与多功能按钮(第一章)

图形界面III:简单与多功能按钮(第一章)

让我们探讨按钮控件。我们将讨论几个用于创建简单按钮,扩展功能按钮(图标按钮和分割按钮)以及关联按钮(按钮组和单选按钮)的类的实例。另外,我们还将在已有的类中增加一些内容以扩展它们的功能。
价格直方图(市场概况)及其在 MQL5 中的实施
价格直方图(市场概况)及其在 MQL5 中的实施

价格直方图(市场概况)及其在 MQL5 中的实施

“市场概况”由真正才华横溢的思想家 Peter Steidlmayer 所提出。他建议使用有关“水平”和“垂直”市场动态信息的替代表示法,从而给出一套完全不同的模型。他认为存在市场深层次的摆动或称之为平衡和失衡周期的基本模式。在本文中,我将会探讨价格直方图(市场概况的一种简化模型)以及它在 MQL5 中的实施。
通用智能交易系统:事件模型和交易策略原型(第二章)
通用智能交易系统:事件模型和交易策略原型(第二章)

通用智能交易系统:事件模型和交易策略原型(第二章)

本文是通用智能交易模型系列文章的又一篇。这一部分详细介绍了基于数据集中处理的原始事件模型,并考虑了交易引擎CStrategy基类的结构。
ZigZag (之字折线) 的力量(第二部分)。 接收、处理和显示数据的示例
ZigZag (之字折线) 的力量(第二部分)。 接收、处理和显示数据的示例

ZigZag (之字折线) 的力量(第二部分)。 接收、处理和显示数据的示例

在本文的第一部分当中,我曾描述过一个修订的 ZigZag (之字折线) 指标和一个用于接收该类型指标数据的类。 在此,我将展示如何基于这些工具开发指标,并编写一款根据 ZigZag 指标形成的信号进行交易的 EA 来测试。 作为补充,本文将介绍一套开发图形用户界面的新版 EasyAndFast 函数库。
如何在另一指标的基础上编写一个指标
如何在另一指标的基础上编写一个指标

如何在另一指标的基础上编写一个指标

在 MQL5 中,您既可以从头编写一个指标,亦可根据客户端内置或自定义的另一现有指标来创建。而在这里,您也有两种方式 - 通过向其添加新的计算和图形风格来改善某个指标,或是通过 iCustom() 或 IndicatorCreate() 函数使用客户端内置或自定义的某个指标。
使用 MQL5 绘制阻力和支撑级别
使用 MQL5 绘制阻力和支撑级别

使用 MQL5 绘制阻力和支撑级别

本文介绍一种查找四个极点并在此基础上绘制支撑和阻力级别的方法。为了在当前货币对的图表上查找极点, 使用 RSI 指标。作为例子, 我们提供了一款指标的代码显示支撑和阻力级别。
图形界面 X: 标准图表控件 (集成编译 4)
图形界面 X: 标准图表控件 (集成编译 4)

图形界面 X: 标准图表控件 (集成编译 4)

这一次我们将研究标准图表控件。它可以创建具有同步水平滚动功能的子图表数组。此外, 我们将继续优化库代码以降低 CPU 负载。
创建多币种多系统 EA 交易
创建多币种多系统 EA 交易

创建多币种多系统 EA 交易

本文介绍了 EA 交易结构,它可实现多交易品种交易,并同时使用多个交易系统。如果你已经确认了所有 EA 交易的最佳输入参数,并分别得到很好的回溯测试结果,那么思考一下:如果结合自己的所有策略同时测试所有 EA,你会得到什么结果?
图形界面 I:控件构成(第二章)
图形界面 I:控件构成(第二章)

图形界面 I:控件构成(第二章)

在本文中我们将创建第一个图形界面的主元素 — 控件的一个窗体。多个控件可以以任何组合被附加到此窗体的任何地方。
preview
神经网络在交易中的实际应用。 是时候进行实践了

神经网络在交易中的实际应用。 是时候进行实践了

本文提供了在 Matlab 平台上实际运用神经网络模块的讲述和指南。 它还涵盖了运用神经网络模块创建交易系统的主要方面。 为了能够在一篇文章中厘清复杂内容,我必须对其进行修改,从而在一个程序中组合若干个神经网络模块函数。
直方图形式的统计分布, 无需指标缓冲区和数组
直方图形式的统计分布, 无需指标缓冲区和数组

直方图形式的统计分布, 无需指标缓冲区和数组

本文讨论当绘制市场条件的统计分布直方图时利用图形存储器的可能性, 而无需指标缓冲区和数组。描述了样本直方图的细节, 并展示了 MQL5 图形对象的 "隐藏" 功能。
MQL5 酷宝典 - 创建的环形缓存用于快速计算滑动窗口中的指标
MQL5 酷宝典 - 创建的环形缓存用于快速计算滑动窗口中的指标

MQL5 酷宝典 - 创建的环形缓存用于快速计算滑动窗口中的指标

在滑动窗口中执行计算时, 环形缓存是排布数据最简单和最有效的方式。本文描述其算法, 并展示它如何简化滑动窗口中的计算, 以令其更有效率。
交易员生存诀窍: 若干测试的比较报告
交易员生存诀窍: 若干测试的比较报告

交易员生存诀窍: 若干测试的比较报告

本文应对在四种不同的金融工具上同时启动智能交易系统测试。四个测试报告的最终比较在表格中提供, 类似于在线商店中陈列商品。附送礼包是为每个品种自动创建分布图表。
New Bar (新柱)事件处理程序
New Bar (新柱)事件处理程序

New Bar (新柱)事件处理程序

MQL5 编程语言处理问题的能力已达到一个全新的水平。即便是那些已有此类解决方案的任务,也因为面向对象编程而进阶到一个更高的水平。本文中,我们会举一个检查图表中新柱的特别简单的例子,而且,它已经转化成为一种相当强大且用途多样的工具。什么工具?到文中找答案吧。
图形界面 VI: 复选框控件,编辑框控件以及它们的组合类型 (第一章)
图形界面 VI: 复选框控件,编辑框控件以及它们的组合类型 (第一章)

图形界面 VI: 复选框控件,编辑框控件以及它们的组合类型 (第一章)

本文是在MetaTrader终端图形界面开发库系列中第六部分的开端,在第一章中,我们将讨论复选框控件,编辑框控件以及它们的组合类型。
轻松快捷开发 MetaTrader 程序的函数库(第四部分):交易事件
轻松快捷开发 MetaTrader 程序的函数库(第四部分):交易事件

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

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

EA 交易中的限制和验证

是否可以在周一交易此交易品种?是否有足够的资金用于开仓?如果止损触发,损失有多大?如何限制挂单数量?交易操作在当前柱上执行还是在前一柱上执行?如果交易机器人无法执行此类验证,则任何交易策略可转为带来损失。本文说明在EA交易中有用的验证示例。
一个使用命名管道在 MetaTrader 5 客户端之间进行通信的无 DLL 解决方案
一个使用命名管道在 MetaTrader 5 客户端之间进行通信的无 DLL 解决方案

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

本文说明如何使用命名管道在 MetaTrader 5 客户端之间实施进程间通信。为使用命名管道而开发了 CNamedPipes 类。为了测试其使用以及测量连接吞吐能力,提供了价格变动指标、服务器和客户端脚本。命名管道的使用足以应对实时报价。
图形界面 V: 组合框控件 (第三章)
图形界面 V: 组合框控件 (第三章)

图形界面 V: 组合框控件 (第三章)

在本系列第五部分的前两章中,我们开发了用于创建滚动条和列表视图的类,在本章中,我们将讨论创建组合框(combobox)控件的类,这也是一个组合控件,包含了第五部分前面章节中讨论的一些元件。
preview
多层感知器和反向传播算法(第二部分):利用 Python 实现并与 MQL5 集成

多层感知器和反向传播算法(第二部分):利用 Python 实现并与 MQL5 集成

有一个 Python 程序包可用于开发与 MQL 的集成,它提供了大量机会,例如数据探索、创建和使用机器学习模型。 集成在 MQL5 内置的 Python,能够创建各种解决方案,从简单的线性回归、到深度学习模型。 我们来看看如何设置和准备开发环境,以及如何使用一些机器学习函数库。
如何分析图表中所选择信号的交易
如何分析图表中所选择信号的交易

如何分析图表中所选择信号的交易

交易信号服务正在突飞猛进地发展。 将我们的资金托付给信号提供者,我们希望尽量减少资金亏损的风险。 那么如何在这个交易信号的森林中解开拼图呢? 如何发现能赚取盈利的产品? 本文提出创建一种工具,可在品种图表中直观地分析交易信号的交易历史。
MQL5 Cookbook: 多币种EA交易 - 简洁而快速的途径
MQL5 Cookbook: 多币种EA交易 - 简洁而快速的途径

MQL5 Cookbook: 多币种EA交易 - 简洁而快速的途径

本文将介绍一个针对多币种EA交易的简单而合适的实现。意思是说您可以设置EA交易,针对多币种在同一条件下测试/交易,但是为每个交易品种设置不同的参数。作为例子,我们将创建针对两个交易品种的模式,但是通过这种方法可以还增加另外的交易品种,如有必要只需修改很少的代码。
HTML 中的图表
HTML 中的图表

HTML 中的图表

现今很难找到一台没有安装 Web 浏览器的计算机。长久一来,浏览器一直在进化和改进。本文讨论依据从 MetaTrader 5 客户端获得的信息,以简单和安全的方式创建图表,以在浏览器显示它们。
轻松快捷开发 MetaTrader 程序的函数库(第十五部分):品种对象集合
轻松快捷开发 MetaTrader 程序的函数库(第十五部分):品种对象集合

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

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

先进的自适应指标理论及在 MQL5 中的实施

本文要讲述的是高级自适应指标及其在 MQL5 中的实施:自适应周期性指标、自适应重心及自适应 RVI。所有指标的最初出处都在 John F. Ehlers 编著的《股票与期货控制分析》一书中。