从首个 EA 到代理式人工智能助手、MCP 和 OpenBLAS:MQL 生态系统的演进历程。
MQL 的历史,就是它从一种简单的交易策略语言转变为一个全面的开发和分析环境的故事。如今,该生态系统融合了 MetaEditor、MQL5、Python、ONNX、代理式人工智能助手、模型上下文协议(MCP)、OpenBLAS 以及 Algo Forge Git 基础设施。

从 EA 的语言到集成开发环境
如今,很难将 MetaEditor 仅仅视作一个代码编辑器。它涵盖文档、编译器、调试器、性能分析器、项目管理、MQL5.COM 集成功能、集中式源代码存储库、Python 集成接口、ONNX 支持、AI 助手、SQLite 数据库支持,以及用编辑表格形式处理 CSV 文件的能力。然而,这种演进并非一朝一夕就完成的。
从其平台最早几代产品开始,MetaQuotes 就一直在朝着一个方向发展:不仅提供图表和下单按钮,还让用户能够用代码描述交易思路,用历史数据对其进行测试,并在无需人工干预的情况下将其投入使用。MQL 的发展历程,就是一部关于如何从一种专为 EA 设计的简易语言逐步蜕变为完整的工程环境的编年史。
互联网并没有保存一切。部分旧页面已完全消失;部分仅保存在互联网档案馆时光机中;还有一些可以在旧论坛存档和新闻文章中找到。尽管如此,仍存有充足资料以揭示主要演进脉络:
外汇图表 → MetaQuotes → MetaTrader → MetaTrader 4 → MetaTrader 5
这种区分很重要。档案中包含各种构建编号、内部版本名称以及旧论坛帖子的标题。然而,要理解该平台的公开历史,最好将其视为产品和理念的演变过程,而不是版本号的序列。这个故事的核心不在于软件发布,而在于交易终端如何逐步演变为开发人员的工作空间。
EA 先于语言出现
最早提及 MetaQuotes 网站的存档记录可追溯至 2001 年 2 月。MetaQuotes Software Corp. 于 2000 年 11 月 27 日正式成立,但关于未来平台和交易自动化的讨论早在更早之前就已经开始。档案中保存了一篇论坛帖子,发布日期为 2000 年 11 月 23 日 — 即该公司正式注册前四天。

这一早期发现之所以尤为引人关注,既不在于该网站的外在呈现,也不在于其技术细节。关键在于,MQL 当时还不存在,而EA(智能交易系统)的概念已经存在了。从一开始,重点就不仅仅是图表和报价,而是交易系统的编程。
这为后续的一切奠定了方向。从第一天起,MetaQuotes 就不把终端视为一个用于监控市场的被动窗口,而是将其视为一个用户可以把交易思路形式化为代码并将执行委托给软件的环境。
MetaQuotes 和 MQL 的第一个版本
MQL 首次被公开提及是在 2001 年 11 月 。当时发布了 MetaQuotes 1.78 版本,引入了使用平台内部的 MetaQuotes 语言创建自定义交易策略 — 即 EA — 的功能。
当时的公告已经概述了该平台的未来长期愿景:EA(智能交易系统)需要定义交易逻辑,通过历史数据测试,自动执行账户操作,并在无需人工干预的情况下管理持仓。
以当今的标准来看,第一代 MQL 显得非常简陋。其全部规范内容仅容纳于一个 HTML 页面之内。这种语言没有循环、数组,也没有完整程序所具有的常见结构。计算中使用了一小部分预定义的浮点变量。
然而,仅凭语法就对这一里程碑式的成就做出判断是错误的。真正的突破不在于语言的表达能力,而在于其集成程度。EA 直接在免费客户端内部运行,能够访问时间序列和技术指标,分析市场,并向服务器发送交易订单。
这标志着一个原则的出现,该原则后来成为了整个 MQL 生态系统的标准:交易策略不是必须手动输入到终端的外部信号,而是交易平台内的一个可执行程序。
MetaTrader:新平台,新规模
2002 年 5 月,新版 MetaTrader 平台开始公开测试。这远不止是一次外观上的更新 — 它代表着服务器和管理端组件的重大重新设计。公告中提到支持数百种金融工具,包括外汇、差价合约(CFD)、期货和股票市场,支持新的通信协议,并且能够为数千名在线用户提供服务。
这一阶段在 MQL 的发展史上具有重要意义,原因有二。
首先,终端成为了一个更大生态系统的一部分。自动化交易不再仅限于独立应用,而是成为了一个集服务器、管理工具、庞大用户群和各类金融工具于一体的综合系统。
其次,很明显,旧语言已经不够用了。如果期望用户不仅要运行预构建的 EA,还要实际描述交易逻辑,那么语言就必须更接近传统编程语言。
MQL II:该语言开始类似于真正的编程语言
2002 年秋季,MetaTrader 2.03 版本引入了一种新版本的语言:MQL II。

它已不再被单纯视作一组用于构建 EA 的公式。MQL II 文档的长度大约是原始 MQL 的三倍,尽管它仍然可以放在一个 HTML 页面上 。该语言引入了实数变量、字符串变量和布尔变量、数组、for 循环和 while 循环,以及一组扩展的内置函数。其中包括数学函数 Abs、Ceil、Cos、Exp、Floor、Log、Mod、Pow、Round、Sin、Sqrt 和 Tan。
这是向前迈出的重要一步。用户仍然在相对严格的框架内工作:每个源文件本质上定义了一个可执行函数,当金融工具的一个报价变动(tick)到来时,该函数就会被执行。然而,在这个框架内,已经可以实现更复杂的逻辑,并使用条件、循环、数组和数学计算。
后来,可以调用外部编译的文件,这在一定程度上解决了单个源文件中没有自定义函数的问题。从内部来看,当时的实现与未来的 MQL4 和 MQL5 相去甚远:代码是在基于堆栈的机器上运行的,该机器是围绕逆波兰表示法构建的。但对用户来说,这并不是最重要的。关键在于,交易策略正逐渐从一组条件演变为一个完整的程序。
在语法方面,MQL II 与 Pascal 类似。这也是有意为之。Pascal 被认为是学习编程语言中最容易上手的一种,这与 MetaQuotes 当时的理念完美契合:交易终端的每个用户都应该有机会开发自己的交易策略。
自定义指标:MQL 不再局限于 EA
2003年春季,MQL 的发展又向前迈出了重要一步。3月份,终端新增了内置指标和文件函数:FileOpen、FileClose、FileDelete、FileSize、FileTell、FileSeek、FileWrite、FileReadNumber、FileReadString 等。
但真正的转折点出现在 2003 年 4 月:MetaTrader 3.10 版本引入了对 MQL 中自定义指标和函数的支持。

