为什么值得学 MQL4
市面上的历史 EA、指标和脚本,绝大多数是 MQL4 写的:论坛里的策略源码、券商的现成工具、别人分享的 .mq4 文件,都是它。学会 MQL4,你能读懂这些代码、改参数、拼出自己的策略,而不是只能买现成的「稳赚 EA」。相比 MQL5,MQL4 的交易函数更直接——一行 OrderSend() 就能下单,不用先理解整套事件模型,初学阶段能把注意力放在策略逻辑上。
更重要的是它把「想法 → 代码 → 回测 → 修正」这条链路压缩到了几个小时。你写一个均线交叉,挂到历史数据上跑一遍,立刻能看到它在震荡行情里被反复止损——这种即时反馈是看书学不会的。
学习路线(5 步走完)
- 准备环境:装 MT4 客户端,按 F4 打开 MetaEditor,新建第一个 EA(第 1 章)。
- 打牢语法:变量、运算符、if、switch、for、while、函数与作用域(第 1–3 章)。
- 学会交易函数:OrderSend 下单、OrderSelect 遍历订单、OrderClose 平仓、魔术数区分策略(第 4 章)。
- 接上指标与行情:iMA、iRSI、MarketInfo、账户信息,把「看盘」变成「算盘」(第 4 章)。
- 写出完整 EA:OnTick 里判断条件、算手数、设止损止盈、回测调参(第 5 章)。
MT4 编程入门:EA、指标、脚本是三种程序
用 MQL4 写出来的程序都存成 .mq4 文件,但按用途分三类,放错文件夹就不会出现:
- EA(Expert Advisor):挂在图表上,每个报价触发一次
OnTick(),能下单、改单、平仓,是自动交易的主角,放在MQL4/Experts。 - 指标(Custom Indicator):只做计算并画在图表上,没有下单权限,放在
MQL4/Indicators;EA 里的 iMA、iRSI 就是取它算好的缓冲区。 - 脚本(Script):拖到图表上执行一次就结束,适合一键平仓、批量挂单这类一次性动作,放在
MQL4/Scripts。
新手最常踩的坑是把指标当 EA 用——写完发现根本不能交易;或者写脚本想常驻,结果跑一次就退出。先分清这三类,再决定学哪条路。搜「MT4EA 编写教程」的同学,可以直接按第 3 → 5 章的顺序看:先把 if/for/函数写熟,再学 OrderSend 和 OnTick,最后照着实战章拼一个完整 EA。
MQL4 编程教程:五个必学部分
- 数据类型:int / double / string / bool / datetime / color。注意 double 转 int 是直接截断,价格计算要用
NormalizeDouble()。 - 流程控制:if、switch、for、while、break / continue,语法与 C 基本一致,一两天就能过。
- 函数与参数:参数、返回值、作用域;用
input声明的变量会出现在 EA 属性面板上,方便调参。 - 交易函数:
OrderSend下单、OrderSelect遍历订单池、OrderClose平仓、OrderModify改止损,配合魔术数区分不同策略的订单。 - 指标函数:
iMA、iRSI、iMACD、iATR,重点是 shift(取第几根 K 线)与缓冲区索引,取错一格结果全错。
这五块学完,论坛里 90% 的 .mq4 源码都能读懂并改参数。课程第 1–4 章就是按这个顺序排的,每节都有可运行代码和 AI 批改练习。
外汇 EA 编程:从策略到自动下单
一个 EA 的骨架只有三个函数:OnInit() 初始化并检查参数、OnTick() 每个报价执行一次、OnDeinit() 清理。真正决定盈亏的是 OnTick 里的四件事:
- 入场条件:金叉、突破、时间窗口,写成明确的布尔表达式,别用「感觉」。
- 仓位大小:固定手数,或按账户净值百分比换算手数并做最小/最大限制。
- 止损止盈:用点数乘
Point换算成价格,再按多空方向加减,别忘了 5 位报价平台的 10 倍点差。 - 重复下单保护:同一根 K 线只开一次、用魔术数 + 订单池判断是否已有仓位——缺这一条,回测曲线再漂亮,实盘也会因为重复开仓爆掉。
外汇量化与回测:EA 不是稳赚
把交易规则写成程序就是量化,EA 是外汇量化最容易上手的落地方式。判断一个策略能不能用,至少过三关:
- 历史回测:MT4 策略测试器用「每个 tick」模式,样本要同时覆盖趋势和震荡行情;
- 参数稳健性:把均线周期、止损点数上下调 20%,收益不应崩掉。只在某一个参数点好看,就是过拟合;
- 模拟盘:至少跑 1–3 个月,观察滑点、点差、隔夜利息对结果的影响。
网上号称「稳赚」「月化 30%」的 EA 大多是马丁格尔或加仓网格:短期曲线漂亮,长期必然爆仓。学编程的意义不是找到圣杯,而是能看懂一个策略为什么危险。
全部 36 节
常见问题
MQL4 和 MQL5 应该学哪个?
MQL4 运行在 MetaTrader 4 上,语法接近 C,交易函数简单直接,市面上的历史 EA 和指标绝大多数是 MQL4;MQL5 是 MT5 的语言,面向对象、事件驱动更完整,但学习曲线更陡。先用 MQL4 把「策略 → 代码 → 回测」这条链路走通,再迁到 MQL5 会轻松很多。本站课程从 MQL4 讲起。
没有编程基础能学 MQL4 吗?
可以从第一章的顺序学。MQL4 的常用语法只有变量、if、for、函数这几样,本站每节都配可运行的代码块和练习题,写完提交由 AI 批改,不需要先在本地装编译器。
写 EA 一定要买 VPS 吗?
回测和写代码不需要,MetaTrader 4 自带的策略测试器就够用。只有让 EA 24 小时挂机实盘时才需要一台长期在线的机器,普通云服务器即可,不必一上手就买。
EA 能保证盈利吗?
不能。EA 只是把交易规则写成程序,盈亏取决于策略本身、行情和风险控制。回测好看不代表实盘能赚,务必先在模拟账户跑足够长的时间,控制单笔风险。
MQL4 代码在哪里写、怎么运行?
在 MT4 客户端里按 F4 打开 MetaEditor,新建 Expert Advisor,把代码粘进 .mq4 文件后按 F7 编译,再回到 MT4 把 EA 拖到图表上运行。本站的示例都按这个流程写,可以直接复制。
MT4 编程用什么语言?
MetaTrader 4 用 MQL4,MetaTrader 5 用 MQL5。两者语法都接近 C,但 MQL5 是面向对象、事件驱动的重写版本,函数签名、订单处理方式都不同,代码不能直接互搬。本站讲的是 MQL4。
MT4 指标和 EA 有什么区别?
指标只能计算并显示,不能下单;EA 可以自动下单、改单、平仓,由报价事件驱动。两者都用 MQL4 写,但放在不同文件夹(Indicators / Experts),编译后的扩展名也不同(.ex4)。想把指标变成自动交易,需要把它的计算逻辑搬进 EA 的 OnTick()。
MQL4 中文手册在哪里查?
官方参考文档 docs.mql4.com 提供中文版,函数按「语言基础 / 交易函数 / 技术指标 / 文件函数」分类。本站第 4 章把这些函数按用途重新梳理了一遍,每个都配可运行的示例,查起来比官方文档更快。
MT4 脚本放在哪个文件夹?
在 MT4 里点「文件 → 打开数据文件夹」,EA 放 MQL4/Experts,指标放 MQL4/Indicators,脚本放 MQL4/Scripts。放好后回 MT4 在「导航」面板右键刷新,或重启客户端就能看到。编译报错最常见的原因就是文件放错目录、找不到 include。
外汇量化是骗局吗?
量化本身不是骗局,把规则写成程序、用历史数据检验,是正经做法。骗局在于卖「稳赚 EA」:承诺固定收益、只给历史曲线不给逻辑、要求你把钱交给对方托管。判断标准很简单——能不能看到源码、能不能自己回测、有没有讲清楚亏损时怎么退出。
学完这套课程能达到什么程度?
能独立读懂并修改常见的均线、突破类 EA,会用手数、止损止盈、魔术数管理订单,会用 iMA、iRSI 等指标函数,能写出带风控的完整 EA 并用测试器做参数优化。
接着往下学
MQL4 只是工具,策略才是核心。建议同时补一点数据结构与算法(判断趋势、去重、排序报价),以及 Java 或 Python 里的面向对象思维——写复杂 EA 时,把订单、仓位、风控拆成类是迟早的事。
相关课程:Java 程序设计 · Python 程序设计 · JSP · SpringBoot