MQL5 编程示例的文章

icon

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

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

添加一个新的文章
最近 | 最佳
preview
HTTP和Connexus(第2部分):理解HTTP架构和库设计

HTTP和Connexus(第2部分):理解HTTP架构和库设计

本文探讨了HTTP协议的基础知识,涵盖了主要方法(GET、POST、PUT、DELETE)、状态码以及URL的结构。此外,还介绍了Conexus库的构建起点,以及CQueryParam和CURL类,这些类用于在HTTP请求中操作URL和查询参数。
preview
分析交易所价格的二进制代码(第二部分):转换为 BIP39 并编写 GPT 模型

分析交易所价格的二进制代码(第二部分):转换为 BIP39 并编写 GPT 模型

继续尝试破译价格走势……我们将通过将二进制价格代码转换为 BIP39 来获得一个“市场词典”,那么,对这个词典进行语言学分析又如何呢?在本文中,我们将深入探讨一种创新的交易所数据分析方法,并研究如何将现代自然语言处理技术应用于市场语言。
preview
开发回放系统(第 51 部分):事情变得复杂(三)

开发回放系统(第 51 部分):事情变得复杂(三)

在本文中,我们将研究 MQL5 编程领域最困难的问题之一:如何正确获取图表 ID,以及为什么对象有时不会绘制在图表上。此处提供的材料仅用于教学目的,在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
开发回放系统(第 61 部分):玩转服务(二)

开发回放系统(第 61 部分):玩转服务(二)

在本文中,我们将研究使回放/模拟系统更高效、更安全地运行的修改。我也不会对那些想要充分利用这些类的人置之不理。此外,我们将探讨 MQL5 中的一个特定问题,即在使用类时降低代码性能,并解释如何解决它。
preview
重构经典策略(第十四部分):高胜率交易形态

重构经典策略(第十四部分):高胜率交易形态

高胜率交易形态在交易圈内广为人知,但遗憾的是,其定义始终缺乏明确标准。本文将通过实证研究与算法建模,为高胜率形态构建量化定义框架,并探索其识别与运用方法。借助梯度提升树模型,我们演示如何系统性优化任意交易策略的性能,同时以更精准、可解释的方式向计算机传达交易指令的核心逻辑。
preview
种群优化算法:改变概率分布的形状和位移,并基于智能头足类生物(SC)进行测试

种群优化算法:改变概率分布的形状和位移,并基于智能头足类生物(SC)进行测试

本文研究了改变概率分布形状对优化算法性能的影响。我们将进行的实验,会用到智能头足类生物(SC)测试算法,从而评估优化问题背景下各种概率分布的效能。
preview
构建MQL5自优化智能交易系统(EA)(第四部分):动态头寸规模调整

构建MQL5自优化智能交易系统(EA)(第四部分):动态头寸规模调整

成功运用算法交易需要持续的跨学科学习。然而,无限的可能性可能会耗费数年努力,却无法取得切实成果。为解决这一问题,我们提出一个循序渐进增加复杂性的框架,让交易者能够迭代优化策略,而非将无限时间投入不确定的结果中。
preview
从基础到中级:IF ELSE

从基础到中级:IF ELSE

在本文中,我们将讨论如何使用 IF 操作符及其伴随者 ELSE。这个语句是所有编程语言中最为重要且最有意义的语句。然而,尽管它易于使用,但如果我们没有使用它的经验以及与之相关的概念,它有时会令人困惑。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
开发回放系统(第 50 部分):事情变得复杂 (二)

开发回放系统(第 50 部分):事情变得复杂 (二)

我们将解决图表 ID 问题,同时开始为用户提供使用个人模板对所需资产进行分析和模拟的能力。此处提供的材料仅用于教学目的,不应被视为除学习和掌握所提供概念以外的任何目的的应用。
preview
将 MQL5 与数据处理包集成(第 4 部分):大数据处理