这扩展了语言的功能。在此之前,MQL 主要与 EA 相关:用户描述交易策略,终端在每个报价时执行该策略。自定义指标引入了一种不同的用例:交易者现在不仅可以编程制定交易决策,还可以编程制定自己的市场分析方法。
因此,MQL 开始涵盖交易员工作的两个截然不同的方面:制定交易决策和构建分析工具。随着时间的推移,这种组合将成为 MetaTrader 4 的标准配置:在同一个环境中,EA、指标、脚本和库将被视为不同类型的程序。
过渡阶段:从简单到成熟的语言
到 2003 年中期,情况已经变得很明显,下一个主要平台不能仅仅是现有旧架构的简单扩展。需要一款新产品、一种新语言和一个新环境。
在开发过程中,有一些过渡性解决方案在公共互联网上几乎未留下任何痕迹。但变化的方向是明确的。开发者决定摒弃“一个源文件=一个函数”的模式、基于堆栈的执行方式以及过于教学化的语法。未来的语言将更接近类 C 语言,支持更复杂的程序结构,并允许用户不仅构建简单的 EA,还能构建复杂的交易系统。
这也标志着理念的转变。起初,大致的想法是:每个交易者都应该能够制定自己的策略。在 MQL4 开发之际,这一理念已变得更加明确:任何熟练的用户都应能够在不离开终端的情况下,编写任何复杂程度的交易策略。
与此同时,简单性仍然是首要考虑因素。简单的策略本应保持其简单性。但复杂性的上限必须大幅提升。
MetaTrader 4 和 MQL4:终端变成了集成开发环境(IDE)
MetaTrader 4 的开发始于 2003 年夏季。在当时的讨论中,开发者们逐渐透露了其未来的功能:更先进的测试、访问不同交易品种和时间范围的时间序列、扩展的交易功能、脚本、带有大量指标缓冲区的自定义指标,以及从动态链接库(DLL)调用外部函数。2004 年 2 月 5 日, 发布了一个 MQL4 程序源代码示例,供开发人员查阅。
到 2004 年初,情况已经变得很明显,这不会是一个小规模的更新。该系统基本上是从零开始重写的。这比预期花费的时间更长,但这正是 MetaTrader 4 最终不仅仅是一系列改进,而是一个全新平台的原因。
2004 年 11 月 18 日,MetaQuotes 宣布即将发布 MetaTrader 4 测试版。这一公告的重要性不仅在于其交易和分析功能。一款产品首次将面向大众市场的算法交易的清晰模型集于一身:终端、MetaQuotes Language 4 编程语言、MetaEditor 4集成开发环境、EA、自定义指标和脚本。

从那时起,MetaTrader 就不再仅仅是一个具备自动化功能的交易终端了。MetaTrader 4 成为了一个为开发者提供专用工作空间的平台。
在 MetaQuotes 网站上,MQL4 文档非常简洁:数据类型、操作和表达式、语句、函数、变量、预处理器,以及后续的语言语法。但是,完整的参考文档已内置于 MetaEditor 中。这是一个根本性的设计决策:开发人员无需再每次需要文档时都切换到浏览器。参考资料、源代码和编译工具都可以在一个地方找到。

MQL4 已经是一种功能齐全的过程式编程语言。它引入了用户自定义函数、更熟悉的程序结构、一次性执行的脚本、EX4 文件形式的库,以及从外部 DLL 调用函数的功能。
MetaEditor 已经不仅仅是一个文本编辑器了。它提供了帮助导航、语法高亮显示、编译功能,支持不同的 MQL 程序类型,并内置了文档。至此,使 MetaTrader 4 成为广泛使用的算法交易平台的公式已完全确立:
终端 + 语言 + 编辑器 + 帮助 + 测试 + 社区
2005 年 7 月 1 日,经过漫长的开发过程,MetaTrader 4 作为一个完整的交易平台发布。从那时起,这个故事就不再仅仅讲述一种编程语言的演变,还讲述了生态系统的崛起:一个专为开发者打造的网站代码库、各类文章、交易机器人锦标赛,以及一个庞大的 MQL4 用户社区。
下一部分将继续讨论这一点。
MQL4.COM:语言拥有了自己的社区
MetaTrader 4 发布后,人们逐渐意识到仅凭平台本身是远远不够的。如果用户能够编写 EA、指标、脚本和库,他们也需要文档、示例、讨论、文章以及一个分享代码的平台。
2005 年 11 月 8 日, 一个专为 MQL4 开发者打造的网站 — MQL4.COM 正式上线。
这是重要的一步:MQL4 不再只是交易终端内置的一种语言。它正在成为一个独立的开发者生态系统的中心。网站上出现了论坛、文档、代码库和文章。后来,这些内容不仅提供俄语和英语版本,也开始提供中文版本。
代码库很快就被现成的程序填满了。上线不到一个月,代码库就包含了 50 多个 EA、约 200 个指标、35 个脚本和 17 个库。EA、指标、脚本和库将 MQL4 从一种“内部人士使用”的语言转变为一种广泛使用的实用工具。用户不仅可以从头开始编写程序,还可以研究其他人的代码,修改现有的解决方案,向作者提问,并逐渐找到进入软件开发领域的途径。
值得一提的是,早在2006年,社区的一篇文章就介绍了一款使用人工智能的 EA — 单层神经网络。当时,这还远未成为主流。当时并没有像今天这样对人工智能和机器学习大肆炒作。然而,这种想法本身已经在业界存在:交易策略不仅可以基于规则和指标构建,还可以基于可训练的模型构建。
这一事件有助于解释为何 MQL 的后续发展自然而然地引领至 Python、ONNX、AI 助手和 OpenBLAS。对机器学习的兴趣并非空穴来风。只是平台、语言和计算能力需要时间才能达到支持机器学习所需的水平。
自动交易锦标赛:EA 登台
下一个重大里程碑是自动交易锦标赛。首次使用 MQL4 编写的交易系统竞赛是在 2006 年末举行的。这不仅仅是一场奖金的角逐。此次锦标赛公开展示了 MetaTrader 4 背后的核心概念:EA 能够自主交易,同时其表现可实时监控。
共有 258 名开发者参加了 2006 年的锦标赛。奖金池为 8 万美元,比赛持续了 12 周。在当时,这是一份强有力的公开声明:自动交易不再是一小群程序员专属的领域。它已经成为交易者、经纪商和开发者都可以持续关注的一项公开赛事。
但即便如此,奖项也不是最重要的部分。本次锦标赛是对整个基础设施的一次压力测试。组织者为此准备了服务器硬件,启动了众多终端,确保了 EA 在相同条件下运行,并为观众提供了在线监控结果的机会。
这种做法催生了许多想法,这些想法后来在 MetaTrader 生态系统中被证明是有用的:自动化的 EA 检查、软件保护、虚拟专用服务器(VPS)托管、轻量级客户端终端、网页终端、交易信号,以及最终的应用程序市场。
在 2007 年,参赛者数量增长至 603 人,而在 2008 年,参赛者数量达到了 705 人。这不再仅仅是一次性事件,而是社区规模达到一定程度的标志。人们正在编写交易机器人,讨论算法,比较方法,研究与其他参与者的访谈,并试图理解为什么有些系统能够在现实世界的交易中生存下来,而有些系统在最初几周后就崩溃了。
值得注意的是,神经网络在锦标赛中也持续出现。2007 年的获奖者 Alexander Topchilo 在他的 EA 中使用了神经网络方法,首先用 C++ 开发和测试了该系统,然后将其移植到 MQL4。亚历山大·托普奇洛访谈(Better)
2008 年,列昂尼德·维利奇科夫斯基提出了一种 EA 系统,该系统使用在 NeuroShell 中训练的神经网络。列昂尼德·维利奇科夫斯基访谈(LeoV)
这是整篇文章的一个重要细节。MQL 的历史并不仅仅是其语法的发展史,更是交易者们试图将日益复杂的理念融入终端的故事:从简单的基于指标的规则到统计学、优化、神经网络和机器学习。
2009 年未举办锦标赛。MetaQuotes 正在完成其下一个主要平台 MetaTrader 5 以及新 MQL5 语言的开发。
MQL5:新平台从语言开始
早在 MetaTrader 5 公开发布之前,关于 MQL5 未来的讨论就已经开始了。早在 2007 年,MQL4.COM 上的用户就开始积极讨论他们对这种新语言的期望。2007 年 10 月,在 MQL4.COM 论坛上搜索 “MQL5”,会返回超过 15 页的帖子链接。用户要求更快的性能、更结构化的设计、新的测试功能、更便捷的数据处理以及更现代的编程模型。
从内部来看,发展方向更加激进。新语言的设计旨在摆脱 MQL4 特有的中间表示形式,而是直接生成原生代码。这意味着对语言本身的性能要求和架构要求都发生了变化。
首次存档提及 MQL5.COM 域名可追溯至 2007 年 11 月。一个独立域名已经出现,这一事实表明,这不仅仅关乎一种新的语法,更关乎一个未来的生态系统。

