MQL5 编程示例的文章

icon

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

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

添加一个新的文章
最近 | 最佳
preview
简化MQL5中的数据库操作(第一部分):数据库与SQL简介

简化MQL5中的数据库操作(第一部分):数据库与SQL简介

本文会讲解如何运用MQL5的原生函数操作数据库。我们的内容涵盖建表、数据插入、更新、删除以及数据导入导出,全部配有示例代码。本文可以帮助读者扎实理解数据访问的内部工作机制,同时为后续ORM相关内容做好铺垫 —— 我们将在MQL5中构建一个迷你ORM。
preview
MQL5自优化智能交易系统(第十三部分):基于矩阵分解浅谈控制理论

MQL5自优化智能交易系统(第十三部分):基于矩阵分解浅谈控制理论

金融市场不可预测,那些在历史回测中表现盈利的交易策略,投入实盘后往往会失效。究其原因:大多数策略部署后逻辑固定,无法自适应市场,也不能从失误中学习。我们借鉴控制理论思想,利用反馈控制器监测策略与市场的交互情况,并调整策略行为,使其趋向盈利。测试结果表明:在简单移动平均策略中加入反馈控制器后,利润提升、风险降低、交易效率提高,证明该方案在交易领域具备巨大潜力。
preview
重构经典策略(第十五部分):日线突破交易策略

重构经典策略(第十五部分):日线突破交易策略

早在计算机出现之前,人工交易者就已投身金融市场,并总结出指导交易决策的经验法则。在本文中,我们重新研究一套知名的突破策略,来检验这种从实战中总结的市场逻辑,能否与系统化交易方法抗衡。研究结果表明:原始策略虽然胜率很高,但存在稳定性差、风险管控不足的问题。通过策略优化,我们展示如何将主观交易经验改造为更加稳健的算法交易策略。
preview
MQL5自优化智能交易系统(第十二部分):利用矩阵分解构建线性分类器

MQL5自优化智能交易系统(第十二部分):利用矩阵分解构建线性分类器

本文探讨矩阵分解在算法交易中的强大作用,重点介绍其在 MQL5 程序里的应用。从回归模型到多目标分类器,我们通过实战示例演示如何借助 MQL5 内置函数轻松集成这类技术。无论你是预测价格方向,还是构建指标行为模型,这份教程都为你使用矩阵方法搭建智能交易系统打下坚实基础。
preview
从基础到进阶:对象事件(II)

从基础到进阶:对象事件(II)

本文将介绍由对象触发的最后三类事件的工作原理。理解这些内容会非常有意思,因为文末我们要实现的功能在很多人看来有些疯狂,但它完全可行,并且效果十分惊艳。
preview
从基础到进阶:处理鼠标事件

从基础到进阶:处理鼠标事件

阅读本文相关的此类技术资料,仅仅浏览和研究代码,绝对不足以理解其中涉及的过程。实际上,您需要编译出可执行程序,并在任意图表上运行它。只有这样,您才能体会到那些单靠看代码极难掌握的细节,例如结合键盘与鼠标来创建某些元素。
preview
从新手到专家:报表 EA — 搭建工作流程

从新手到专家:报表 EA — 搭建工作流程

经纪商通常会根据预定的时间表定期提供交易账户报表。这些公司通过其 API 技术,可以访问您的账户活动和交易历史,从而为您生成业绩报表。同样,MetaTrader 5 终端会存储您交易活动的详细记录,这些记录可以使用 MQL5 来创建完全定制的报表,并定义个性化的交付方式。
preview
从基础到进阶:图表对象(I)

从基础到进阶:图表对象(I)

在本文中,我们将开始讲解如何在图表上直接操作图形对象。相关示例使用专为演示编写的代码实现。图形对象编程十分有趣,能给人带来许多快乐。由于这是我们初次接触该主题,将从非常基础的内容入手。
preview
通过图表同步简化技术分析

通过图表同步简化技术分析

图表同步作为简化技术分析的工具,可保证同一交易品种的所有周期图表,统一展示趋势线、矩形、指标等各类图形对象。诸如平移、缩放、切换品种等操作会在所有已同步图表上体现,交易者能够在多个周期下流畅地查看并对比同一价格走势环境。
preview
从新手到专家:使用MQL5实现动态新闻标题(9)—— 新闻交易中的单图表多品种管理

