MQL5 快速上手(基础篇)
先让 MT5 跑起一段 MQL5
想在 MT5 里验证价格行为逻辑,第一步是把 MQL5 脚本丢进正确的目录。打开 MT5 终端,进入「文件 → 打开数据文件夹 → MQL5 → Scripts」,把 .mq5 文件放进去,回到终端在导航器里右键「刷新」,脚本就会出现在列表中。 MQL5 的入口函数是 OnStart(),不像 EA 那样有 OnInit/OnDeinit 和周期回调,脚本跑完即退出。下面这段最简脚本只做一件事:在图表上打印当前品种与时间点,用来确认环境是否就绪。
class="type">void OnStart() { Print(Symbol()); Print(TimeCurrent()); }
class="type">void OnStart() { Print(Symbol()); Print(TimeCurrent()); }
「搞懂 MQL5 能给你带来什么」
刚装好 MetaTrader 5 的人,前几次打开 MetaEditor 大概率会懵:项目结构、类向导、调试器跟 MT4 那套完全两样。这不是你的问题,是 MQL5 从根上换成了接近 C++ 的面向对象体系。 如果你本来就写 C#、Java 或 C++,转 MQL5 的成本很低。三者语法细节不同,但封装、继承、事件驱动这些基底逻辑一致,有高级语言底子基本一周内能写出能跑的 EA 框架。 从 MQL4 过来的老手也别硬套旧习惯。MQL5 没有 OrderSend 那种全局订单函数,改走 CTrade 交易类,历史数据访问也变成 CopyRates 系列。直接看 MetaEditor 5 的代码模板,比对着 MQL4 改要省三倍时间。 外汇和贵金属杠杆高、滑点跳空频繁,任何语言写的自动系统都可能失效。先在小布盯盘里用策略回放验证逻辑,再上 MT5 策略测试器跑 2020—2024 的 XAUUSD 日线,确认信号不漂移再谈实盘。
◍ MQL5 能做什么、谁适合上手
MQL5 的语法刻意贴近 C++,这让它有两点实在好处:一是写过 C++ 的人能直接套用变量、操作符、OOP 那套心智模型;二是它能近乎无成本地对接其它语言写好的模块,运行速度也接近原生 C++ 程序。 内置的 OpenCL 支持和标准库,让指标、图形对象、UI 甚至并行数学优化(数十数千单线程任务免写调度代码)都能在 MT5 里直接落地。对新手而言,拿任意 C++ 手册对照学语法,几个月入门、不到一年摸透全部功能是有先例的。 有 MQL4 底子的人初期会卡在事件处理函数和类 C 的新数据类型上,但适应后基本都会认可图表与画布绘制能力比上一代强出一截。专业程序员上手更快,难点不在语言本身——MQL5 砍了指针运算(指针实为描述符)、无异常、数组恒按引用传递且最多 4 维、不能从函数返回数组或对象、禁用 goto——而在熟悉订单、头寸、策略测试仪这些交易概念。 外汇与贵金属算法交易属高风险活动,回测顺滑不代表实盘概率占优,用 MQL5 写机器人前先厘清交易术语再碰代码更稳。
避开 UAC 把 MT5 装到非系统盘
MT5 的网络安装包可直接从 MetaQuotes 分发节点拉取(mt5setup.exe),整个向导点几下就能走完,本身没门槛。真正的坑在 Windows 的 UAC——自 Vista 起微软就强制用户账户控制,Program Files 下的写入会被重定向到隐藏的 AppData 沙盒里。 如果你不想在系统盘的一堆受保护目录里翻日志、找历史数据,安装时把路径指到 C 盘之外的盘更省事。比如系统装在 C:\,终端就装到 D:\,这样数据文件和终端目录同层,权限干净。 外汇与贵金属杠杆交易本身高风险,环境乱了容易漏掉成交回执或指标缓存。装完想确认模式差异,进终端内置帮助「入门指南 → 启动终端」一节对照即可。
「脚本、指标与EA三种程序类型的边界」
MQL5 里能跑的程序就三类,边界划得很死,别混用。脚本靠 OnStart() 单一入口,跑完即卸载,一个图表同时只允许一个脚本;若你在里面写带短暂停顿的无限循环,它能挂着直到手动强停。 指标靠 OnCalculate() 句柄认定身份,靠指标缓冲区存计算值,缓冲区数量几乎无上限,同一图表能叠多个指标甚至同指标多副本,不移除就一直算。 EA 认 OnTick() 事件,生命周期不限,但一个图表只能挂一个,主业是自动化交易,也能顺手做图形界面和行情可视化。 学习路径很实在:先抄文档或代码库的脚本示例,在模拟账户摸对象函数与交易操作;再写自定义指标、读文章啃事件处理函数;最后用策略测试仪对历史数据验证简单 EA。 MQL5 向导能拼装即用型模块快速出 EA,代码库里现成模块不少,适合不想从零写底层的人直接改参数验证想法。外汇与贵金属波动剧烈,任何自动化程序在历史表现都不代表未来,上真金前务必模拟盘跑够样本。