2008 年 3 月 31 日,新的 MQL5 语言在一次讨论即将推出的语言特性的采访中正式发布。这次采访本身并未保存在公共档案中,但日期具有重要意义:甚至在 MetaTrader 5 发布之前,开发者们就开始为社区准备一种新的编程模式。
根据 2009 年夏季的信息,MQL5.COM 网站已经明确承诺即将推出。

2009 年 10 月 12 日,MetaTrader 5 开始进入测试阶段。一个月后,即 2009 年 11 月 18 日,MQL5.community 的测试版 — 一个专为 MQL5 开发者打造的新网站 — 正式上线。
MQL5.community:不只是论坛,更是基础设施
从一开始,MQL5.community 就不是一个普通的论坛。它从一开始就围绕一个更广泛的生态系统结构而构建:文档、论坛、代码库、文章、教育材料,以及随着平台的发展可以添加的新服务。
开发者们努力保留了 MQL4.COM 上已有的功能:讨论、代码库、文章以及熟悉的知识共享模式。但新网站旨在涵盖更广泛的内容。MQL5 更复杂,MetaTrader 5 的目标更远大,因此,社区需要更稳健的基础设施。
一个重要的举措是将账户从 MQL4.COM 迁移过来。用户无需从头开始:他们可以使用现有的账户登录新网站。这连接了两个时代,表明 MQL5 没有抛弃 MQL4 积累的经验,而是在此基础上发展到了一个新的水平。
这创造了一个新的中心:语言、文档、文章、代码、论坛以及未来的服务都被整合到了一个地方。MQL5.community 不再是终端的附加组件,而是平台本身的一部分。
MetaTrader 5 和 MQL5:语言成为一种工程工具
2010 年 6 月 1 日,MetaTrader 5 交易平台发布 。与上一代产品不同,它不是专为外汇交易而设计,还适用于交易所市场的交易。这不仅要求对终端进行变更,还要求对语言进行修改。
与 MQL4 相比,MQL5 是一个重大进步。它已经是一种类似于 C++ 的面向对象编程语言。MQL5 程序被编译为本机 x86 或 x64 代码,从而提供了更高水平的性能。同时,MQL 的核心概念保持不变:用户应既能编写简单的程序,也能编写复杂的交易系统。
交易模式也变得更加复杂。MetaTrader 5 为订单、交易和持仓引入了独立的实体。交易操作更贴近交易所基础设施的现实情况,但对于开发者而言,这意味着需要管理更多的细节。因此,与该语言一同开发的标准库,包括交易类,简化了常见用例的处理。
MQL5 发布之初,内置了约 400 个函数,与当时 MQL4 的函数数量大致相当。但函数数量并非关键,重要的是发展方向。MQL5 被设计为一种用于构建大规模系统的语言:该平台集成了类、事件处理、标准库、测试、优化以及未来服务等功能。
文档中为 MQL4 用户单独设置了一个部分,解释如何迁移到 MQL5。这是必要的:新语言功能更强大,但需要不同的思维方式。如果说 MQL4 让算法交易能够被大众所接触,那么 MQL5 则旨在使其更加面向工程化。
MQL5 锦标赛:新平台面临公开测试
在 2010 年,自动交易锦标赛重新举办,这次是针对 MQL5 EA 的比赛。这是一个合乎逻辑的步骤:新平台需要一次公开演示,开发者需要了解 MQL5 不仅在文档示例中的表现,还要在实际为期三个月的交易机器人竞赛中表现如何。
2010 年的锦标赛共有 314 名参赛者。在 2011 年,有 395 人,而在 2012 年,有 451 人。这些比赛不仅是 MQL4 锦标赛传统的延续,也是新平台优势的展示:更高的性能、全新的策略测试器、更复杂的交易模型以及开发大规模 EA 的能力。
锦标赛再次发挥了多重作用。对于交易者而言,它们是娱乐活动,也是亲眼见证自动化交易运作的机会。对于开发者而言,它们是测试想法的实际试验场。对于 MetaQuotes 而言,它们收集了关于语言、终端、策略测试器、基础设施以及程序在真实世界条件下的行为的反馈。当然,它们也有助于普及 MQL5 语言。
新版 MQL4:MQL5 的反向影响
在 MetaTrader 5 发布后,人们可能以为 MQL4 的开发会逐渐退居次要地位。但事实恰恰相反。MetaTrader 4 庞大的用户基础以及多年来积累的代码都需要进行细致的更新,而非冻结。
在 2013 年 7 月,MetaTrader 4 和 MQL4 宣布了重大更新。这个想法颇为不同寻常:MetaQuotes 并没有强迫所有人将代码从 MQL4 移植到 MQL5,而是尽可能地将新技术基础中的众多功能引入 MQL4。
这促成了 MQL4 和 MQL5 的统一编译器、统一的 MetaEditor、对新开发工具的支持、对 EX4/EX5 文件的更强保护,以及在 MetaTrader 4 中使用市场应用程序的能力。
这对整个生态系统来说都是一个重要的决定。MQL4 并没有成为一种“老一代语言”。它现在包含了类、结构、新的数据类型、事件处理程序、更严格的编译模型、资源支持、新的图形功能,以及与 MQL5 相同的开发工具集。
仅一个月后,MetaTrader 4 集成开发环境(IDE)的测试版发布,其中包括全新的 MQL4 编译器和编辑器。2013 年底,针对更新后的 MetaTrader 4 以及新版的 MQL4 和应用程序市场的公开测试开始。2014 年 2 月 3 日,MetaTrader 4 客户终端 build 600 发布。
这一版本实际上将 MQL4 的历史划分为两个时代。旧版的 MQL4 是一种简单的类 C 语言,非常适合编写 EA 和指标。而新版 MQL4 则与 MQL5 更为接近:它采用了面向对象的编程方式,配备了统一的 MetaEditor 和新的编译器,并且能够创建更复杂的应用程序。
与此同时,MetaTrader 4 保留了其最大的优势:其庞大的现有用户群、程序和知识库并未被抛弃。相反,旧的生态系统被赋予了新的技术基础。
因此,MQL4 和 MQL5 不再像是两个完全不同的世界。一种语言源于自动交易的广泛实践,而另一种语言则诞生于构建更严谨、更强大的工程平台的努力。在 build 600 之后,它们之间出现了一个共同层:MetaEditor、编译器、开发风格、程序保护和 MQL5.community 服务。
至此,MQL 的历史早已超越了 “EA 语言” 的范畴。围绕它形成了一个完整的生态系统:终端、编辑器、文档、代码库、文章、锦标赛、市场、信号、VPS 以及一个庞大的社区。但下一个发展阶段将需要更多:外部数据、分布式计算、机器学习、矩阵、神经网络和高级线性代数。
这就是下一部分要讨论的主题。
MQL5 的演进:语言成长
MetaTrader 5 推出后,MQL5 的开发沿着几个并行轨道进行。一个关注领域是语言本身:它变得更接近 C++,更适合大型项目。第二个关注领域是运行时环境:MQL5 程序不再局限于在图表上运行的 EA 和指标。第三个关注领域是计算:策略测试器、云优化、OpenCL、矩阵、Python 和 ONNX 逐渐扩大了平台内可执行操作的边界。
单独来看,这些更新可能只是一系列版本更新。然而,综合来看,它们揭示了一个更为重要的转变:MQL5 正从一种用于交易机器人的语言演变为一个用于开发、计算、数据分析和与外部技术集成的通用环境。
语言越来越接近 C++
最初,MQL5 被开发为 MQL4 的更严谨、更高效的后续版本。但在其问世的最初几年里,人们逐渐意识到,基本的面向对象语法已不足以满足需求。开发者需要为大型项目提供工具:代码重用、通用算法、更安全的继承、命名空间以及对复杂数据类型的支持。
资源于 2011 年 1 月 19 日引入。 MetaTrader 5 客户端 build 384 。这使得将图像、数据和其他辅助文件直接嵌入到程序中成为可能。后来,引入了资源变量:OpenCL 代码、二进制数据或文本可以作为 MQL5 程序的一部分,而无需将项目转变为外部依赖项的集合。
函数模板于 2012 年 11 月 16 日推出,详情请参见 MetaTrader 5 交易终端 build 722 。
类模板于 2015 年 10 月 23 日 在 MetaTrader 5 build 1200: 分时历史数据和服务的直接支付中推出 。这是迈向通用编程的重要一步。相同的代码可以用于不同的数据类型,而无需手动重写算法。
2016年,该语言新增了几个 C++ 开发人员熟悉的特性:
抽象类于 2016 年 4 月 1 日在 MetaTrader 5 build 1295 中引入。
2016 年 6 月引入了使用 dynamic_cast 的动态类型转换。
接口(interface)于 2016 年 8 月 15 日推出。
final 和 override 修饰符于 2016 年 9 月 16 日添加 — 新版 MetaTrader 5 平台 build 1430:更新了敞口标签页。
这些变化绝非仅仅是表面上的修饰。它们使得构建更严格、更安全的类层次结构成为可能,明确地定义了开发者的意图,并在编译时捕获特定类别的错误。
命名空间在 2019 年 10 月 5 日引入于 MetaTrader 5 build 2170:MQL5中的作用域、策略测试器的重大更新以及内置托管服务。这对于大型项目和第三方库尤为重要:类名、函数名和变量名不再相互冲突,同时代码可以更清晰地组织成模块。
复数(complex) 数据类型在 2021 年 5 月 21 日添加于 MetaTrader 5 build 2940:在工作区展示 MQL5 服务并更新设计定位。这不再是 “EA” 的功能,而是迈向工程和科学计算的一步。复数在谱分析、线性代数、信号处理和许多数值方法中都有应用。
矩阵(matrix)和向量(vector)类型在 2022 年 1 月 28 日添加于 MetaTrader 5 build 3180:MQL5 中的向量和矩阵以及改进的可用性。这代表着在工程和科学计算方面又向前迈进了一步,为与 ONNX 的集成以及即将使用的 OpenBLAS 库奠定了基础。
complexf、vectorcf 和 matrixcf 数据类型于 2024 年 9 月 27 日添加。MetaTrader 5 build 4570:MQL5 中网页版的增强和 OpenBLAS 集成。
MQL5 逐渐具备了不仅适用于编写交易逻辑,还适用于构建大型库、计算模块、模型封装器和基础设施代码的语言特性。
策略测试器作为计算环境
另一条独立的开发路线与策略测试器有关。策略测试器在 MetaTrader 中一直很重要:没有历史测试,自动交易就只是一系列猜测。但在 MQL5 中,策略测试器的功能不再局限于测试 EA。
2012年,引入了OnTesterInit、OnTesterDeinit 和 OnTesterPass 事件处理函数,以及用于处理数据帧的函数:FrameAdd、FrameFirst、FrameNext 和 FrameInputs。这使得测试代理不仅能够向终端发送单一的最终结果,还能发送任意数据。
人们很容易低估这次更新的重要性。在实践中,它使优化过程变得更加灵活。EA 不仅能够返回优化标准,还能传递一组中间结果、统计数据、自定义指标或数据以供进一步分析。
结合 MQL5 云网络,这为分布式计算打开了大门。从形式上看,所有内容都保留在策略测试器的基础设施内,但实际上,MQL5 已经获得了一种并行处理任务的机制,这些任务不一定局限于交易机器人的传统参数扫描。
这是普遍趋势的另一个例子:最初为算法交易开发的工具正逐渐被证明在更广泛的计算场景中同样有用。
MQL5 超越图表
经典的 MQL 程序模型与图表相关联:EA 针对某个交易品种运行,指标在窗口中呈现,脚本执行一次性操作。MQL5 逐步扩展了这一模型。
2012 年 2 月 3 日,MetaTrader 5 交易终端 build 581 中新增了对 OpenCL 的支持。这使得在现有设备上使用并行计算成为可能,并能够加速那些非常适合大规模数据处理的各项任务。
2017 年 12 月 20 日,“MetaTrader 5 build 1730:MetaEditor 中的项目和合成工具”中新增了用于处理自定义交易品种的功能。开发者获得了创建自己的交易品种、填充历史数据、更新价格变动以及构建合成工具的能力。这对研究来说非常重要:不仅可以基于标准经纪商数据来测试想法,还可以基于自定义时间序列、聚合工具和专用报价集来测试。
对 .NET 的原生支持库在 2018 年 10 月 26 日添加 — MetaTrader 5 build 1930:MQL5 中的浮动图表窗口和 .NET 库。MetaEditor 将部分函数导入流程自动化了,使开发人员能够以更简单的方式使用外部代码,而无需手动编写复杂的包装器。
2019 年 2 月 21 日,“MetaTrader 5 build 2005:经济日历、作为服务的 MQL5 程序以及 R 语言的 API” 中引入了一种新型 MQL5 程序,即服务(不附加到任何图表上的程序)。服务可以在后台运行,与终端一起启动,并执行基础设施任务。这极大地改变了 MQL 程序的概念:它不再局限于成为 EA、指标或脚本。
2019 年 2 月 21 日,MetaTrader 5 build 2005 更新中还增加了用于建立 TCP 连接的网络函数。只要在终端设置中明确授权相关地址,MQL5 程序就能通过套接字与外部系统交换数据。这扩大了集成场景的范围:自定义数据源、本地服务、外部分析以及应用程序之间的数据交换。
2019年12月6日,“MetaTrader 5 build 2265:在 MQL5 中实现 3D 可视化,并在策略测试器中配置交易品种” 中新增了数据库支持和DirectX 支持。这些更新看似互不相关,但它们都体现了一个共同的理念:MQL5 不再局限于交易函数调用和指标缓冲区。它新增了数据存储、可视化、外部集成和后台处理等工具。
Python:通往数据分析和机器学习的桥梁
2019 年 6 月 14 日,MetaTrader 5 添加了 Python 集成:MetaTrader 5 build 2085 中实现了 Python 集成,支持 Wine(Linux/macOS)中的市场和信号功能,并对策略测试器进行了重大优化。它是交易平台与更广泛的数据分析领域之间最重要的桥梁之一。
到那时,Python 已经成为机器学习、统计学、数据处理和可视化的标准工具。Python 支持使得从 MetaTrader 5 检索数据并将其用于外部研究工作流程成为可能:构建模型、测试假设、准备数据集、分析结果,然后将见解反馈到交易平台。
再次,我们可以看到相同的发展逻辑。MetaTrader 并不试图取代整个外部世界。相反,该平台为开发者提供了一座桥梁:数据和交易基础设施仍保留在终端中,而研究和机器学习的工作流程则可以在已经存在丰富库生态系统的环境中运行。
ONNX:机器学习模型登陆 MQL5
下一步,机器学习与平台的联系更加紧密。2023 年 3 月 10 日,MetaTrader 5 新增了对 ONNX 的支持,这是一种用于交换机器学习模型的开放格式 — MetaTrader 5 build 3620:网页终端改进、ONNX 支持以及 MQL5 中的加速矩阵乘法。
ONNX 的概念非常适合像 MetaTrader 这样的平台。您可以在终端之外训练模型 — 例如,使用熟悉的库在 Python 中训练 — 然后将其导出到 ONNX,并在 MQL5 程序中使用。这会将训练模型和将其应用于交易逻辑这两项任务分开。
这对开发者来说是一个重大的简化。无需在 MQL5 中手动重写神经网络,或在终端内部构建整个训练基础设施。可以使用外部工具来准备模型,而 MQL5 则可以专注于将模型集成到 EA、指标或研究应用程序中。
因此,MQL 社区对神经网络长期以来的兴趣已呈现出更为成熟的技术形态。2006 年至 2008 年,神经网络 EA 只是爱好者们的孤立实验,而 ONNX 则为开发者提供了一种标准方法,将训练好的模型集成到 MQL5 中。
AI 助手:从提示到成熟智能体
AI 助手的第一个版本于2023 年 6 月 14 日出现在 MetaEditor 中 。它已经缩短了从问题到代码的路径:开发人员可以高亮显示一个代码片段,请求解释,然后接收一个函数实现或修复方案,并手动将结果集成到程序中。这很有用,但从机械层面来看,它仍然是传统聊天形式的演变:一个问题,一个文本回复,复制,然后验证。
2026 年 7 月 24 日,在 MetaTrader 5 build 6060 中,平台切换到了另一种模型。终端与 MetaEditor 均已实现对模型上下文协议(MCP)及代理型人工智能的内置支持。AI 助手不再局限于生成文本:它能够规划一系列操作,并调用平台提供的工具 — 读取数据、查找和修改文件、构建项目、分析交易环境,并返回结构化结果。
开发者明确阐述了这种区别:该平台摒弃了日渐过时的“提问—回答—复制”模式,转而引入了一个能够执行复杂任务的成熟智能体。这标志着规模上的重大变革。该助手不再仅仅是 MQL5 代码片段的生成工具,而是正逐步融入开发者与交易者的工作流程之中,成为其中的参与者。

