MQL5 编程示例的文章

icon

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

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

添加一个新的文章
最近 | 最佳
分形线的构造
分形线的构造

分形线的构造

本文讲述了使用趋势线和分形来构造各种类型的分形线.
MQL5 Cookbook: 把交易历史写入文件以及为每个交易品种在Excel中创建余额图表
MQL5 Cookbook: 把交易历史写入文件以及为每个交易品种在Excel中创建余额图表

MQL5 Cookbook: 把交易历史写入文件以及为每个交易品种在Excel中创建余额图表

当在各种论坛做沟通时,我经常使用我自己的测试结果作为例子,这些结果显示为Microsoft Excel中的图表截图。很多时候都有人问我这些图表是怎样创建的,最终,我现在有时间在本文中解释其中的全部了。
轻松快捷开发 MetaTrader 程序的函数库(第十二部分)。
轻松快捷开发 MetaTrader 程序的函数库(第十二部分)。

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

上篇文章中,我们在函数库中为 MQL4 定义了平仓事件,并删除了若干未使用的订单属性。 在此,我们将研究创建 Account 对象,开发帐户对象的集合,并筹备跟踪帐户事件的功能。
逐步说明如何通过 CSV 文件组织 MetaTrader 4 与 Matlab 之间的数据数组交换。
逐步说明如何通过 CSV 文件组织 MetaTrader 4 与 Matlab 之间的数据数组交换。

逐步说明如何通过 CSV 文件组织 MetaTrader 4 与 Matlab 之间的数据数组交换。

逐步说明如何通过 CSV 文件组织 MetaTrader 4 与 Matlab 之间的数据数组交换。
谬误,第 1 部分:资金管理排第二位,并不是很重要
谬误,第 1 部分:资金管理排第二位,并不是很重要

谬误,第 1 部分:资金管理排第二位,并不是很重要

以 0.1 手为基础的第一次策略测试结果展示正在变成论坛上的事实标准。从专业人士那里获得“还不错”的评价后,新手会看到“0.1”测试带来了相当保守的结果,并决定引入一个更积极进取的资金管理方式,以为正数学期望值会自动提供正面的成果。让我们看看会达成什么结果。此外,我们将试着构建多个极具指导意义的人工余额图。
AutoElliottWaveMaker - 用于艾略特波浪半自动分析的 MetaTrader 5 工具
AutoElliottWaveMaker - 用于艾略特波浪半自动分析的 MetaTrader 5 工具

AutoElliottWaveMaker - 用于艾略特波浪半自动分析的 MetaTrader 5 工具

本文要讲述的是 AutoElliottWaveMaker - MetaTrader 5 中针对艾略特波浪分析的首次开发,体现出手动与自动波浪标签的合二为一。该波浪分析工具完全在 MQL5 中编写,不包含任何外部 dll 库。这也是可以(且应)利用 MQL5 开发成熟有趣程序的又一证据。
通过 WINAPI 进行文件操作
通过 WINAPI 进行文件操作

通过 WINAPI 进行文件操作

MQL4 环境是基于安全“沙盒”概念:通过语言读取和保存文件的功能仅限于部分预定义的文件夹。这将保护 MetaTrader 4 的用户避免 HDD 上的重要数据受到破坏的潜在危险。但是,离开该安全区域有时也是必要的。本文专门介绍如何能够简单而正确地进行该操作。
在 MQL5 中使用对象指针
在 MQL5 中使用对象指针

在 MQL5 中使用对象指针

默认情况下,MQL5 中的所有对象都通过引用传递,但还有使用对象指针的可能性。然而,由于对象可能没有初始化,我们必须执行指针检查。在这种情况下,MQL5程序可能会因为关键性错误而终止并卸载。自动创建的对象不会引起此类错误,因此就此意义而言它们十分安全。通过本文,我们将理解对象引用和对象指针之间的差异,并思考如何编写使用指针的安全代码。
在 MQL5 中使用 WinInet。第二部分:POST 请求和文件
在 MQL5 中使用 WinInet。第二部分:POST 请求和文件

在 MQL5 中使用 WinInet。第二部分:POST 请求和文件

在本文中,我们将继续学习使用 HTTP 请求处理互联网和与服务器进行信息交换的原则。它介绍了 CMqlNet 类的新函数、从表单发送信息的方法、使用 POST 请求发送文件的方法以及使用 Cookie 在您登录网站时进行身份验证。
preview
神经网络变得轻松(第十二部分):舍弃