从新手到专家:使用MQL5实现动态新闻标题(9)—— 新闻交易中的单图表多品种管理

新闻行情往往伴随着剧烈波动,交易者需要在极短时间内管理多个持仓与交易品种。在本文中,我们将把多品种功能集成到新闻标题EA中,以集成多品种功能的方式应对多品种交易的挑战。接下来我们一起探讨,如何借助MQL5算法交易,让多品种交易变得更加高效、强大。
preview
从基础到中级:在 MetaTrader 5 沙箱中处理文件

从基础到中级:在 MetaTrader 5 沙箱中处理文件

你知道什么是沙箱吗?你知道怎么操作它吗?如果这两个问题的答案都是“否”,请阅读本文以了解沙箱的基本工作原理。您还将了解为什么 MetaTrader 5 使用沙箱来保护其某些内部数据的完整性。本文所提供的材料纯粹用于教学目的。在任何情况下,你都不应将该应用程序视为最终产品,其目的仅限于研究所呈现的概念。
preview
价格行为分析工具包开发(第三十七部分):市场情绪偏向计

价格行为分析工具包开发(第三十七部分):市场情绪偏向计

市场情绪是影响价格走势最容易被忽视的强大因素之一。尽管大多数交易者依赖滞后指标或是主观猜测,但市场情绪偏向计(STM)智能交易系统(EA)能够将原始市场数据转化为清晰的可视化指引,实时显示市场倾向看涨、看跌还是保持中性。这让确认交易、避免虚假入场信号以及更有效地把握市场参与时机变得更加容易。
preview
从基础到中级:对象事件(四)

从基础到中级:对象事件(四)

在本文中,我们将完成上一篇文章中已经开始的内容:一种直接在图表上以完全交互的方式调整对象大小的方法。尽管许多人认为创建这样的功能需要对 MQL5 有更深入的了解,但您将看到,只需运用简单的概念和基础知识,我们就可以实现一种直接在图表上操作对象的方法。这样最终会得到一个既有趣又相当吸引人的结果。
preview
从基础到中级:对象事件(三)

从基础到中级:对象事件(三)

在本文中,我们将为下一篇文章所涵盖的内容奠定基础。我们还将探讨如何使 OBJ_LABEL 对象完全可交互,以便进行编辑和移动。换句话说,我们无需打开“对象属性”对话框,即可更改 OBJ_LABEL 对象的文本和位置。
preview
开发多币种 EA(第 28 部分):添加平仓管理器

开发多币种 EA(第 28 部分):添加平仓管理器

在并行运行多个策略时,您可能希望定期关闭所有持仓,并重新启动策略。现有代码仅允许通过手动操作来实现这一行为。让我们尝试将这一部分自动化。
preview
从基础到中级:对象事件(一)

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

在本文中,我们将探讨当图表上的某个对象发生变化时,MetaTrader 5 可以生成的六个事件中的三个。从用户交互的角度来看,这些事件非常有用。这是因为,如果不了解这些事件,在尝试为特定目的管理对象时,我们将不得不付出更多的努力来维护特定的图表配置。
preview
构建动态多品种EA(第四部分):波动率与风险调节

构建动态多品种EA(第四部分):波动率与风险调节

本阶段将对多品种 EA 进行精细化调优,依托 ATR 等波动率指标实时调整交易手数与风险敞口,提升不同市场环境下策略的稳定性、风控能力与整体绩效。
preview
从基础到中级:对象(四)

从基础到中级:对象(四)

这可能是迄今为止最有趣的一篇文章。原因在于,我们将修改 MetaTrader 5 中已有的一个对象,以创建另一个原本不在该平台上的对象。当然,我们接下来要介绍的内容可能看起来有点疯狂,但它确实有效,并且具有非常有趣的用途。
preview
精通日志记录(第十部分):通过抑制机制避免日志重复输出

精通日志记录(第十部分):通过抑制机制避免日志重复输出

我们在 Logify 函数库中搭建了一套日志抑制系统。本文详细讲解 CLogifySuppression 类如何通过可配置规则过滤重复、无关日志消息,减少控制台冗余信息。同时本文还介绍外部配置框架、参数校验机制以及完整测试方案,保障 EA、指标开发过程中日志记录能力稳定、灵活。
preview
利用灰色模型进行交易预测

