MQL4 程序语言入门教学:MQL4是什么?新手从零学写自动交易程序

在外汇与差价合约(CFD)交易中,如何提升执行效率与策略稳定性,是许多交易者关注的重点。 MQL4 程序语言 提供了一个解决方案,让你能在 MetaTrader 4(MT4)平台上开发 EA(Expert Advisor),实现自动下单、风险控管与资金管理。
本篇 MQL4 教学 将专为零基础新手设计,从环境设定开始,带你了解 MetaTrader 4(MT4) 的核心运作逻辑。我们将解析基础语法与事件函数,并结合 Titan FX 提供的免费资源与前测数据,帮助你逐步建立自己的自动交易系统。
1. 什么是 MQL4?从 MT4 到自动交易完整理解
MQL4 是 MetaQuotes 专为 MetaTrader 4(MT4)开发的程序语言,相当于 MT4 的「交易指令手册」。它能把你的交易策略转化成电脑可以自动执行的程序,让交易不再依赖人工盯盘。
MT4 可建立的三种常用程序类型
在 MT4 中,使用 MQL4 可以建立以下三种最常见的程序:
- EA(Expert Advisor,专家顾问):自动执行买卖、设定停损停利、资金管理等,是自动交易的核心工具(本文重点)。
- 自订指标(Custom Indicator):在图表上绘制各种技术指标、线条、图形。
- 脚本(Script):执行一次性任务,例如快速平仓、画线、修改订单等,用完即止。
其中,EA 是最强大的自动交易工具,也是本文主要讲解的对象。
MT4 核心运作逻辑(以 EA 为例)
MT4 的运作以 Tick(报价跳动) 为基本单位。每当市场价格有任何变动,就会产生一个 Tick。
当你把 EA 挂载到图表上后:
- MT4 会持续把最新的 Tick 资料传给 EA。
- EA 则通过
OnTick()函数接收这些 Tick,并根据你写好的策略决定是否下单、管理订单、调整止损止盈等。
重点:
所有自动交易的判断逻辑,主要都写在 OnTick() 函数里。它就像 EA 的「心跳」,每跳一次就执行一次你的交易逻辑。
与 MQL5 相比,MQL4 语法更简单,适合新手入门,且拥有成熟的 EA 生态,大量现成程序码可供参考修改。
2. MQL4 怎么写 EA? MetaEditor 完整操作流程
开启 MT4 的 MetaEditor,依循以下流程即可完成开发:
- ① 登入MT4 - 点选导航栏的黄色图示,开启MetaEditor。
- ② 点击「New」-「Expert Advisor (template)」,在「Expert\」后输入名称与作者资讯后继续。
- ③ 根据需要选择额外的EA交易时间处理常式,也可以不勾选直接进行下一步。
- ④ 在编辑区撰写程序码(副档名为 .mq4),完成后点击「Compile」进行编译,成功后会产生 .ex4 执行档。
- ⑤ 回到 MT4,在「Navigator」→「Expert Advisors」找到档案并拖曳到图表上,完成挂载。

※ 新手最常遇到的问题是 EA 挂载后右上角没有出现笑脸。这通常是因为你没有开启「允许自动交易」的功能。点击「工具(Tools)」→「选项(Options)」→「EA交易(Expert Advisors)」,勾选「Allow automated trading」。

