MQL5 编程示例的文章

icon

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

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

添加一个新的文章
最近 | 最佳
preview
开发回放系统(第 67 部分):完善控制指标

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

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

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

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

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

在本文中,我们将了解动态数组和静态数组是什么。使用一个或另一个有区别吗?还是它们总是一样的?何时应该使用一种类型,何时应该使用另一种类型?那么常数数组呢?我们将尝试了解它们的设计目的,并考虑不初始化数组中所有值的风险。
preview
从基础到中级:指标(三)

从基础到中级:指标(三)

在本文中,我们将探讨如何声明各种图形表现形式的指标,例如 DRAW_COLOR_LINE 和 DRAW_FILLING。此外,当然,我们将学习如何以简单、实用和快速的方式使用多个指标绘制图表。这确实可以改变你对 MetaTrader 5 和整个市场的看法。
preview
开发回放系统(第 55 部分):控制模块

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

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

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

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

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

在本文中,我们将看看如何做一些与 C、C++ 和 Java 等语言中实现的非常相似的事情。我说的是在函数或过程中传递几乎无限数量的参数。虽然这似乎是一个相当高级的主题,但在我看来,任何理解了前面概念的人都可以很容易地实现这里展示的内容。只要它们真的被正确理解。
preview
价格行为分析工具包开发(第三十三部分):K线区间理论工具

价格行为分析工具包开发(第三十三部分):K线区间理论工具

提升您对市场的解读能力,这款适用于MetaTrader 5的K线区间理论套件是完全原生的MQL5解决方案,能将原始K线数据转化为实时波动率情报。轻量级的CRangePattern库会将每根K线的真实波幅与自适应ATR进行基准对比,并在K线收盘的瞬间完成形态分类;CRT指标随后会将这些分类结果以清晰的彩色矩形和箭头形式呈现在图表上,实时揭示市场的缩量盘整、强势突破以及全区间吞没形态。
preview
从基础到中级:SWITCH 语句

从基础到中级:SWITCH 语句

在本文中,我们将学习如何以最简单、最基本的形式使用 SWITCH 语句。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
名义变量的序数编码

名义变量的序数编码

在本文中,我们将讨论并演示如何使用Python和MQL5将名义预测变量转换为适合机器学习算法的数值格式。
preview
图论:Dijkstra(迪杰斯特拉)算法在交易中的应用

图论:Dijkstra(迪杰斯特拉)算法在交易中的应用

Dijkstra(迪杰斯特拉)算法是图论中一种经典的最短路径解决方案,它可以通过对市场网络进行建模来优化交易策略。交易者可以利用它从 K 线图表数据中找到最高效的路线。
preview
从新手到专家:使用 MQL5 制作动画新闻标题(一)

从新手到专家:使用 MQL5 制作动画新闻标题(一)

在 MetaTrader 5 终端上进行交易时,新闻可访问性是一个关键因素。虽然有很多新闻 API 可用,但许多交易者在访问这些 API 并将其有效集成到他们的交易环境中时仍面临挑战。在本次讨论中,我们的目标是开发一种简化的解决方案,将新闻直接呈现在图表上 —— 也就是最需要新闻的地方。我们将通过构建一个新闻标题 EA 来实现这一目标,该 EA 可以监控并显示来自 API 源的实时新闻更新。
preview
市场模拟(第三部分):性能问题

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

我们经常需要后退一步,然后继续前进。在本文中,我们将展示所有必要的更改,以确保鼠标和 Chart Trade 指标不会中断。作为奖励,我们还将介绍未来将广泛使用的其他头文件中发生的其他更改。
preview
基于Python与MQL5的特征工程(第三部分):价格角度(2)——极坐标(Polar Coordinates)法

基于Python与MQL5的特征工程(第三部分):价格角度(2)——极坐标(Polar Coordinates)法

在本文中,我们将第二次尝试将任意市场的价格水平变化转化为对应的角度变化。此次,我们选择了比首次尝试更具数学复杂性的方法,而获得的结果表明,这一调整或许是正确的决策。今天,让我们共同探讨如何通过极坐标以有意义的方式计算价格水平变化所形成的角度,无论您分析的是何种市场。
preview
MQL5 中的策略可视化:在标准图表中展示优化结果

MQL5 中的策略可视化:在标准图表中展示优化结果

在本文中,我们编写了一个可视化优化过程的示例,并显示了四个优化标准的前三个步骤。我们还将提供一个机会,从三个最佳通过中选择一个,以便在表格和图表上显示其数据。
preview
从基础到中级:浮点数

从基础到中级:浮点数

本文简要介绍浮点数的概念。由于这篇文章非常复杂,请仔细阅读,不要期望很快掌握浮点数系统。随着时间的推移,当你获得使用它的经验时,它才会变得清晰。但本文将帮助您理解为什么您的应用程序有时会产生与预期不同的结果。
preview
从新手到专家:使用 MQL5 制作动画新闻标题(七)—— 新闻交易的后冲击策略

