MQL5 编程示例的文章

icon

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

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

添加一个新的文章
最近 | 最佳
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)计算止损位。本文将讲解系统常量、自定义枚举,以及趋势跟踪和均值回归模式的逻辑,同时强调代码模块化与未来遗传算法优化的扩展性。该方法支持灵活的入场/出场条件,通过让较低的时间框架入场与较高的时间框架趋势保持一致,减少信号滞后、优化交易时机。
preview
从基础到中级:结构(四)

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

在本文中,我们将探讨如何创建所谓的结构化代码,即将处理变量和信息的整个上下文和方法都置于一个结构中,从而为任何代码的实现创造一个合适的上下文环境。因此,我们将探讨使用代码私有部分来区分公有部分和非公有部分的必要性,从而遵守封装原则,并保留创建数据结构时的上下文。
preview
MQL5自优化智能交易系统(第八部分):多策略分析(3)—— 加权投票机制

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

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

MQL5 中的奇异谱分析(SSA)

本文专为不熟悉奇异谱分析概念、希望充分理解并运用 MQL5 内置相关工具的读者编写。
preview
构建动态多品种EA(第三部分):均值回归与动量策略

构建动态多品种EA(第三部分):均值回归与动量策略

在本文中,我们将继续讲解构建动态多品种智能交易系统(EA)的第三部分内容,重点聚焦于均值回归策略与动量交易策略的融合。我们将详细拆解如何检测价格对均值的偏离(通过Z-分数)并据此执行交易,以及如何在多个外汇对上测算动量,以此确定交易方向。
preview
混沌优化算法(COA)

混沌优化算法(COA)

本文介绍一种改进型混沌优化算法(COA),该算法将混沌特性与自适应搜索机制相结合。算法通过一组混沌映射与惯性分量对搜索空间进行遍历探索。文章阐述了金融优化领域中混沌方法的理论基础。
preview
从基础到中级:结构(三)

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

在本文中,我们将探讨什么是结构化代码。许多人将结构化代码与有组织的代码混淆,但这两个概念之间存在差异。这正是本文将要讨论的内容。尽管你在初次接触这类代码编写时可能会感到其明显的复杂性,但我已尽可能地以简单易懂的方式讲解这一主题。然而,本文只是迈向更宏大目标的第一步。
preview
风险管理(第五部分):将风险管理系统集成到 EA 中

风险管理(第五部分):将风险管理系统集成到 EA 中

在本文中,我们将实现在先前文章中开发的风险管理系统,并添加在其他文章中描述的订单区块指标。此外,我们将进行一次回测,以便比较启用风险管理系统前后的结果,并评估动态风险的影响。
preview
市场模拟(第 14 部分):套接字(八)

市场模拟(第 14 部分):套接字(八)

许多程序员可能会认为,我们应该放弃使用 Excel,直接使用 Python,使用一些允许 Python 生成 Excel 文件以供以后分析结果的包。不过,正如前一篇文章提到的,虽然这个解决方案对于很多程序员来说是最简单的,但它不会被一些用户接受。在这种特殊情况下,用户总是正确的。作为程序员,我们必须找到一种让一切都能正常工作的方法。
preview
价格行为分析工具包开发(第二十九部分):暴涨与暴跌拦截EA

价格行为分析工具包开发(第二十九部分):暴涨与暴跌拦截EA

了解暴涨与暴跌拦截EA如何将您的图表转变为一个主动预警系统 —— 通过超高速扫描价格变动速度、检查波动率激增情况、确认趋势走向以及运用关键枢轴区域过滤条件,精准识别市场的爆发性行情。该工具以清晰的绿色“暴涨”和红色“暴跌”箭头为您的每一次决策提供指引,助您排除市场杂音,以前所未有的方式把握市场价格飙升的机遇。深入探究其工作原理,了解它为何能成为您下一个不可或缺的交易优势。
preview
精通日志记录(第九部分):实现构造器模式并添加默认配置

精通日志记录(第九部分):实现构造器模式并添加默认配置

本文将演示如何借助构造器模式与自动默认配置,大幅简化 Logify 库的使用流程。文中详细讲解了专用构造器的结构设计、智能代码补全功能的运用方式,以及如何确保日志无需手动配置即可正常运行。同时,本文还针对 MetaTrader 5 build 5100 版本的相关调整进行了适配。
preview
MQL5交易管理面板开发(第十二部分):汇率计算器的集成

MQL5交易管理面板开发(第十二部分):汇率计算器的集成

精准计算核心交易价值,是每位交易者必不可少的日常工作。本文介绍如何将汇率计算器集成至交易管理面板,以此拓展多面板交易管理系统的功能。在执行交易时,快速确定风险敞口、头寸规模及潜在盈利至关重要,这一新功能旨在使面板内参数的计算过程更高效、更直观。让我们共同探索MQL5在构建高级交易面板中的实战应用。
preview
从基础到中级:指标(四)

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

在本文中,我们将探讨如何轻松创建和实施烛形着色操作方法。交易者们非常重视这一概念。在实现此类操作时,必须注意确保柱形或烛形保持其原有的外观,并且不会妨碍逐根烛形的解读。
preview
价格行为分析工具包开发(第二十七部分):利用移动平均线进行流动性扫单

价格行为分析工具包开发(第二十七部分):利用移动平均线进行流动性扫单

理解价格走势背后的微妙动态,能让您获得至关重要的优势。流动性扫单便是这样一种现象,大型交易者(尤其是机构)会刻意运用这一策略,推动价格突破关键支撑位或阻力位。这些价位往往集中了零售交易者的止损单,从而形成流动性池,大资金玩家可以借此机会买入或卖出大额头寸,且滑点极小。