MCP:AI 与 MetaTrader 之间的标准桥梁
模型上下文协议(MCP)是一个开放标准,通过该协议,AI 智能体可以连接到应用程序数据和功能。对于 MetaTrader 而言,这意味着终端和 MetaEditor 不仅仅是打开聊天窗口的界面,而是提供专业工具的平台。模型不是接收平台的抽象描述,而是获得一个受控的编程接口来进行特定操作。
在 MetaEditor 中,智能体可以检索工作区信息、搜索文件和文本、读取和编辑源代码、创建新程序、检查语法、编译单个文件以及构建项目。在终端中,智能体可以访问市场数据、打开图表、账户参数、持仓、订单和交易历史。单个 MCP 服务器可以添加外部源,如公开行情数据、新闻和其他分析数据。
此架构具备双向运行能力。内置的 AI 助手采用 MetaTrader 与 MetaEditor MCP 工具,而相同的服务器亦可与符合该协议的外部代理系统相连接,这些系统包括OpenAI Codex、Claude Code 及其他解决方案。因此,用户无需受限于单一界面或模型:平台负责提供工具,而智能体则依据具体任务需求进行选择。
系统支持用户自己的 API 密钥,用于 OpenAI、Anthropic、Gemini、DeepSeek、Ollama 和其他兼容的提供商。对于使用 MQL5.community 账户登录的用户,将自动启用免费的 MQL5 Lite 计划:终端和 MetaEditor 之间的 AI 助手设置将同步。
交易终端中的人工智能助手
MetaTrader 5 的内置助手是在交易终端本身的上下文中运行的。它可以解释特定金融工具的当前状况,查看历史报价,查看市场观察中的金融工具,分析持仓和交易历史,识别高风险操作,并生成报告。