从新手到专家:使用 MQL5 制作动画新闻标题(七)—— 新闻交易的后冲击策略

在重大经济新闻发布后的第一分钟内,市场出现剧烈波动的风险极高。在那短暂的时间窗口内,价格走势可能不稳定且波动剧烈,经常会触发两个方向的挂单。在发布后不久 —— 通常在一分钟内 —— 市场趋于稳定,恢复或纠正更典型的波动性。在本节中,我们将探讨新闻交易的另一种方法,旨在评估其作为交易者工具包中有价值的补充的有效性。继续阅读,了解本讨论中的更多见解和细节。
preview
从新手到专家:使用 MQL5 制作动画新闻标题 (三) — 指标洞察

从新手到专家:使用 MQL5 制作动画新闻标题 (三) — 指标洞察

在本文中,我们将通过引入专门的指标洞察通道来推进新闻标题EA —— 一个紧凑的图表显示,显示由RSI、MACD、随机震荡指标和 CCI 等流行指标生成的关键技术信号。这种方法消除了 MetaTrader 5 终端上多个指标子窗口的需要,使您的工作空间保持干净高效。通过利用 MQL5 API 在后台访问指标数据,我们可以使用自定义逻辑实时处理和可视化市场洞察。加入我们,探索如何在 MQL5 中操纵指标数据,以创建一个智能且节省空间的滚动洞察系统,所有这些都在您的交易图表上的一个水平通道内。
preview
集成学习模型中的门控机制

集成学习模型中的门控机制

在本文中,我们继续探讨集成模型,重点讨论“门控”的概念,尤其是门控如何通过整合模型输出来提升预测准确性或模型泛化能力。
preview
Connexus观察者模式(第8部分):添加一个观察者请求

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

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

克服机器学习的局限性(第二部分):缺乏可重复性

本文探讨了即便使用相同的策略和金融标的,不同经纪商的交易结果为何仍会存在显著差异,原因在于定价的分散化以及数据差异。本文有助于MQL5开发者理解为何他们的产品在MQL5市场上的评价褒贬不一,并敦促开发者针对特定经纪商调整方法,以确保结果透明且可重复。如果这一做法能被广泛地采用,将有望成为我们社区重要的特定领域最佳实践。
preview
从基础到中级:结构(四)

从基础到中级:结构(四)

在本文中,我们将探讨如何创建所谓的结构化代码,即将处理变量和信息的整个上下文和方法都置于一个结构中,从而为任何代码的实现创造一个合适的上下文环境。因此,我们将探讨使用代码私有部分来区分公有部分和非公有部分的必要性,从而遵守封装原则,并保留创建数据结构时的上下文。
preview
在 MQL5 中创建交易管理员面板(第十部分):基于外部资源的界面

在 MQL5 中创建交易管理员面板(第十部分):基于外部资源的界面

今天,我们将深入挖掘 MQL5 的潜力,利用外部资源(例如 BMP 格式的图片)为交易管理面板打造独具风格的主界面。文中演示的策略在打包多种资源(包括图片、声音等)以实现高效分发时尤为实用。欢迎随我们一起探讨,如何利用这些功能为我们的 New_Admin_Panel EA 实现现代、美观的界面设计。
preview
重构经典策略(第十三部分):让我们的交叉策略迈向新维度(2)

重构经典策略(第十三部分):让我们的交叉策略迈向新维度(2)

欢迎参与讨论,一起探索移动平均线交叉策略的更多改进方法。我们将运用数据科学技能,致力于将策略的滞后性降至更低水平,从而提升其可靠性。众所周知,将数据投影到更高维度有时能提高机器学习模型的性能。我们将向交易者展示这一做法的实际意义,并说明如何利用MetaTrader 5交易终端运用这一强大原理。
preview
从基础到中级:指标(一)

从基础到中级:指标(一)

在本文中,我们将创建第一个完全实用和功能齐全的指标。目标不是展示如何创建应用程序,而是帮助您了解如何开发自己的想法,并让您有机会以安全、简单和实用的方式应用它们。
preview
开发回放系统(第 60 部分):玩转服务(一)

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

很长一段时间以来,我们一直在研究指标,但现在是时候让服务重新工作了,看看图表是如何根据提供的数据构建的。然而,由于整个事情并没有那么简单,我们必须注意了解前方等待我们的是什么。
preview
MQL5自优化智能交易系统(第八部分):多策略分析(3)—— 加权投票机制

MQL5自优化智能交易系统(第八部分):多策略分析(3)—— 加权投票机制

本文将探讨如何确定集成策略中最优的策略数量 —— 这是一个复杂问题,而借助MetaTrader 5的遗传算法优化器可以轻松解决。同时,我们也会使用MQL5云端计算作为核心资源,加速回测与优化过程。具体而言,本篇内容将为后续开发统计评估模型奠定基础,用于基于初始集成结果评估并改进交易策略。
preview
Connexus请求解析(第六部分):创建HTTP请求与响应

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