将 MQL5 与数据处理包集成(第 4 部分):大数据处理

本部分探讨了将 MQL5 与强大的数据处理工具集成的高级技术,重点是高效处理大数据,以增强交易分析和决策。
preview
从基础到中级:联合(二)

从基础到中级:联合(二)

今天我们有一篇非常有趣的文章。我们将研究联合并尝试解决之前讨论的问题。我们还将探讨在应用程序中使用联合时可能出现的一些不寻常的情况。此处提供的材料仅用于教学目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
从基础到中级:联合(一)

从基础到中级:联合(一)

在这篇文章中,我们将探讨什么是联合。在这里,通过实验,我们将分析可以使用联合的第一种构造。然而,这里展示的只是后续文章将涵盖的一组概念和信息的核心部分。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
从基础到中级:模板和类型名称 (五)

从基础到中级:模板和类型名称 (五)

在本文中,我们将探讨模板的最后一个简单用例,并讨论在代码中使用 typename 的好处和必要性。虽然这篇文章乍一看可能有点复杂,但为了以后使用模板和 typename,正确理解它很重要。
preview
开发回放系统(第 54 部分):第一个模块的诞生

开发回放系统(第 54 部分):第一个模块的诞生

在本文中,我们将探讨如何将多个真正功能模块中的第一个组合在一起,用于回放/模拟器系统,这些模块也将用于其他用途。我们现在说的是鼠标模块。
preview
开发回放系统(第 66 部分):玩转服务(七)

开发回放系统(第 66 部分):玩转服务(七)

在本文中,我们将实现第一个解决方案,该解决方案使我们能够确定何时在图表上出现新的柱形。此解决方案适用于各种情况。了解它的发展将有助于你掌握几个重要方面。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
从基础到中级:重载

从基础到中级:重载

也许这篇文章对新手程序员来说是最令人困惑的。事实上,在这里我将证明,并非所有函数和过程在同一代码中都有唯一的名称。是的,我们可以很容易地使用同名函数和过程 —— 这被称为重载。
preview
突破机器学习的局限(第一部分):缺乏可互操作的度量指标

突破机器学习的局限(第一部分):缺乏可互操作的度量指标

无论以何种形式构建可靠的人工智能(AI)交易策略,都有一种强大且普遍存在的力量,正悄然地侵蚀着我们社区的集体努力,本文提到,我们所面临的部分问题,源于对“最优实践”的盲目遵循。通过为读者提供基于现实市场的简单证据,我们说明为何必须摒弃这种做法,转而采用特定领域内的最优实践,这样一来,我们的社区才有可能重振AI的潜在力量。
preview
开发回放系统(第 47 部分):Chart Trade 项目(六)

开发回放系统(第 47 部分):Chart Trade 项目(六)

最后,我们的 Chart Trade 指标开始与 EA 互动,以交互方式传输信息。因此,在本文中,我们将对该指标进行改进,使其功能足以与任何 EA 配合使用。这样,我们就可以访问 Chart Trade 指标,并像实际连接 EA 一样使用它。不过,我们将以比以前更有趣的方式来实现这一目标。
preview
开发回放系统(第 65 部分):玩转服务(六)

开发回放系统(第 65 部分):玩转服务(六)

在本文中,我们将研究如何在与回放/模拟应用程序结合使用时实现和解决鼠标指针问题。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
人工协作搜索算法 (ACS)

人工协作搜索算法 (ACS)

人工协作搜索算法ACS (Artificial Cooperative Search) 是一种创新方法,它利用二进制矩阵和基于互利共生与合作的多个动态种群来快速准确地找到最优解。ACS在捕食者与猎物问题上的独特处理方法使其能够在数值优化问题中取得卓越成果。
preview
MQL5 交易工具包(第 5 部分):使用仓位函数扩展历史管理 EX5 库

MQL5 交易工具包(第 5 部分):使用仓位函数扩展历史管理 EX5 库