神经网络变得轻松(第十二部分):舍弃

作为研究神经网络的下一步,我建议研究在神经网络训练过程中提高收敛性的方法。 有若干种这样的方法。 在本文中,我们将研究其中之一,名为“舍弃”。
图形界面 II: 主菜单元件 (第四章))
图形界面 II: 主菜单元件 (第四章))

图形界面 II: 主菜单元件 (第四章))

这是图形界面系列第二部分的最后一章。在此,我们将探讨主菜单的创建,演示这个控件的开发以及设置库中类的处理函数以正确回应用户的操作。我们还将讨论如何把上下文菜单附加到主菜单项目中。另外,我们还会提到怎样阻止当前没有激活的元件。
preview
连续前行优化 (第三部分): 将机器人适配为自动优化器

连续前行优化 (第三部分): 将机器人适配为自动优化器

第三部分充当前两部分之间的桥梁:它阐述的是第一篇文章中研究的 DLL,以及第二篇文章中论述的报告下载对象之间的交互机制。 我们将分析从 DLL 导入的包装类的创建过程,该类可依据交易历史记录形成 XML 文件。 我们还将研究一种与此包装器进行交互的方法。
图形界面 X: 排序、重建表格和单元格中的控件 (集成编译 11)
图形界面 X: 排序、重建表格和单元格中的控件 (集成编译 11)

图形界面 X: 排序、重建表格和单元格中的控件 (集成编译 11)

我们继续向渲染表格添加新功能: 数据排序, 管理列和行数, 设置表格单元类型以将控件放入其中。
四个时间范围的多个指标信号的同步显示
四个时间范围的多个指标信号的同步显示

四个时间范围的多个指标信号的同步显示

手动交易时,你必须留意多个指标的值。这跟机械化交易略有不同。如果你有两个或三个指标,且已选择了一个时间范围进行交易,则任务并不复杂。但如果你有五个或六个指标,且交易策略要求考虑多个时间范围上的信号,你将如何做呢?
错误146 ("交易作业忙") 和如何处理
错误146 ("交易作业忙") 和如何处理

错误146 ("交易作业忙") 和如何处理

文章展示在一个МТ 4客户端上几个智能交易的自由交易冲突。对于在MQL 4 终端和程序的新手有一定的帮助。
图形界面 XI: 渲染控件 (统合构建14.2)
图形界面 XI: 渲染控件 (统合构建14.2)

图形界面 XI: 渲染控件 (统合构建14.2)

在新版本的函数库中, 所有控件将在 OBJ_BITMAP_LABEL 类型的单独图形对象上绘制。我们还将继续描述代码的优化: 讨论函数库核心类的变化。
图形界面III:简单与多功能按钮组(第二章)
图形界面III:简单与多功能按钮组(第二章)

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

本系列的第一章是关于简单和多功能按钮的,第二篇文章将致力于相互关联的按钮组,这样在应用程序中就可以创建元件,让用户从一个集合(组)中选择一个选项。
图形界面 X: 渲染表格的新功能 (集成编译 9)
图形界面 X: 渲染表格的新功能 (集成编译 9)

图形界面 X: 渲染表格的新功能 (集成编译 9)

时至今日, CTable 是函数库中所含的最先进类型表格。表格由 OBJ_EDIT 类型的编辑框汇集而成, 但其进一步开发成为问题。因此, 在最大性能方面, 即使是在函数库的当前开发阶段, 也最好开发 CCanvasTable 类型的渲染表格。它的当前版本毫无生气, 但从本文开始, 我们将尝试解决这个问题。
使用分形绘制水平突破位
使用分形绘制水平突破位

使用分形绘制水平突破位

本文描述了使用上/下分形显示支撑/阻力位的指标创建。
图形界面 VIII: 树形视图控件 (第二章)
图形界面 VIII: 树形视图控件 (第二章)

图形界面 VIII: 树形视图控件 (第二章)

图形界面第八部分前面的章节中介绍了静态与下拉日历元件,第二章将集中介绍一个同样复杂的元件 — 树形视图(tree view), 它在每个用于创建图形界面的完整开发库中都会包含。本文中实现的树形视图包含了多种灵活的设置和模式,使得这个控件元件易于调整以满足您的需求。
图形界面 IV: 信息界面元件 (第一章)
图形界面 IV: 信息界面元件 (第一章)

