MQL5 编程示例的文章

icon

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

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

添加一个新的文章
最近 | 最佳
preview
从基础到中级:变量(II)

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

今天,我们将探讨如何使用静态变量。这个问题常常让许多程序员感到困惑,无论是初学者还是有一定经验的开发者,因为使用这一机制时需要遵循一些特定的建议。本文旨在为教学目的提供材料。在任何情况下,应用程序都应仅用于学习和掌握所介绍的概念。
preview
突破机器学习的局限(第一部分):缺乏可互操作的度量指标

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

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

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

在本文中,我们开始考虑许多初学者避免的概念之一。这与模板不是一个容易的话题有关,因为许多人不理解模板的基本原理:函数和过程的重载。
preview
从基础到中级:按值传递还是按引用传递

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

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

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

在本文中,我们将探讨如何在指标和服务之间实时传输信息,并了解为什么在更改时间框架时可能会出现问题以及如何解决这些问题。作为奖励,您将可以访问回放/模拟应用程序的最新版本。
preview
在任何市场中获得优势(第三部分):Visa消费指数

在任何市场中获得优势(第三部分):Visa消费指数

在大数据的世界里,有数以百万计的备选数据集,它们有可能提升我们的交易策略。在这一系列文章中,我们将帮助您识别最有信息量的公开数据集。
preview
适应性社会行为优化(ASBO):两阶段演变

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

我们继续探讨生物体的社会行为及其对新数学模型 ASBO(适应性社会行为优化)开发的影响。我们将深入研究两阶段演变,测试算法并得出结论。正如在自然界中,一群生物体共同努力生存一样,ASBO 使用集体行为原理来解决复杂的优化问题。
preview
市场模拟(第五部分):创建 C_Orders 类(二)

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

在本文中,我将解释 Chart Trade 如何与 EA 交易一起处理平仓请求,以关闭用户的所有未平仓头寸。这听起来简单,但你需要知道如何应对一些复杂情况。
preview
矩阵分解:更实用的建模

矩阵分解:更实用的建模

您可能没有注意到,矩阵建模有点奇怪,因为只指定了列,而不是行和列。在阅读执行矩阵分解的代码时,这看起来非常奇怪。如果您希望看到列出的行和列,那么在尝试分解时可能会感到困惑。此外,这种矩阵建模方法并不是最好的。这是因为当我们以这种方式对矩阵建模时,会遇到一些限制,迫使我们使用其他方法或函数,而如果以更合适的方式建模,这些方法或函数是不必要的。
preview
MQL5 交易工具包(第 6 部分):使用最新成交的挂单函数扩展历史管理 EX5 库

MQL5 交易工具包(第 6 部分):使用最新成交的挂单函数扩展历史管理 EX5 库

了解如何创建可导出函数的 EX5 模块,无缝查询和保存最近填写的挂单数据。在本全面的分步指南中,我们将通过开发专用和分隔的函数来检索最后填写的挂单的基本属性,从而增强历史管理 EX5 库。这些属性包括订单类型、设置时间、执行时间、填充类型以及有效管理和分析挂单交易历史所需的其他关键细节。
preview
在MQL5中创建交易管理面板(第九部分):代码组织(5):分析面板(AnalyticsPanel)类

在MQL5中创建交易管理面板(第九部分):代码组织(5):分析面板(AnalyticsPanel)类

在本文中,我们将探讨如何获取实时市场数据和交易账户信息,执行各种计算,并将结果展示在自定义面板上。为此,我们将深入开发一个分析面板(AnalyticsPanel)类,该类封装了所有这些功能,包括面板创建功能。这项工作是我们正在进行的新建管理面板智能交易系统(EA)扩展工作的一部分,旨在运用模块化设计原则和代码组织的最佳实践来引入高级功能。
preview
在 MQL5 中创建交易管理面板(第九部分):代码组织(二):模块化

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

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

《精通日志记录(第二部分):格式化日志》

在本文中,我们将探讨如何在类库中创建和应用日志格式化工具。我们将从格式化工具的基本结构讲起,一直到样例的实现。到本文结束时,您将掌握在该库中格式化日志的必要知识,并理解其背后的工作原理。
preview
精通日志记录(第四部分):将日志保存到文件

精通日志记录(第四部分):将日志保存到文件

在本文中,我将向您讲解基本的文件操作,以及如何配置一个灵活的自定义处理器。我们将更新 CLogifyHandlerFile 类,以将日志直接写入文件。我们将通过在 EURUSD 上模拟一周的策略来进行性能测试,在每个 tick 生成日志,总耗时为 5 分 11 秒。其结果将在未来的文章中进行比较,届时我们将实现一个缓存系统来提升性能。
preview
在 MetaTrader 5 中交易的可视评估和调整

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