了解如何创建可导出的 EX5 函数,以高效查询和保存历史仓位数据。在本分步指南中,我们将通过开发检索最近平仓的关键属性的模块来扩展历史管理 EX5 库。这些属性包括净利润、交易持续时间、基于点的止损、止盈、利润值以及其他各种重要细节。
preview
开发回放系统(第 78 部分):新 Chart Trade(五)

开发回放系统(第 78 部分):新 Chart Trade(五)

在本文中,我们将研究如何实现部分接收方代码。在这里我们将实现一个 EA 交易来测试和了解协议交互是如何工作的。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
Connexus中的正文(第四部分):添加HTTP请求正文

Connexus中的正文(第四部分):添加HTTP请求正文

在本文中,我们探讨了HTTP请求中的正文概念,这对于发送诸如JSON和纯文本之类的数据至关重要。我们讨论并解释了如何正确地使用正文,并结合适当的头部信息。此外,我们还介绍了Connexus库中的ChttpBody类,它将简化对请求正文的处理。
preview
群体算法的混合 -顺序结构和并行结构

群体算法的混合 -顺序结构和并行结构

在这里,我们将深入探讨优化算法混合的三个主要类型:策略混合、顺序混合和并行混合。我们将结合并测试相关的优化算法进行一系列实验。
preview
从基础到中级:数组和字符串(三)

从基础到中级:数组和字符串(三)

本文从两个方面进行探讨。首先,标准库如何将二进制值转换为其他表示形式,如八进制、十进制和十六进制。其次,我们将讨论如何使用我们已经获得的知识,根据秘密短语确定密码的宽度。
preview
从基础到中级:模板和类型名称(一)

从基础到中级:模板和类型名称(一)

在本文中,我们开始考虑许多初学者避免的概念之一。这与模板不是一个容易的话题有关,因为许多人不理解模板的基本原理:函数和过程的重载。
preview
时间演化旅行算法(TETA)

时间演化旅行算法(TETA)

这是我自己的算法。本文表阐述受平行宇宙和时间流概念启发的时间演化旅行算法(TETA)。该算法的基本思路是,尽管传统意义上的时间旅行是不可能的,但我们能够选择一系列事件来导致不同的现实。
preview
开发回放系统(第 34 部分):订单系统 (三)

开发回放系统(第 34 部分):订单系统 (三)

在本文中,我们将完成构建的第一阶段。虽然这部分内容很快就能完成,但我将介绍之前没有讨论过的细节。我将解释一些许多人不理解的问题。你知道为什么要按 Shift 或 Ctrl 键吗?
preview
开发回放系统(第 42 部分):图表交易项目(I)

开发回放系统(第 42 部分):图表交易项目(I)

我们来创建一些更有趣的东西。我不想毁掉惊喜,故此紧随本文以便更好地理解。自本系列开发回放/模拟器系统的最开始,我就一直说,我们的意图是按相同的方式使用 MetaTrader 5 平台,无论正在开发的系统中,亦或真实市场中。重点是要正确完成。没有人愿意在训练和学习时用一种工具,而在战斗时不得不换另一种工具。
preview
开发回放系统(第 64 部分):玩转服务(五)

开发回放系统(第 64 部分):玩转服务(五)

在本文中,我们将介绍如何修复代码中的两个错误。然而,我将尝试以一种有助于初学者程序员理解事情并不总是如你所愿的方式解释它们。无论如何,这是一个学习的机会。此处提供的内容仅用于教育目的。本应用程序不应被视为最终文件,其目的除了探讨所提出的概念之外,不应有任何其它用途。
preview
开发回放系统(第 67 部分):完善控制指标

开发回放系统(第 67 部分):完善控制指标

在本文中,我们将看看通过一点代码改进可以实现什么。这一改进旨在简化我们的代码,更多地使用 MQL5 库调用,最重要的是,使其在我们未来可能开发的其他项目中更加稳定、安全和易于使用。
preview
开发回放系统(第 73 部分):不寻常的通信(二)