图形界面 IV: 信息界面元件 (第一章)

在当前开发阶段,用于创建图形界面的库包含了表单以及可以附加其中的几个控件。之前已经说过,未来的文章中将有一篇专门致力于多窗口模式,现在,我们已经万事具备,我们将在下面的章节中讨论它。在本章中,我们将开发用于创建状态栏和工具提示信息界面元件的类。
MQL5 Cookbook - 以 MQL5 编写的多币种 EA,利用限价订单工作
MQL5 Cookbook - 以 MQL5 编写的多币种 EA,利用限价订单工作

MQL5 Cookbook - 以 MQL5 编写的多币种 EA,利用限价订单工作

这次,我们将要创建一款多币种 EA,交易算法基于限价订单 Buy Stop(高买) 和 Sell Stop(低卖)。本文讨论下列事项:在规定时间范围内进行交易,布置/修改/删除限价订单,检查最后一个持仓是否在止盈或止损位置平仓,以及在成交历史中控制每个品种。
MеtaTrader5 图表上的水平示意图
MеtaTrader5 图表上的水平示意图

MеtaTrader5 图表上的水平示意图

水平示意图在终端图表上并不常见,但在很多任务中仍然会用到它们,例如在开发显示特定周期的交易量或价格分布的指标时,当创建各种版本的市场深度时。 本文研究构建和管理水平示意图作为图形基元的数组。
在MQL5程序中使用断言
在MQL5程序中使用断言

在MQL5程序中使用断言

本文介绍MQL5语言中断言的使用。给出了关于断言机制的两个例子以及实现断言的一些总体指导。
如何快速创建一个"2010 年自动交易锦标赛"专用"EA 交易"
如何快速创建一个"2010 年自动交易锦标赛"专用"EA 交易"

如何快速创建一个"2010 年自动交易锦标赛"专用"EA 交易"

为了开发出一种参与“2010 年自动交易锦标赛”的“EA 交易”,我们使用一个即用的“EA 交易”模板。 即便是 MQL5 程序员初哥也能胜任此任务,因为您策略的基类、函数和模板都已经开发完毕。 编写少量的代码来实现您的交易理念就足够了。
交易者的 LifeHack: 测试中的余额,回撤,负载和订单指标
交易者的 LifeHack: 测试中的余额,回撤,负载和订单指标

交易者的 LifeHack: 测试中的余额,回撤,负载和订单指标

如何使测试过程有更好的可视化呢?答案很简单:您需要在策略测试器中使用一个或者多个指标,包含一个订单指标,一个余额和净值指标,一个回撤和存款负载指标。这种方案将有助您可视化地跟踪订单的实况,余额和净值的改变,以及回撤和存款负载。
轻松快捷开发 MetaTrader 程序的函数库(第十八部分):帐户与任意其他函数库对象之间的交互
轻松快捷开发 MetaTrader 程序的函数库(第十八部分):帐户与任意其他函数库对象之间的交互

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

本文将帐户对象的操作安置于任意函数库对象的新基准对象之上,改进了 CBaseObj 基准对象,并测试了设置跟踪参数,以及接收任意函数库对象事件。
更改 MQL4 程序的外部参数而无需重启
更改 MQL4 程序的外部参数而无需重启

更改 MQL4 程序的外部参数而无需重启

本文介绍一种实时更改 MQL4 程序的外部参数而无需重启的方法。
烛台方向统计再现的研究
烛台方向统计再现的研究

烛台方向统计再现的研究

是否能够基于烛台方向的再现趋势,在一天内的特定时间预测市场在即将到来的一小段时间内的市场行为? 即,是否可以在第一时间找出此类事件。 每个交易者可能都想过这个问题。 本文的目的是尝试基于烛台在特定时间间隔内的统计再现来预测市场行为。
轻松快捷开发 MetaTrader 程序的函数库(第六部分):净持帐户事件
轻松快捷开发 MetaTrader 程序的函数库(第六部分):净持帐户事件

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

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

用于交易事件和信号的语音通知系统

现如今,语音助手在人类生活中起着举足轻重的作用,因为我们会经常使用导航、语音搜索和翻译。 在本文中,我将尝试为各种交易事件、市场状态、或由交易信号生成的信号开发一个简单,且用户友好的语音通知系统。
可视化使用选定标准优化的结果
可视化使用选定标准优化的结果