策略测试器允许您所做的不光是优化交易机器人的参数。我将展示如何在事后评估您账户的交易历史,并通过在测试器中更改持仓的止损来调整您的交易。
preview
交易中的神经网络:降低锐度强化变换器效率(终章)

交易中的神经网络:降低锐度强化变换器效率(终章)

SAMformer 为长期时间序列预测中变换器模型的主要缺点,譬如训练复杂性,及小型数据集的普适能力差,提供了解决方案。其浅层架构和锐度感知优化有助于避免次优的局部最小值。在本文中,我们将继续利用 MQL5 实现方式,并评估其实用价值。
preview
从基础到中级:SWITCH 语句

从基础到中级:SWITCH 语句

在本文中,我们将学习如何以最简单、最基本的形式使用 SWITCH 语句。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
在MQL5中创建交易管理员面板(第七部分):可信任用户、密码恢复与加密技术

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

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

从基础到中级:WHILE 和 DO WHILE 语句

在本文中,我们将对第一个循环语句进行实用且非常直观的介绍。尽管许多初学者在面对创建循环的任务时感到害怕,但知道如何正确安全地完成它只能通过经验和练习来实现。但谁知道呢,也许我可以通过向你展示在代码中使用循环时的主要问题和预防措施来减少你的麻烦和痛苦。
preview
从基础到中级:数组和字符串(一)

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

在今天的文章中,我们将开始探索一些特殊的数据类型。首先,我们将定义什么是字符串,并解释如何使用一些基本过程。这将使我们能够处理这类数据,这可能很有趣,尽管有时对初学者来说有点困惑。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
从基础到中级:数组(二)

从基础到中级:数组(二)

在本文中,我们将了解动态数组和静态数组是什么。使用一个或另一个有区别吗?还是它们总是一样的?何时应该使用一种类型,何时应该使用另一种类型?那么常数数组呢?我们将尝试了解它们的设计目的,并考虑不初始化数组中所有值的风险。
preview
开发回放系统(第 55 部分):控制模块

开发回放系统(第 55 部分):控制模块

在本文中,我们将实现一个控制指标,以便它可以集成到我们正在开发的消息系统中。虽然这并不难,但关于这个模块的初始化,有一些细节需要了解。此处提供的材料仅用于教育目的。除了学习和掌握所示的概念外,绝不应将其视为任何目的的应用程序。
preview
在Python和MQL5中应用局部特征选择

在Python和MQL5中应用局部特征选择

本文探讨了Narges Armanfard等人在论文《数据分类的局部特征选择》中介绍的一种特征选择算法。该算法使用Python实现,用于构建二元分类器模型,这些模型可以与MetaTrader 5应用程序集成以进行推理。
preview
基于通用 MLP 逼近器的EA

基于通用 MLP 逼近器的EA

本文介绍了一种在交易 EA 中使用神经网络的简单且易于实现的方法,该方法不需要深厚的机器学习知识。该方法免除了对目标函数进行归一化的步骤,同时克服了“权重爆炸”和“网络停滞”等问题,并提供了直观的训练过程和结果的可视化控制。
preview
价格行为分析工具包开发(第二十部分):外部资金流(4)——相关性路径探索器

价格行为分析工具包开发(第二十部分):外部资金流(4)——相关性路径探索器

作为价格行为分析工具包开发系列的一部分,相关性路径探索器为理解货币对动态提供了一种全新方法。该工具可自动收集和分析数据,深入分析诸如欧元兑美元(EUR/USD)和英镑兑美元(GBP/USD)等货币对之间的相互作用。借助其实用、实时的信息,增强你的交易策略,助您更有效地管理风险并发现机会。
preview
开发回放系统(第 74 部分):新 Chart Trade(一)

开发回放系统(第 74 部分):新 Chart Trade(一)

在本文中,我们将修改本系列关于 Chart Trade 中显示的最后一段代码。这些变化对于使代码适应当前的回放/模拟系统模型是必要的。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
开发回放系统(第 77 部分):新 Chart Trade(四)

开发回放系统(第 77 部分):新 Chart Trade(四)

在本文中,我们将介绍创建通信协议时需要考虑的一些措施和预防措施。这些都是非常简单明了的事情,所以我们在本文中不会详细介绍。但要了解会发生什么,您需要了解文章的内容。
preview
从基础到中级:数组(四)

从基础到中级:数组(四)

在本文中,我们将看看如何做一些与 C、C++ 和 Java 等语言中实现的非常相似的事情。我说的是在函数或过程中传递几乎无限数量的参数。虽然这似乎是一个相当高级的主题,但在我看来,任何理解了前面概念的人都可以很容易地实现这里展示的内容。只要它们真的被正确理解。
preview
名义变量的序数编码

