先纠正一个普遍的误会
MetaTrader 4 发布于 2005 年,MetaTrader 5 发布于 2010 年,两者出自同一家公司 MetaQuotes。 按常理,五年之后的产品应该取代前一个,但实际情况是:十六年过去了,MT4 至今仍在维护,仍是全球零售外汇装机量最大的客户端。
原因不复杂。MT5 在设计时的目标不是做一个更好的 MT4,而是做一个能同时容纳外汇、股票、期货的通用终端。 这个目标要求重写底层架构,代价是原来为 MT4 写的所有程序全部作废。 当时整个行业已经积累了海量的 MQL4 程序、指标和跟单系统,没有人愿意为了一个自己用不上的股票模块把它们全部重写。 于是 MT5 没有替代 MT4,两者变成了并行的两条线。
理解了这一点,接下来的所有差异才有意义。它们不是「旧功能」和「新功能」的关系,而是两套定位不同的产品各自的取舍。
八个维度逐项对比
下表列出两者的全部主要差异。最后一列是这项差异对普通交易者的实际影响,很多参数表不写这一列,而它恰恰是最该看的:
| 对比项 | MT4 | MT5 |
|---|---|---|
| 发布年份 | 2005 年 | 2010 年 |
| 时间周期 | 9 个 | 21 个 |
| 挂单类型 | 4 种 | 6 种 |
| 编程语言 | MQL4 | MQL5 |
| 可交易品种 | 外汇与差价合约 | 另加真实股票与期货 |
| 回测 | 单线程 | 多线程 |
| 持仓模式 | 仅对冲 | 对冲或净持仓 |
| 中文教程 | 数量遥遥领先 | 逐年增加 |
把这张表读一遍会发现一件事:八项差异里,真正会影响你日常操作的只有两项, 一是编程语言不兼容,二是持仓模式。其余六项要么差别很小,要么只在特定场景下才显现。
时间周期:21 个听起来很多
MT4 提供 9 个标准周期:M1、M5、M15、M30、H1、H4、D1、W1、MN。 MT5 在这 9 个之外增加了 12 个非标准周期,合计 21 个。
听起来是压倒性的优势,实际上不是。 绝大多数策略只会用到 M15、H1、H4、D1 这四个,它们两个平台都有。 多出来的 12 个在两种场景下有价值:一是做多周期共振分析时想找一个介于 H1 和 H4 之间的观察尺度,二是回测时验证策略对周期是否过度敏感。 对手动交易者来说,这一项的实际影响接近于零。
更值得警惕的反而是反方向的问题:周期越碎,噪音越多。 给新手 21 个周期,结果往往不是分析更精细,而是在周期之间反复横跳,把一次本来能拿住的波段切成七八笔互相矛盾的短线。
挂单类型:多出来的两种是干什么的
MT4 有 4 种挂单,MT5 有 6 种。前 4 种完全相同,这些在第 21 课已经讲过。 多出来的两种叫 Stop Limit,它的机制值得单独说明:
| 英文名 | 中文 | 哪个平台 |
|---|---|---|
| Buy Limit | 买入限价 | 两者都有 |
| Sell Limit | 卖出限价 | 两者都有 |
| Buy Stop | 买入止损 | 两者都有 |
| Sell Stop | 卖出止损 | 两者都有 |
| Buy Stop Limit | 买入止损限价 | 仅 MT5 |
| Sell Stop Limit | 卖出止损限价 | 仅 MT5 |
举个具体例子。EUR/USD 在 1.0850 附近震荡,你判断突破 1.0880 之后会继续上涨,但不愿意在 1.0880 直接追买, 希望等它突破后回踩到 1.0865 再进场。用 Buy Stop Limit 可以一次性表达这个意图: 止损价 1.0880 负责触发,限价 1.0865 负责成交。 价格没突破就什么都不会发生,突破了但不回踩,这一单也不会成交。
这是一个真实存在但并不高频的需求。用 MT4 的人通常靠盯盘手动处理,或者干脆放弃这类入场。 如果你的策略核心正是「突破回踩」,这一项对你有价值;否则它只是参数表上多出来的一行。
编程语言:唯一真正回不了头的差异
前面所有差异都可以适应,只有这一项不行。
MT4 的程序用 MQL4 写,扩展名是 .mq4 和 .ex4;MT5 用 MQL5,扩展名是 .mq5 和 .ex5。 两种语言在语法结构和函数库上差异很大,没有官方转换工具,也没有可靠的第三方转换器, 唯一的路径是拿到源码后重新编写并重新测试。
对中文用户来说,这一点的现实意义比表面上更重。中文社区流传的 EA、指标、跟单方案, 绝大多数仍然是 MQL4 生态的产物。如果你打算使用某个具体的 EA,先确认它有没有 MT5 版本, 这个确认要放在选平台之前,而不是之后。
可交易品种与回测
MT5 能容纳真实股票、期货和交易所层级的市场深度,MT4 不能。 但这里有一个容易被忽略的前提:客户端支持不等于你的经纪商提供。 多数零售外汇经纪商即便给你 MT5,也只提供外汇和差价合约, 股票和期货那部分能力在你的账户上是空的。
回测是另一个真实的差异。MT5 的策略测试器支持多线程,可以调用多个 CPU 核心并行运算, 同样一组参数优化,MT4 要跑一整夜,MT5 可能一两个小时就结束。 对手动交易者这没有意义,对要做大量参数优化的人则是决定性的。
持仓模式:换过去之后最容易懵的一点
这是表格里第二项会影响日常操作的差异,也是从 MT4 换到 MT5 的人最容易被吓一跳的地方。
MT4 只有一种持仓模式,叫对冲(Hedging):同一个品种上可以同时持有多笔买单和卖单, 每一笔独立计算盈亏,互不影响。你买了 0.1 手 EUR/USD,接着又卖 0.1 手, 结果是账户里躺着两个仓位,一多一空。
MT5 支持对冲,也支持净持仓(Netting):同一个品种永远只有一个净头寸。 同样是先买 0.1 手再卖 0.1 手,在净持仓账户上第二笔会把第一笔平掉,最终仓位归零。 这是股票和期货市场的通行做法,MT5 为了容纳这些市场才引入它。
问题出在这里:用哪种模式不是你能选的,由经纪商在开户时为该账户设定,开完户不能自己改。 习惯了 MT4 的人第一次登上净持仓账户,做完一笔反向单之后看到持仓列表空了, 第一反应通常是「我的单子怎么没了」,紧接着怀疑平台吞单。其实什么都没发生, 只是第二笔指令被解释成了平仓而不是开新仓。
对零售外汇用户来说这件事的实际影响有限,因为绝大多数外汇经纪商给的 MT5 账户仍然是对冲模式, 毕竟他们的客户都是从 MT4 过来的。但开户后花十秒确认一下是哪种模式, 可以省掉一次不必要的惊吓。确认方法很简单:在同一品种上开一笔极小的反向单,看仓位是变成两个还是归零。
三个问题,选出你的那一个
把上面所有内容压缩成一个可执行的规则,就是下面这张表。从上往下问,遇到第一个「是」就停下:
| 你的情况 | 选 |
|---|---|
| 手里已经有 MQL4 的 EA 或自定义指标,且不打算重新购买 | MT4 |
| 要交易真实股票、期货,或需要交易所层级的市场深度 | MT5 |
| 打算做大量参数优化和历史回测 | MT5 |
| 以上三条都不符合 | MT5 |
多数中文新手三个问题的答案都是「否」,所以答案是 MT5。 这不是因为 MT5 更先进,而是因为在没有历史包袱的情况下,选功能超集的那个,未来不必再迁移一次。
最后提醒一件事
客户端不决定你的交易成本。点差、佣金、隔夜利息、滑点、执行速度,全部由经纪商决定,与你装 MT4 还是 MT5 无关。 在同一家经纪商开的 MT4 账户和 MT5 账户,拿到的是同一套报价源。(注意账户本身不通用:MT4 账户只能登录 MT4,MT5 账户只能登录 MT5,两者在服务器上是分开的,开户时就要选好。)
这句话之所以要单独强调,是因为中文外汇圈里有大量内容把平台选择说得像是能影响盈亏的关键决策。 它不是。真正影响成本的是你在第 29 课要学的经纪商选择, 以及账户类型的选择。客户端只是一个工具,选顺手的那个就够了。