可视化使用选定标准优化的结果

在这篇文章中,我们继续开发用于操作优化结果的 MQL 应用程序,这一次,我们将会展示如何在通过图形界面指定了其它标准、在优化参数之后生成最佳结果的表格。
移动极小化极大:技术分析的新指标及其在 MQL5 中的实施
移动极小化极大:技术分析的新指标及其在 MQL5 中的实施

移动极小化极大:技术分析的新指标及其在 MQL5 中的实施

在下文中,我将基于 Z.G.Silagadze 的论文《移动极小化极大:技术分析的新指标》说明移动极小化极大指标的实施过程。指标的理念基于对量子隧穿现象的模拟,量子隧穿现象由 G. Gamov 在 α-衰变理论中提出。
扩展 MQL5 标准库和重用代码
扩展 MQL5 标准库和重用代码

扩展 MQL5 标准库和重用代码

作为一名开发人员,MQL5 标准库让您的工作变得更加容易。然而,它无法实现世界上所有开发人员的全部需求,所以,如果您觉得您需要更多的自定义程序,您可以对标准库进行进一步的扩展。本文指导您完成将 MetaQuotes 的峰谷技术指标集成至标准库。我们从 MetaQuotes 的设计理念获得启发以实现我们的目标。
轻松快捷开发 MetaTrader 程序的函数库(第 二十二部分):交易类 - 基准类,限制验证
轻松快捷开发 MetaTrader 程序的函数库(第 二十二部分):交易类 - 基准类,限制验证

轻松快捷开发 MetaTrader 程序的函数库(第 二十二部分):交易类 - 基准类,限制验证

在本文中,我们将着手开函数发库基准交易类,并在其第一个版本中加入进行交易操作的权限初始验证。 此外,我们还将略微扩展基准交易类的功能和内容。
将 MetaTrader 4  客户终端与 MS SQL Server 相集成
将 MetaTrader 4  客户终端与 MS SQL Server 相集成

将 MetaTrader 4 客户终端与 MS SQL Server 相集成

本文介绍一个有关使用 dll 将 MetaTrader 4 客户终端与 MS SQL Server 相集成的示例。附件为两个用 С++ 和 MQL4 编写的源代码,以及现成的已编译 Visual C++ 6.0 SP5 项目。
使用云存储服务来进行终端之间的数据交换
使用云存储服务来进行终端之间的数据交换

使用云存储服务来进行终端之间的数据交换

云技术正在变得越来越流行,现在,我们可以选择付费或者免费的存储服务,有没有可能在交易中使用它们呢?本文提出了一种技术,可以使用云存储服务来进行终端之间的数据交换。
轻松快捷开发 MetaTrader 程序的函数库 (第 二十九部分) :延后交易请求 - 请求对象类
轻松快捷开发 MetaTrader 程序的函数库 (第 二十九部分) :延后交易请求 - 请求对象类

轻松快捷开发 MetaTrader 程序的函数库 (第 二十九部分) :延后交易请求 - 请求对象类

在之前的文章里,我们检验了延后交易请求的概念。 实际上,延后请求是由特定条件执行的正常交易订单。 在本文中,我们会创建完整的延后请求对象类 — 基准请求对象及其后代。
MQL5 细则手册:在单一窗口中监控多个时间表
MQL5 细则手册:在单一窗口中监控多个时间表

MQL5 细则手册:在单一窗口中监控多个时间表

在 MetaTrader 5 中,有 21 个时间表可供分析。您可以利用能置于现有图表上的特殊图表对象,并在相应位置设置交易品种、时间表及其他属性。文章将对此类图表图形对象进行详细介绍:我们将使用控件(按钮)创建指标,以便同时在子窗口中建立多个图表对象。此外,图表对象将准确置于子窗口中,并随主图表或终端窗口的大小调整自动进行校正。
MQL5 Cookbook: 获取仓位属性
MQL5 Cookbook: 获取仓位属性

MQL5 Cookbook: 获取仓位属性

在本文中,我们将创建一个脚本来获得所有的仓位属性,并用对话框向用户显示它们。通过运行这个脚本,您可以从外部参数下拉列表的两种模式中选择:只看当前交易品种的仓位属性,或者查看所有交易品种的属性。