利用灰色模型进行交易预测

本文探讨灰色模型(GM)在金融时间序列预测中的应用。我们将介绍GM的工作原理,以及其在金融序列上的具体应用方式。同时也会讨论该类模型在交易场景中的优势与局限性。
preview
从基础到中级:对象(三)

从基础到中级:对象(三)

在今天的文章中,我们将探讨如何实现一个极具吸引力和趣味性的交互系统,特别是对于那些刚开始学习 MQL5 编程的人来说。这里并没有任何全新的内容。得益于我对这个主题的处理方式,理解起来会容易得多,因为我们将通过实践,了解如何使用结构化的方法,以实用且引人入胜的目标来开发程序。
preview
从新手到专家:用MQL5实现动态新闻头条(八)—— 新闻交易快捷交易按钮

从新手到专家:用MQL5实现动态新闻头条(八)—— 新闻交易快捷交易按钮

虽然算法交易系统可以实现自动化操作,但许多新闻交易者与剥头皮交易者更倾向于在高影响力新闻事件和快节奏行情中主动掌控交易,这就要求具备快速的订单执行与管理能力。这一点凸显了对直观前端交互工具的需求 —— 这类工具需集成实时新闻推送、财经日历数据、指标分析、AI分析以及高响应交易控件。
preview
从基础到中级:对象(二)

从基础到中级:对象(二)

在今天的文章中,我们将探讨如何使用代码以一种简单的方式控制某些对象属性。我们还将了解自定义应用程序如何将多个对象放置在同一个图表上。此外,我们将开始认识到,为我们计划实现的任何指标分配一个简称的重要性。
preview
MQL5中的自优化智能交易系统(第十一部分):线性代数基础入门

MQL5中的自优化智能交易系统(第十一部分):线性代数基础入门

在本文中,我们将为使用MQL5矩阵与向量API中强大的线性代数工具奠定基础。想要熟练运用此套API,我们必须牢固掌握支撑这些方法合理使用的线性代数原理。本文旨在让读者直观理解,作为MQL5算法交易者,入门并利用这一强大库所需的一些最重要的线性代数规则。
preview
MQL5 MVC范式下的表格视图与控制器组件:可调整尺寸的元素

MQL5 MVC范式下的表格视图与控制器组件:可调整尺寸的元素

在本文中,我们将实现通过鼠标拖动控件的边缘和角点来调整控件大小的功能。
preview
价格行为分析工具包开发(第34部分):借助高级数据采集管道将原始市场数据转化为预测模型

价格行为分析工具包开发(第34部分):借助高级数据采集管道将原始市场数据转化为预测模型

你是否曾错过市场突然的尖峰行情,或者在行情发生时措手不及?预判实时行情的最佳方法是从历史形态中学习。为了训练一个机器学习模型,本文首先向您展示如何在 MetaTrader 5 中创建一个脚本,用于摄取历史数据并将其发送到 Python 进行存储 —— 为您的尖峰检测系统奠定基础。继续阅读,了解每个步骤的实际操作。
preview
在 MQL5 中实现保本机制(第 2 部分):基于 ATR 和风险回报比的保本机制

在 MQL5 中实现保本机制(第 2 部分):基于 ATR 和风险回报比的保本机制

本文将完成 MQL5 中基于 ATR 和风险回报比(RRR)的保本机制实现,并从零开始开发一个类,使得在无需重新输入参数的情况下即可轻松切换保本模式。为评估每种保本类型的有效性,我们将进行多次回测,并在算法交易的背景下分析它们各自的优缺点。
preview
无需真实期权的期权交易(第二部分):实盘中的应用

无需真实期权的期权交易(第二部分):实盘中的应用

本文探讨了简单的期权策略及其在MQL5中的实现。我们将开发一个基础 EA,并逐步对其进行升级,使其变得更加复杂。
preview
从基础到中级:函数指针

从基础到中级:函数指针

在编程方面,您可能已经听说过指针。但是您知道我们可以在 MQL5 中使用这种类型的数据吗?当然,必须以一种让我们始终保持控制、避免程序在执行时出现异常行为的方式来使用它。尽管如此,由于这是一个具有非常特定目的且针对特定类型任务的功能,因此很少听到有人讨论指针是什么以及如何在 MQL5 中使用它。
preview
开发多币种 EA(第 27 部分):多行文本显示组件

