FxRobotEasy 编辑部 · 最后审核
What is MQL5?
MQL5 由 MetaQuotes Software Corp 开发并维护 —— 该公司也是 MetaTrader 平台的开发商。它由 MQL4(MT4 时代的语言)演化而来,带来显著改进:对面向对象编程的支持、多线程回测、多资产能力以及性能改进。MQL5 源文件(.mq5)编译为在 MT5 内部运行的可执行 .ex5 二进制文件。MetaEditor IDE 随 MT5 免费提供,包含调试器、性能分析器和语法检查。
MQL5 语言特性
MQL5 语法类似 C++ 但有所简化。变量、函数、类、继承、多态 —— 主要 OOP 功能均已具备。内存管理是自动的;没有典型低层 C++ 中的手动分配/释放。标准库涵盖交易操作(CTrade 类)、历史数据访问、技术指标(95+ 内置)以及众多实用函数。
内置函数全面覆盖交易领域:OrderSend 用于提交订单,PositionGetTicket 用于遍历开仓持仓,SymbolInfoDouble 用于市场数据查询,iMA/iRSI/iMACD 用于指标计算,CopyRates 用于访问历史 K 线。交易员需要编写的大部分代码就是把这些原语组合成策略逻辑。
执行模型:MQL5 EA 是事件驱动的。OnInit 在 EA 加载时运行一次;OnTick 在每次新的市场报价到达时运行;OnTrade 在交易事件发生时运行;OnDeinit 在 EA 卸载时运行。策略逻辑通常位于 OnTick。
限制:MQL5 仅在 MetaTrader 5 内部运行 —— 没有独立可执行文件,除文件 I/O、命名管道或 DLL 调用之外没有与其他系统的集成。性能对大多数策略来说足够,但对超高频应用而言不能与低层 C++ 竞争。
可以用 MQL5 构建什么
MQL5 支持四种主要的构件类型:
- • 智能交易系统(EA)—— 完全自动化的交易系统,自主决策并执行交易。主要使用场景。
- • 自定义指标 —— MetaTrader 未内置的技术分析指标(例如,专有的振荡指标、机器学习预测覆盖层)。在图表上渲染以用于视觉分析,或被 EA 作为数据源消费。
- • 脚本 —— 在手动执行时执行特定操作的一次性程序。例如:批量平掉所有持仓、将交易历史导出为 CSV、为计划交易计算仓位大小。
- • 库 —— 可重用的代码模块,多个 EA 可以导入。对共享功能很有用(风险管理、新闻处理、通用实用函数)。
学习 MQL5
对有编程经验(C、C++、Java、C#)的开发者来说,现实的学习路径:
第 1-2 周:阅读 MQL5 官方文档(mql5.com/en/docs)。实现一个 hello-world EA,在每个 tick 打印一条消息。实现一个简单指标(例如'在图表上显示 20 周期高低值')。熟悉 MetaEditor、调试器和策略测试器。
第 3-4 周:基于清晰的规则集实现一个简单的交易 EA(例如'当 50 EMA 上穿 200 EMA 时做多,在 +30 pips 或 -15 pips 退出')。在策略测试器中回测。在模拟账户上运行一周以观察行为。
第 2-3 月:实现风险管理原语 —— 从账户风险百分比计算仓位大小、止损放置、多 EA 账户的 magic-number 管理。实现带经济日历集成的新闻处理。
第 4-6 月:walk-forward 优化、多对覆盖、适当的错误处理和重连逻辑。阅读 MQL5 社区文章关于常见陷阱(过拟合、前视偏差、broker 特定问题)。
6 个月后:开发者应能够实现有意义的策略并调试操作问题。达到生产级策略优势通常需要实质上更多的时间(1-2+ 年)的策略开发经验,与语言学习无关。
在没有先前编程经验的情况下,时间表大约翻倍,在 MQL5 特定知识变得有用之前,需要花费大量时间学习编程基础。
MQL5 生态系统
mql5.com 上的 MQL5 社区是 MQL5 开发资源的中央枢纽:
文档:全面的语言参考、按函数的解释、代码示例。免费。
文章:1000+ 由社区编写的针对特定主题的教程 —— 指标实现、常见算法模式、性能优化。免费。
Marketplace:商业和免费的 EA/指标/脚本。供应商出售经过 MetaQuotes 代码审查的产品;买家在 MT5 中一键安装。最大的 MQL5 产品分发渠道。
Signals 服务:内置于 MetaTrader 的复制交易平台。交易提供者(通常是运行自己 EA 的 MQL5 开发者)发布经过验证的账户;订阅者复制交易。
论坛:活跃的开发者和交易员社区,用于技术问题。通常对特定实现问题很有帮助。
Freelance:雇用 MQL5 开发者的市场。根据规范进行的定制 EA 开发,根据复杂度通常花费 $500-$5000。质量参差不齐;通过社区档案审查开发者的历史记录。
MQL5 社区档案在所有这些服务中都是可识别的,提供声誉连续性。资深 MQL5 开发者(多年发帖历史、已验证产品、活跃论坛参与)带有重要的信任信号。
常见误解
❌ 误解: MQL5 仅适用于外汇。
✓ 事实: MQL5 支持股票、CFD、期货和交易所工具 —— 凡是 MetaTrader 5 能连接到的地方。许多 MQL5 EA 在指数(NAS100、US30、SPX500)、商品(黄金、石油)和加密货币 CFD 上运行。该语言是与资产无关的;broker 的 MT5 提供决定了什么可以交易。
❌ 误解: 学习 MQL5 需要数年。
✓ 事实: 对于有 C/C++/Java 经验的开发者来说,MQL5 在几周内即可入手。与通用语言相比,该语言文档完善且范围较小。EA 开发的难点在于策略设计和避免过拟合 —— 而不是语言复杂度。
❌ 误解: MQL5 EA 因 MetaTrader 开销而缓慢。
✓ 事实: MQL5 性能对零售级策略(包括每个交易时段 10-30 笔交易的剥头皮)是足够的。延迟通常由 VPS 到经纪商网络往返(1-5ms)主导,而不是 MQL5 执行。对于亚毫秒级策略(机构 HFT),MetaTrader 不是合适的平台 —— 但限制在于 MetaTrader 的架构,而非 MQL5 这门语言。
常见问题
MQL5 是免费的吗?
MQL5 开发成本模型:语言、IDE、平台和基础文档为零成本。可选商业:MQL5 Marketplace 卖家佣金(产品销售通常 20%)、MetaQuotes Virtual Hosting(MT5 VPS $10-$15/月)、MQL5 社区高级开发者账户(经验证卖家身份一次性 $10-$30)。对于非商业开发(为您自己的账户编写自己的 EA),MQL5 完全免费。
我应该学习 MQL4 还是 MQL5?
语言差异:MQL4 是过程式 C 风格;MQL5 是面向对象 C++ 风格。交易 API:MQL4 使用 ticket(每订单标识符);MQL5 使用持仓(每品种聚合),更接近机构会计。回测:MQL5 的策略测试器实质上更强大(多线程、多货币、tick 级数据)。对于新开发,MQL5 是战略选择。对于维护或扩展现有 MQL4 EA,MQL4 仍然受支持。在两者之间移植需要有意义的代码重写,而不是简单的重新编译。
我可以将 MQL5 与 Python 或其他语言集成吗?
集成模式:(1)MetaTrader 5 Python 包 —— Python 可以连接到 MT5 终端获取市场数据和交易。对回测分析和外部策略开发很有用。(2)Socket 通信 —— MQL5 EA 打开到外部 Python 服务的 socket 连接;特征向量发出,预测进入。HTTP 延迟约 1-10ms,原始 socket 约 0.1-1ms。(3)命名管道 —— 仅 Windows 的 IPC 机制,用于低延迟 MQL5-Python 通信。(4)共享内存或文件 I/O —— 较慢但对非实时用例集成更简单。对于大多数零售交易员,纯 MQL5 更简单且足够;当运行需要超出 MQL5 在 tick 内可处理的大量计算的生产 ML 模型时,集成变得有价值。
我多久能用 MQL5 写出有盈利能力的 EA?
现实时间表:有先前经验的程序员可以在 4-8 周内写出功能性 EA。用合理策略达到回测盈利需要再 2-6 个月。达到实盘盈利(由于过拟合、滑点、机制变化,与回测有实质差异)需要再 6-18 个月。1-2 年总数由学习'回测看起来有盈利能力'与'实际上实盘有盈利能力'之间的差异所主导 —— 避免过拟合、walk-forward 纪律、机制感知。许多开发者能写出可以运行的代码;很少人能制定具有真正优势的策略。
我可以在 marketplace 上出售我的 MQL5 EA 吗?
Marketplace 销售流程:(1)建立 MQL5 社区声誉 —— 论坛帖子、免费产品贡献、如果适用则经验证的 MQL5 Signals 账户。新卖家账户面临比已建立账户更严格的审查。(2)将产品提交给 MetaQuotes 代码审查 —— 检查基本安全(无恶意软件、正确的 API 使用),而不是策略优势。审查通常需要几天到几周,取决于提交队列和复杂度。(3)设定价格、撰写产品描述、选择租用 vs 购买模式。(4)上线产品在每次销售时获得佣金。成功的 EA 卖家通常通过 marketplace 每年赚取 $1K-$50K;顶级卖家超过 $100K/年。收入差异很大;大多数 marketplace EA 销售很少。
相关概念
另请参阅(外部)
浏览更多主题
对交易者向 AI 和搜索引擎提出的问题给出百科全书式的答案。
所有学习主题 →