在网络工具连接的情况下,智能体可以将终端的内部数据与外部信息相结合。公告中展示的一个场景显示,助手检索了有关某工具的最新新闻,逐步检查材料,并将其与报价进行比较。这不再是对参考源的单一请求,而是一个多步骤分析过程,在此过程中,智能体自行收集上下文所需的各个部分。
交易操作需受单独控制。在设置中,您可以完全禁用它们、允许它们,或要求手动确认。网络请求和命令行操作也可单独控制。助手的建议仅供参考:最终交易决策和责任仍由用户承担。
MetaEditor 中的 AI 助手
在 MetaEditor 中,智能体能够根据自然语言描述创建新的 MQL5 程序,分析现有项目,查找错误,提出修复建议,重构代码,提高代码可读性,并解释复杂算法。与第一个版本的主要区别在于,结果并不局限于聊天中的文本:智能体可以创建或修改文件、运行编译并验证结果。

对于大型代码库而言,这一点尤为重要。该助手能够在多个文件中搜索标识符的定义和用法,读取相关的包含模块,考虑项目结构,并将任务分解为一系列操作来执行。请求的历史记录保存在导航器中的“聊天”标签页中,因此与智能体合作成为项目的一部分,而不仅仅是一次性的代码建议。
Build 6060 还改进了编辑器本身:现在可以折叠代码块,并且所有出现的选定标识符都会被高亮显示。这些特性与人工智能并无直接关联,但它们共同强化了同一个场景 — 即大型项目的分析与维护。
从编写代码到“开发—测试—改进”循环
最重要的开发领域与策略测试器相关。在公开测试帖子中的回复描述了目标自动化工作流程:
- 根据交易者的需求制定策略;
- 运行测试和参数优化;
- 分析报告,修改代码或设置,然后重新运行测试;
- 如果失败或达到可接受的结果,则停止;
- 向用户展示最终版本和报告。
这一情境应与“人工智能将找到一种盈利策略”的承诺区分开来。智能体可以自动化工程周期并测试更多假设,但它无法消除过拟合、源数据中的错误、市场的不稳定性,也无法消除对独立验证的需求。MCP 的价值在于其他方面:测试器、编译器、项目文件和优化结果可以链接成一个受控的操作序列。
在测试阶段,该工作流程逐渐扩展,仍不断添加和配置各个高级策略测试工具。因此,此处所述的完全自主循环应被视为代理系统的发展方向,而非保证任何复杂任务无需用户干预即可执行。
安全性:为智能体提供工具,而非无限制的计算机访问权限
智能体可执行的操作越多,明确的边界就越重要。访问权限基于明确授权的原则。MQL5 工作目录可用于对源文件进行操作,而测试器和日志目录则可限制为只读访问。用户配置文件的访问权限需单独启用。交易、网络访问和命令行也由单独的设置进行控制。
命令行操作 — 如 PowerShell、Python 和其他外部进程 — 功能强大但同时也具有潜在危险,因此在界面上会明确标出,并且可以单独禁用。这种模式将助手转变为通用智能体,但同时也增加了潜在的攻击面。
在论坛上与交易者的讨论中,开发者们还强调了备份和版本控制的重要性。对于智能体开发而言,Git 不仅仅是一种便利工具,更是一种基本的安全机制:更改必须是可见的、可比较的且可逆的。在这里,新的 AI 架构与 MQL5 Algo Forge 无缝集成。
项目说明和技能
智能体仅查看文件是不够的,它还需要理解特定代码库的规则。为此,在 MQL5\Profiles\Agents 目录中使用了 MetaEditor 和MetaTrader 的指令文件。用户可以将默认指令替换为自己的指令,以定义编码风格、命名约定、验证程序和其他持久性要求。
由于这些文件位于 MQL5 区域,因此它们可以与 Algo Forge 中的项目一起存储。因此,存储库不仅可以包含源代码和 README 文件,还可以包含针对 AI 的说明:如何构建项目、哪些文件不得修改、要运行哪些测试,以及结果应以何种格式呈现。
在论坛讨论中,开发者们还为各个项目和技能(可重复使用的、针对代理的专门程序)引入了本地指令。这表明了系统的发展方向:从通用聊天工具转变为可定制的数字项目参与者,它了解平台的工具和特定团队的规则。
矩阵和向量:为严肃的线性代数准备 MQL5
对于机器学习、统计学和数值方法而言,仅靠类、模板和外部集成是远远不够的。掌握一种便捷的方法来处理向量、矩阵和基本线性代数运算也是至关重要的。
2022 年 1 月 28 日,MQL5 引入了矩阵和向量类型。这不仅是从句法角度出发的一个重要变化。矩阵和向量不是作为普通的数组设计的,而是作为具有自身属性和方法的对象设计的。
向量获得了大小,矩阵获得了行和列的维度,并且围绕它们开始开发出一套独立的方法。开发者们获得了一种更自然的编写计算代码的方式:创建矩阵、转置矩阵、矩阵乘法、计算分解、解方程组,以及处理范数、秩和其他数值特征。
到此阶段,MQL5 已经与最初仅具备每笔报价简单 EA 逻辑的语言有了显著不同。该语言现在包含了数学模型的结构,而该平台提供了与 Python、ONNX、OpenCL 和云优化的链接。
但一个真正的数值基础不仅仅需要一个方便的矩阵类型。它还需要一个经过验证的线性代数库,以便在实现复杂方法时可以依赖。因此,下一步重大举措是整合 OpenBLAS。
这就是下一部分要讨论的主题。
为什么选择 OpenBLAS?
当矩阵、向量、复数、ONNX 和机器学习场景出现在 MQL5 中时,下一个问题就不可避免了:接下来应该有哪些数学基础?
您可以手动编写各个方法。您可以添加一些矩阵的快速运算。您可以将自己局限于乘法、分解和解方程组。但这种方法很快就会产生一系列难以开发、测试和维护的分散的函数。
像 MetaTrader 5 这样的平台需要的不仅仅是“另一个快速的库”。它需要一个标准的线性代数基础:广泛、经过验证、可移植且适合逐步扩展 MQL5 方法。
在选择 OpenBLAS 之前,我们也考虑过其他方案:ALGLIB、LIBXSMM、Eigen 和 oneMKL。它们各有优势,但 MQL5 的目标不仅仅是加快单个操作或涵盖一类算法。
ALGLIB以其多功能的数值工具包而闻名:优化、近似、线性代数、统计和其他算法。然而,对于平台内部的基础层而言,不仅功能集很重要,许可模式、库版本、分发条款、集成可预测性和长期支持也很重要。
LIBXSMM擅长处理专门的稠密和稀疏矩阵运算,尤其擅长处理涉及小矩阵和深度学习原语的问题。这使其成为一个有用的工具,但用途较为狭窄。在需要充分利用特定类别运算的情况下,它效果很好,但它并不能取代面向各种线性代数方法的广泛的 LAPACK 基础。
Eigen是一个优秀的 C++ 模板库,用于矩阵、向量、数值求解器和相关算法。但 Eigen 从根本上来说是一种 C++ 方法:一个仅包含头文件的库、模板、表达式模板以及与 C++ 代码的紧密集成。对于内部 MQL5 平台集成,需要不同的关注点:一个稳定的计算层,可以作为实现 matrix、matrixf、matrixc 和 matrixcf 方法的基础。
我们也考虑过oneMKL。它是一个历史悠久、优化能力强、功能广泛的强大数学库。但在平台产品中,速度并非唯一重要的因素。关键因素包括可移植性、供应商锁定程度、分发条款、集成控制以及不同用户配置下行为的可预测性。
事实证明,OpenBLAS是最合适的折衷方案。这是一个开源的、优化的 BLAS 库,它在基本线性代数运算中提供了高性能,并作为更复杂方法的基础。对于 MQL5 来说,关键因素恰恰在于它对 LAPACK 任务的覆盖范围:它不仅是一个快速的单一操作,而且为 SVD、特征值、求解线性方程组、最小二乘问题、分解和解的改进奠定了广泛的基础。
换句话说,选择 OpenBLAS 是一个工程决策,而非出于美观考虑。我们的目标是奠定一个基础,以便我们能够系统地开发 MQL5 的数学方法:从基本的矩阵运算到日益复杂的数值算法。
MQL5 中的 OpenBLAS:从矩阵到完整的数值基础
2024 年 9 月 27 日,MetaTrader 5 build 4570 中引入了对原生 OpenBLAS 的集成。与此同时,MQL5 新增了数据类型,以支持使用浮点数据进行复数计算:
- complexf — 使用浮点数数据的复数;
- vectorcf — 包含 complexf 类型元素的向量;
- matrixcf — 包含 complexf 类型元素的矩阵。
乍一看,这可能只是一个技术细节。但实际上,它是 MQL5 未来数学功能中重要的一环。MQL5 已经具备矩阵、向量、复数和矩阵方法。但 OpenBLAS 需要更完整的类型集:实数和复数数据、双精度和单精度浮点数,以及不同变体的矩阵和向量。
因此,MQL5 的意义远不止“奇异值分解(SVD)方法”或“特征值方法”。它为构建适用于不同数据类型和不同数值问题的算法家族奠定了基础。
MQL5 中的首批 OpenBLAS 方法与奇异值分解和计算特征值相关。这是一个自然而然的起点。SVD 和特征值问题构成了大量实用算法的基础:从稳定性分析、降维到机器学习、统计学、信号处理和模型构建。
为 SVD 添加了几种算法变体:分治法、QR分解、带旋转的 QR 分解、二分法、高级雅可比法、低级雅可比法以及针对双对角矩阵的方法。这很重要,因为数值方法很少在每种情况下都有唯一的“最佳”方法。一种快速方法在处理病态数据时可能准确性较低,而一种更稳定的方法在计算上可能成本更高。平台应该给开发者提供选择。
特征值方法用于解决一类不同的问题。它们被用于分析方阵、对称矩阵和厄密矩阵、系统稳定性、谱特性,以及统计学、优化和建模中使用的许多计算过程。
MQL5 文档中的 OpenBLAS 部分此后一直在扩展。这一点很重要:OpenBLAS 的集成不是一次性的发布,而是一个持续发展的方向。矩阵和向量方法正逐渐获得越来越多适用于不同矩阵类型(matrix、matrixf、matrixc 和 matrixcf)的功能。
接下来的逻辑步骤涉及优化解决方案、误差估计、提高数值稳定性和进行额外分解的方法。这正是构建坚实数学基础的方式:不是从“无”到“全”,而是逐步涵盖越来越多的标准 LAPACK 问题。
为什么这对 MQL 开发人员很重要
对于普通交易者而言,OpenBLAS 可能显得有些遥远:它是一个专为数学家、工程师和科学计算而设计的库。但在 MQL 生态系统中,它的到来具有非常实际的意义。
开发者可以直接在 MQL5 中构建更复杂的模型。它们不仅可以调用指标、比较两个值和发送订单,还可以将数据作为数组、向量和矩阵来处理。它们能够进行分解计算、解方程组、评估稳定性,并使用以前必须转移到 Python、C++ 或第三方库的方法。
但这并不意味着 Python、ONNX 或外部工具就过时了。相反,它们正开始更有效地相互补充。Python 非常适合用于研究、模型训练和数据准备。ONNX 便于将训练好的模型导入终端。OpenBLAS 为 MQL5 提供了一个强大的数值基础,用于在平台内执行计算的情况。
因此,MetaTrader 5 正逐渐成为一个用户不仅可以交易和测试 EA,还可以构建完整的计算工作流程的环境:
- 获取市场数据;
- 准备特征和矩阵;
- 使用 ONNX 模型;
- 使用矩阵/向量进行数值计算;
- 在策略测试器中测试该想法;
- 并行化优化;
- 将结果整合到 EA、指标或服务中。
因此,不应孤立地看待 OpenBLAS,而应将其与前面的步骤结合起来考虑:MQL5、MetaEditor、Python、ONNX、矩阵、向量和 AI 助手。
代理式 AI 助手、MCP 和 OpenBLAS:单一工程环境的三层结构
乍一看,代理式 AI 助手、MCP 和 OpenBLAS 似乎分属于平台的不同部分。AI 助手处理用户的意图,MCP 将模型连接到工具,OpenBLAS 运行数值算法。然而,它们共同构成了一个连贯的计算工作流程。
AI 助手负责制定和分解任务:理解请求、制定计划、选择操作和解释结果。MCP 为智能体提供对终端、MetaEditor、项目、市场、交易历史和外部数据的受控访问权限。OpenBLAS、矩阵/向量运算、ONNX 和其他技术为 MQL5 程序提供了实现模型本身所需的计算能力。
过去,开发人员需要手动在编辑器、帮助文档、论坛、策略测试器、Python notebook 和外部库之间切换。现在,其中一些上下文切换可以被描述为一个单一的任务:检查项目、修改代码、编译程序、准备数据、运行分析并生成报告。智能体不会取代编译器、策略测试器或数学库 — 它只是将它们连接起来。
这就是为什么 MCP 与语言模型本身同样重要的原因。没有专门的工具,即使模型功能再强大,也只能是一个对话伙伴。借助 MCP,它能够在平台内执行操作,同时保持在用户设置的权限范围内。
Algo Forge:代码变成了项目
现代工程环境需要增加一个对任何认真的开发工作都至关重要的层面:版本控制、变更历史、协作以及将项目作为活动存储库进行发布。在 MQL 生态系统中,MQL5 Algo Forge 已逐渐承担起这一角色。
Algo Forge 的前身是 MQL5 Storage — 一个内置于 MetaEditor 中的 MQL4/MQL5 源代码在线存储库。它已经解决了一个重要问题:开发人员可以将他们的代码存储在安全的存储库中,查看更改历史,恢复到以前的版本,并直接在编辑器中处理团队项目。
然而,之前的存储库是基于 Subversion 的,已经过时。其逻辑在存储和同步源代码方面运行良好,但现代开发需要更多功能:本地历史记录、快速操作、用于实验的分支、合并更改、离线工作,以及多个开发人员在一个项目上的透明协作。
2025 年 6 月 6日,MetaTrader 5 build 5100 引入了一个完全重新设计的源代码仓库:MQL5 Storage 已从 Subversion 切换至 Git,同时,一个全新的在线项目管理门户 — MQL5 Algo Forge — 也已上线。
这是一个重要的转折点。代码库回答了“我在哪里可以找到现成的示例?”这个问题,而 Algo Forge 则回答了另一个问题:“如何管理一个不断变化的项目?”一个复杂的 EA 或库已经不再仅仅是一个 MQ5 文件了。它可能包含文件、测试配置、参数集、模型、文档、README 文件、支持脚本、实验历史记录和多个开发分支。
Git 改变了你处理这类代码的方式。开发人员可以为新想法创建一个单独的分支,在策略测试器中进行测试,比较更改,恢复到之前的状态,将成功的实验合并到主版本中,并将结果推送到云存储库。项目历史记录不再保存在作者的记忆中,也不再保存在名为 “final_new_2” 之类的文件夹中。它会成为集成开发环境(IDE)的一部分。
Algo Forge 为这一切增添了社交层面。开发者可以探索公共项目,关注作者,创建团队,分叉项目,克隆仓库,查看文件、提交和分支,准备文档,以及在线共享项目。对于 MQL 生态系统而言,这意味着从共享单个源代码文件转变为成熟的协作开发文化。
这一点对于文章和教育材料尤其重要。文章中的代码不应该仅仅存在于压缩文件或附件集中。它可以在 Algo Forge 中设置为一个项目,具有清晰的结构、README.md 文件,保留更改历史,并为读者提供的不只是文本,而是一个可运行的入口点。文章解释了概念,而代码库则演示了它的实际应用。
因此,MetaEditor 的功能再次扩展。它最初是一个编写和编译代码的地方。接下来是文档编写、项目开发、调试、性能分析、AI 助手以及集成工作。现在,完整的 Git 工作流程也已成为其中的一部分:历史记录、分支、提交、同步和协作。
按照这种逻辑,Algo Forge 并非一项独立的“附加服务”,而是同一发展路线的延续。MQL 程序已经从单个图表上的简单 EA 发展成为一个工程项目,可以进行版本控制、讨论、团队开发、发布和维护多年。
从 EA 到工程环境
纵观整个历史,MQL 的演进呈现出惊人的连贯性。
甚至在成熟的编程语言出现之前,EA 就已经出现了。然后出现了第一个 MQL:一个简短的文档页面、一些变量,以及直接在终端中运行交易策略的功能。MQL II 随后引入了循环、数组、数据类型和数学函数。自定义指标将语言扩展到了 EA 之外。
MetaTrader 4 将所有这些元素整合到一个大众市场模型中:终端、MQL4、MetaEditor、文档、EA、指标、脚本、库和测试。MQL4.COM 新增了社区、代码库和文章。锦标赛表明,自动化交易可以是公开的、竞争性的,并且规模庞大。
MetaTrader 5 和 MQL5 提高了交易复杂性的上限。面向对象编程、原生代码、标准库、全新的交易模型、增强的策略测试器、云端优化以及 MQL5.community,这些元素共同将该语言打造成一款更为严谨的工程工具。
随后,MQL5 反过来影响了 MQL4 的发展:统一的编译器、统一的 MetaEditor、一种新语言、程序保护以及应用程序市场。这款成熟的大众市场产品获得了新的技术基础。
MQL5 随后开始超越传统的 EA:OpenCL、自定义交易品种、.NET、服务、网络函数、SQLite、DirectX、Python、ONNX、矩阵和向量。这一切逐渐拓宽了人们对 MQL 项目的理解。
代理式AI Assistant、模型上下文协议 (MCP) 和 OpenBLAS 并非这个故事中的随意添加。它们是该平台合乎逻辑的延续,因为它们建立在 2001 年就已经显而易见的原则之上:即在平台内给予用户更多的自主权。
当时,自主性意味着能够编写 EA 并发送交易操作而无需人工干预。如今,它的意义远不止于此:用自然语言给智能体分配任务,通过 MCP 授予其受控访问工具的权限,编写和构建代码,使用外部机器学习模型,执行数值线性代数运算,用历史数据对系统进行测试,以及在 MetaTrader 基础设施中启动它。
不是版本的历史,而是思想的历史
将 MQL 的历史变成一长串的日期、版本号和函数名称是很容易的,但这却忽略了重点。
这不是一个关于一种语法如何取代另一种语法的故事。也不是一个关于终端中逐渐添加越来越多菜单项的故事。
这是一个关于交易平台如何逐渐将开发者的工作内容纳入自身的故事。首先是 EA 的执行。然后是编程语言。接着是编辑器。然后是文档、测试、代码库、文章、锦标赛、市场、云优化、外部集成、机器学习、AI 助手、数值线性代数,以及通过 Algo Forge 进行项目管理。
从这个意义上说,现代的 MetaEditor 不仅仅是旧版 EA 编辑窗口的升级版。它是整个 MQL 生态系统的集成点:涵盖语言、文档、项目、调试、性能分析、模型、数学方法、代理辅助、MCP 工具以及用于协作开发的 Git 基础设施。
这就是为什么从最初的 EA 到代理式 AI 助手、MCP 和 OpenBLAS 的演进,看起来不像是一系列孤立事件的集合,而更像是一条连续的发展线。从一开始,MetaQuotes 就不只是构建一个用于观察市场的终端,而是创造了一个环境,让交易想法能够转化为程序,程序又能转化为可管理的工程流程。
这一理念持续推动着 MQL 的发展。