在Connexus库系列文章的第六篇中,我们将聚焦于完整的HTTP请求,涵盖构成请求的各个组件。我们将创建一个表示整个请求的类,这将有助于将之前创建的各个类整合在一起。
preview
MQL5 MVC架构中表格视图与控制器组件:简单控件

MQL5 MVC架构中表格视图与控制器组件:简单控件

本文探讨了如何在MVC(模型 - 视图 - 控制器)架构下实现表格,重点介绍简单控件,它们是构建复杂视图组件的基础。控制器主要用来处理用户与元素、元素与元索之间的交互。这是关于视图组件的第二篇文章,也是关于为MetaTrader 5客户端创建表格系列文章中的第四篇。
preview
从基础到中级:FOR 语句

从基础到中级:FOR 语句

在本文中,我们将了解 FOR 语句最基本的概念。了解这里将显示的所有内容非常重要。与我们迄今为止讨论的其他语句不同,FOR 语句有一些怪癖,很快就会变得非常复杂。所以不要让这样的事情堆积起来,尽快开始学习和练习。
preview
Connexus助手(第五部分):HTTP方法和状态码

Connexus助手(第五部分):HTTP方法和状态码

在本文中,我们将了解HTTP方法和状态码,这是网络上客户端与服务器之间通信的两个非常重要的部分。了解每种方法的作用,可以让您更精确地发出请求,告知服务器您想要执行的操作,从而提高效率。
preview
从基础到中级:指标(二)

从基础到中级:指标(二)

在本文中,我们将研究如何实现移动平均值计算,以及在执行此计算时应该采取哪些预防措施。我们还将讨论如何重载 OnCalculate 函数,以便了解何时以及如何使用不同的模型。
preview
从基础到中级:运算符优先级

从基础到中级:运算符优先级

这绝对是纯理论上最难解释的问题。这就是为什么你需要练习我们在这里讨论的所有内容。虽然这起初看起来很简单,但操作符的话题只有在实践中结合不断的教育才能理解。
preview
从基础到中级:递归

从基础到中级:递归

在本文中,我们将探讨一个非常有趣且颇具挑战性的编程概念,尽管应该非常谨慎地对待它,因为它的误用或误解会将相对简单的程序变成不必要的复杂程序。但是,当正确使用并完全适应同样合适的情况时,递归成为解决问题的绝佳盟友,否则这些问题会更加费力和耗时。此处提供的材料仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
从基础到中级:模板和类型名称(二)

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

本文解释了如何处理您可能遇到的最困难的编程情况之一:在同一个函数或过程模板中使用不同的类型。尽管我们大部分时间只关注函数,但这里介绍的所有内容都是有用的,并且可以应用于过程。
preview
从基础到中级:数组(一)

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

本文是迄今为止所讨论的内容与新的研究阶段之间的过渡。要理解这篇文章,您需要阅读前面的文章。此处提供的内容仅用于教育目的。在任何情况下,除了学习和掌握所提出的概念外,都不应出于任何目的使用此应用程序。
preview
精通日志记录(第五部分):通过缓存和轮转优化处理程序

精通日志记录(第五部分):通过缓存和轮转优化处理程序

本文通过为处理器添加格式化器、引入用于管理执行周期的 CIntervalWatcher 类、以及采用缓存和文件轮转进行优化,并辅以性能测试和实际示例,从而改进了该日志库。通过这些改进,我们确保了一个高效、可扩展且能适应不同开发场景的日志系统。
preview
从基础到中级:事件(一)

从基础到中级:事件(一)

鉴于目前所展示的一切,我认为我们现在可以开始实现某种应用程序,以便直接在图表上运行某些交易品种。然而,首先我们需要讨论一个对初学者来说可能相当困惑的概念。也就是说,在 MQL5 中开发并用于在图表上显示的应用程序的创建方式与我们迄今为止看到的不同。在本文中,我们将开始更好地理解这一点。
preview
在训练中激活神经元的函数:快速收敛的关键?

在训练中激活神经元的函数:快速收敛的关键?

本文研究了在神经网络训练背景下,不同激活函数与优化算法之间的相互作用。我们特别关注了经典的 ADAM 算法及其种群版本在处理多种激活函数(包括振荡的 ACON 和 Snake 函数)时的表现。通过使用一个极简的 MLP (1-1-1) 架构和单个训练样本,我们将激活函数对优化的影响与其他因素隔离开来。文章提出了一种通过激活函数边界来管理网络权重的方法,以及一种权重反射机制,这有助于避免训练中的饱和和停滞问题。
preview
市场模拟(第 11 部分):套接字(五)

市场模拟(第 11 部分):套接字(五)

我们开始实现 Excel 和 MetaTrader 5 之间的连接,但首先我们需要了解一些关键点。这样,你就不必绞尽脑汁去弄清楚为什么有些东西有效或无效。在您对集成 Python 和 Excel 的前景感到沮丧之前,让我们看看如何(在某种程度上)使用 xlwings 通过 Excel 控制 MetaTrader 5。我们在这里展示的内容将主要集中在教育目标上。但是,不要以为我们只能做这里涵盖的事情。