3. 语法极简版:新手必学的资料型态与 OnTick 函数
开发 MQL4 EA 并不需要背诵成千上万的代码,掌握最核心的「资料型态」与「运作心脏」,就能组装出逻辑完整的自动化策略。
核心资料型态
| 资料型态 | 说明 | 实战用途范例 |
|---|---|---|
| int | 整数(无小数) | 指标周期、MagicNumber、订单编号 |
| double | 带小数点精准数值 | Ask/Bid 价格、Lot 大小、点数 |
| bool | true / false | 是否允许进场、讯号是否成立 |
EA 的运作心脏:OnTick() 函数
OnTick() 是 MQL4 EA 最重要的事件函数。
- 执行时机:市场每出现一次新的报价(Tick),系统就会执行一次 OnTick() 内的程序码。
- 开发重点:所有交易判断逻辑(例如快线穿过慢线就买入)都应该放在这里。
常用行情变数
- Ask / Bid:目前买入价与卖出价(决定开仓价格)
- Close[0]:当前尚未完成 K 线的即时价格
- High[0] / Low[0]:当前 K 线最高价与最低价
掌握这些后,搭配简单 if 判断(如 if(Close[0] > High[1]))就能建立第一套自动交易规则。
4. 避坑指南:EA 常见错误与稳定性优化
撰写 MQL4 EA 时,语法错误容易被发现,但逻辑错误与执行问题却常让新手卡关。以下整理最常见的错误与实用避坑技巧。
常见开发错误速查
| 错误类型 | 常见原因 | 解决方法 |
|---|---|---|
| 语法报错 | 遗漏 ; 或大括号不对称 | 双击 MetaEditor 错误讯息跳转修正 |
| 下单失败 (130) | 停损停利距离太近 | 使用 MarketInfo() 查最小间距并加缓冲 |
| 资金不足 (134) | 保证金不够 | 动态计算手数或检查账户余额 |
程序稳定度提升技巧
| 实用工具 | 主要功能 | 建议使用时机 |
|---|---|---|
| Print() | 把变数数值或讯息记录到「专家」日志 | 追踪程序内部逻辑是否正确 |
| Comment() | 在图表左上角即时显示资讯 | 即时观察关键变数 |
| 策略测试器 | 可视化模式(Visual Mode)观看 EA 实际运行 | 开发初期验证进出场逻辑 |
| 模拟账户测试 | 在真实市场环境中使用虚拟资金运行 | 上线实盘前的最终验证 |
关键提醒:避免过度优化历史数据。建议从简单策略开始,在模拟账户长期运行,确认风险控管合理后再转实盘。
5. 免费 EA 资源推荐:利用 Titan FX 前测数据加速实战
如果你觉得从零开始开发过于困难,利用经纪商提供的成熟资源是一个非常聪明的做法。 Titan FX提供了超过 70 款免费 EA 程序,同时支援 MT4 与 MT5。

这些资源的价值在于透明度:
新手可以挑选排名靠前、回撤适合自己风格的 EA,下载后先在模拟账户观察。这不仅加速自动化进程,也是学习专业 EA 结构的最佳方式。
6. 常见 FAQ:关于 MQL4 与 EA 开发的疑难杂症解答
Q1:可以在一张图表挂载多个 EA 吗?
不行,每张图表只能执行一个 EA。如果你需要运行多个策略,请为同一个货币对开启多个独立的图表视窗。
Q2:MT4 的 EA 可以直接用在 MT5 吗?
不行。由于 MQL4 与 MQL5 的交易逻辑有显著差异,代码无法直接共用。你需要根据 MQL5 的物件导向架构重新编写逻辑。
Q3:.mq4 与 .ex4的差别是什么?
.mq4 是可编辑的源码档案,.ex4 是编译后的执行档。修改程序时只能编辑 .mq4,载入平台则使用 .ex4。
Q4:EA 一定能稳定获利吗?
不一定。 EA 的表现取决于策略逻辑与市场环境,没有任何策略能在所有行情中稳定获利。因此风险控管与持续优化仍然非常重要。
7. 总结
通过这篇教学,你已了解 MT4 环境设定、MQL4 基础语法、EA 开发流程、除错优化,以及 Titan FX 免费资源的运用。
虽然自行撰写 EA 需要练习,但从简单逻辑开始,并善用回测与模拟账户验证,就能逐步打造稳定系统。同时,参考 Titan FX 的前测排名与成熟 EA,能大幅缩短你的学习与实战曲线。