开发多币种 EA(第 27 部分):多行文本显示组件

如果需要在图表上显示文本,我们可以使用 Comment() 函数。但它的功能相当有限。因此,在本文中,我们将自行开发一个组件 — 一个全屏对话框,该对话框能够显示多行文本,支持灵活的字体设置和滚动功能。
preview
从基础到中级:指标(五)

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

在本文中,我们将探讨如何处理用户更改图表绘制模式的请求。这是必要的,以确保为当前图表绘制模式设计的指标不会显得奇怪,或与 MetaTrader 5 用户的预期不符。
preview
从基础到中级:继承

从基础到中级:继承

毫无疑问,要理解本文所述材料的工作原理和原因,你需要投入大量时间。这是因为这里将要展示的所有内容最初都是面向对象编程的,但实际上它们是基于结构化编程的原理。
preview
从基础到中级:结构(七)

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

在今天的文章中,我们将展示如何着手解决与构建不同元素以及创造更简单、更具吸引力的解决方案相关的问题。尽管内容以学习为导向,因此并不构成生产代码,但深入理解这里将涵盖的概念和知识至关重要。这样,今后我们就能理解我们将展示的代码。
preview
在MQL5中实现盈亏平衡机制(第一部分):基类与固定点数的盈亏平衡模式

在MQL5中实现盈亏平衡机制(第一部分):基类与固定点数的盈亏平衡模式

本文将探讨如何使用MQL5语言,在自动化交易策略中应用盈亏平衡机制。我们会先简要介绍什么是盈亏平衡模式、其实现方式以及可能存在的不同类型。随后,该功能将被集成到我们在上一篇关于风险管理的文章中所构建的Order Blocks智能交易系统(EA)中。为评估盈亏平衡机制的效果,我们会在特定条件下进行两组回测:一组启用盈亏平衡机制,另一组则不启用。
preview
图论:Dijkstra(迪杰斯特拉)算法在交易中的应用

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

Dijkstra(迪杰斯特拉)算法是图论中一种经典的最短路径解决方案,它可以通过对市场网络进行建模来优化交易策略。交易者可以利用它从 K 线图表数据中找到最高效的路线。
preview
MQL5 MVC 范式下表格的视图与控制器组件:容器

MQL5 MVC 范式下表格的视图与控制器组件:容器

在本文中,我们将讨论如何创建一个支持内容滚动的“容器”控件。在此过程中,将对已实现的图形库控件类进行改进。
preview
价格行为分析工具包开发(第三十三部分):K线区间理论工具

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

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

经典策略重构(第14部分):多策略分析

在本文中,我们继续探讨如何构建多策略组合体系,并使用 MT5 遗传算法优化器对策略参数进行调优。本次我们使用 Python 对数据进行分析,结果表明:我们的模型能更准确地预判哪一个策略会表现更优,其预测精度高于直接预测市场收益率。然而,当我们使用这些统计模型对应用程序进行测试时,性能却大幅下滑。我们随后发现,遗憾的是,遗传优化器偏向了高度相关的策略,这促使我们修改方案:将投票权重固定,转而让优化器专注于优化指标参数。
preview
从基础到中级:结构(五)

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

在本文中,我们将探讨如何重载结构化代码。我知道一开始理解起来可能会相当有挑战性,尤其是当你第一次看到它的时候。在尝试深入探讨更复杂、更精细的主题之前,掌握并理解这些概念是非常重要的。
preview
MQL5自优化智能交易系统(第九部分):双移动平均线交叉

MQL5自优化智能交易系统(第九部分):双移动平均线交叉

本文将介绍双移动平均线交叉策略的设计思路:利用更高的时间框架(日线D1)的信号指导更低的时间框架(15分钟M15)的入场,并通过中间风险周期(4小时H4)计算止损位。本文将讲解系统常量、自定义枚举,以及趋势跟踪和均值回归模式的逻辑,同时强调代码模块化与未来遗传算法优化的扩展性。该方法支持灵活的入场/出场条件,通过让较低的时间框架入场与较高的时间框架趋势保持一致,减少信号滞后、优化交易时机。