开发回放系统(第 73 部分):不寻常的通信(二)

在本文中,我们将探讨如何在指标和服务之间实时传输信息,并了解为什么在更改时间框架时可能会出现问题以及如何解决这些问题。作为奖励,您将可以访问回放/模拟应用程序的最新版本。
preview
从基础到中级:按值传递还是按引用传递

从基础到中级:按值传递还是按引用传递

在本文中,我们将实际了解按值传递和按引用传递之间的区别。虽然这看起来很简单,很常见,不会造成任何问题,但许多经验丰富的程序员经常因为这个小细节而在处理代码时遇到真正的失败。知道何时、如何以及为什么使用按值传递或按引用传递将对我们作为程序员的生活产生巨大的影响。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
从基础到中级:变量(II)

从基础到中级:变量(II)

今天,我们将探讨如何使用静态变量。这个问题常常让许多程序员感到困惑,无论是初学者还是有一定经验的开发者,因为使用这一机制时需要遵循一些特定的建议。本文旨在为教学目的提供材料。在任何情况下,应用程序都应仅用于学习和掌握所介绍的概念。
preview
在 MQL5 中创建交易管理面板(第九部分):代码组织(二):模块化

在 MQL5 中创建交易管理面板(第九部分):代码组织(二):模块化

在本次讨论中,我们进一步将 MQL5 程序分解为更小、更易于管理的模块。然后,这些模块化组件将被集成到主程序中,从而增强其组织性和可维护性。这种方法简化了我们主程序的结构,并使各个组件可以在其他EA和指标的开发中复用。通过采用这种模块化设计,我们为未来的增强功能创建了坚实的基础,这将使我们的项目和更广泛的开发者社区都受益。
preview
市场模拟(第五部分):创建 C_Orders 类(二)

市场模拟(第五部分):创建 C_Orders 类(二)

在本文中,我将解释 Chart Trade 如何与 EA 交易一起处理平仓请求,以关闭用户的所有未平仓头寸。这听起来简单,但你需要知道如何应对一些复杂情况。
preview
价格行为分析工具开发(第二十八部分):开盘区间突破工具

价格行为分析工具开发(第二十八部分):开盘区间突破工具

交易时段伊始,市场方向往往晦暗不明,唯有价格突破开盘区间后,趋势才逐渐显现。本文将详解如何利用MQL5编写一款EA,自动识别与分析开盘区间突破,为日内交易提供精准、经得起数据验证的入场信号。
preview
在 MetaTrader 5 中交易的可视评估和调整

在 MetaTrader 5 中交易的可视评估和调整

策略测试器允许您所做的不光是优化交易机器人的参数。我将展示如何在事后评估您账户的交易历史,并通过在测试器中更改持仓的止损来调整您的交易。
preview
适应性社会行为优化(ASBO):两阶段演变

适应性社会行为优化(ASBO):两阶段演变

我们继续探讨生物体的社会行为及其对新数学模型 ASBO(适应性社会行为优化)开发的影响。我们将深入研究两阶段演变,测试算法并得出结论。正如在自然界中,一群生物体共同努力生存一样,ASBO 使用集体行为原理来解决复杂的优化问题。
preview
在MQL5中创建交易管理员面板(第七部分):可信任用户、密码恢复与加密技术

在MQL5中创建交易管理员面板(第七部分):可信任用户、密码恢复与加密技术

每次刷新图表、通过管理面板EA添加新交易品种或重启终端时触发的安全提示,可能会让人感觉繁琐。在本次讨论中,我们将探索并实现一项功能,该功能通过跟踪登录尝试次数来识别可信用户。在达到一定次数的失败尝试后,应用程序将切换至高级登录流程,该流程还为可能忘记密码的用户提供密码恢复功能。此外,我们还将介绍如何将加密技术有效集成到管理面板中,以增强安全性。