名义变量的序数编码

在本文中,我们将讨论并演示如何使用Python和MQL5将名义预测变量转换为适合机器学习算法的数值格式。
preview
Connexus观察者模式(第8部分):添加一个观察者请求

Connexus观察者模式(第8部分):添加一个观察者请求

在本系列文章的最后一篇中,我们探讨了观察者模式(Observer Pattern) 在Connexus库中的实现,同时对文件路径和方法名进行了必要的重构优化。该系列文章完整地记录了Connexus库的开发过程——这是一个专为简化复杂应用中的HTTP通信而设计的工具库。
preview
市场模拟(第三部分):性能问题

市场模拟(第三部分):性能问题

我们经常需要后退一步,然后继续前进。在本文中,我们将展示所有必要的更改,以确保鼠标和 Chart Trade 指标不会中断。作为奖励,我们还将介绍未来将广泛使用的其他头文件中发生的其他更改。
preview
因果网络分析(CNA)、随机模型最优控制(SMOC)和纳什博弈论结合深度学习的示例

因果网络分析(CNA)、随机模型最优控制(SMOC)和纳什博弈论结合深度学习的示例

我们将向之前发布的文章中的三个例子里加入深度学习,并与之前的版本进行比较。目标是学习如何将深度学习(DL)应用于其他EA。
preview
开发回放系统(第 71 部分):取得正确的时间(四)

开发回放系统(第 71 部分):取得正确的时间(四)

在本文中,我们将研究如何实现上一篇文章中所示的与回放/模拟服务相关的内容。就像生活中的许多其他事情一样,问题必然会出现。这次的情况也不例外。在这篇文章中,我们将继续改进。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
从基础到中级:FOR 语句

从基础到中级:FOR 语句

在本文中,我们将了解 FOR 语句最基本的概念。了解这里将显示的所有内容非常重要。与我们迄今为止讨论的其他语句不同,FOR 语句有一些怪癖,很快就会变得非常复杂。所以不要让这样的事情堆积起来,尽快开始学习和练习。
preview
从新手到专家:对K线进行编程

从新手到专家:对K线进行编程

在本文中,我们将迈出 MQL5 编程的第一步,即使是完全零基础的初学者也能上手。我们将向您展示,如何将熟悉的 K线形态 转换为一个功能完备的自定义指标。K线形态之所以有价值,是因为它们反映了真实的价格行为,并预示着市场的转变。与其手动扫描图表——这种方法容易出错且效率低下——我们将讨论如何通过一个指标来自动化这个过程,该指标会自动识别并标记出这些形态。在此过程中,我们将探讨一些关键概念,例如索引、时间序列、平均真实波幅(用于在多变的市场波动性中提高准确性),以及如何开发一个可自定义、可复用的 K线形态库,以便在未来的项目中使用。
preview
MQL5 交易工具包(第 7 部分):使用最近取消的挂单函数扩展历史管理 EX5 库

MQL5 交易工具包(第 7 部分):使用最近取消的挂单函数扩展历史管理 EX5 库

了解如何完成历史管理 EX5 库中最终模块的创建,重点关注负责处理最近取消的挂单的函数。这将为您提供使用 MQL5 有效检索和存储与已取消挂单相关的关键详细信息的工具。
preview
从基础到中级:浮点数

从基础到中级:浮点数

本文简要介绍浮点数的概念。由于这篇文章非常复杂,请仔细阅读,不要期望很快掌握浮点数系统。随着时间的推移,当你获得使用它的经验时,它才会变得清晰。但本文将帮助您理解为什么您的应用程序有时会产生与预期不同的结果。
preview
开发回放系统(第 60 部分):玩转服务(一)

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

很长一段时间以来,我们一直在研究指标,但现在是时候让服务重新工作了,看看图表是如何根据提供的数据构建的。然而,由于整个事情并没有那么简单,我们必须注意了解前方等待我们的是什么。
preview
创建MQL5交易管理员面板(第九部分):代码组织(1)

创建MQL5交易管理员面板(第九部分):代码组织(1)

这次将深入探讨处理大型代码库时遇到的挑战。我们将探索在MQL5中进行代码组织的最佳实践,并采用一种实用方法来提升我们交易管理面板源代码的可读性和可扩展性。此外,我们致力于开发可复用的代码组件,这些组件有可能为其他开发者在其算法开发过程中带来益处。请继续阅读并参与讨论。
preview
Connexus请求解析(第六部分):创建HTTP请求与响应

Connexus请求解析(第六部分):创建HTTP请求与响应

在Connexus库系列文章的第六篇中,我们将聚焦于完整的HTTP请求,涵盖构成请求的各个组件。我们将创建一个表示整个请求的类,这将有助于将之前创建的各个类整合在一起。