分类
平台
难度
入门
适用场景
MT5 操作EA 评估

虚拟专用服务器

虚拟专用服务器(VPS)是租来的一台远程计算机,全天候开着 MetaTrader——本机休眠或掉线时 EA 也照常交易,而且它就摆在离经纪商服务器更近的地方。

亦称:VPS, 交易 VPS, MT5 VPS, 外汇 VPS, VPS 服务器, 虚拟主机

更新于 · 审阅于

一句话讲清

数据中心里的一台计算机,它唯一的工作就是让 MetaTrader 一直开着。它不会让一套策略变得更好;它消除的是那些与交易毫无关系、却能让策略停下来的途径。

为什么重要

EA 只在自己的终端运行时才存在,所以停机不是让交易亏钱,而是把交易直接抹掉。在这里公开的 27 条记录上,全部回测入场中有一半以上落在 08:00–16:59 UTC 之外——而入场最密集的那一个小时,00:00 UTC,正是东京的早上九点。

  • 错过的入场什么也不会记下。那笔交易就是不存在,账目于是一点点偏离回测,却没有任何错误可供追查。
  • Windows 按它自己的时间表重启。在台式机上那只是一次打扰;在持有仓位的机器上那就是一次停机。
  • 延迟要紧到什么程度,与目标的大小成正比,而这里的目标都不小、持仓也都很长:没有任何一条记录的交易时长中位数低于一小时。

在 MetaTrader 5 中

在 MT5 的什么位置

  • 导航器(Navigator)→ 右键点击账户 → 注册虚拟服务器(Register a Virtual Server)—— MetaTrader 自带的托管服务,在终端里直接租用
  • 工具(Tools)→ 选项(Options)→ 智能交易系统(Expert Advisors)→ 允许算法交易(Allow Algo Trading)—— 每次重启之后都要重新确认的开关
  • 工具箱(Toolbox)→ 日志(Journal)—— 本地日志。被托管的那个终端另有一份自己的日志

EA 如何使用它

  • EA 里什么都不用改。VPS 是终端运行的地方,而不是代码要处理的对象。
  • 虚拟主机迁移的是一份快照。第三方 VPS 跑的是一个完整的终端——需要自定义文件、DLL 或者同时开几个终端时,要的就是后者。
  • 只有 EA 扛得过重启,正常运行时间才帮得上忙。会在 OnInit 里根据未平仓持仓重建状态的 EA 能恢复;把状态只放在内存里的那种恢复不了。

常见设置

设置项 常见取值 备注
延迟与 RAM 本目录不做测量 本站不公布任何主机侧的遥测数据,所以这里写下任何毫秒数或内存数字都不会有出处。被测出来的是持仓时间:1,362.6 分钟。
操作系统 Windows Server MetaTrader 是一个 Windows 二进制程序。兼容层会另外带来它自己的一套失效方式。
主机时钟 别去动它 EA 读的是 TimeCurrent(),也就是经纪商的时间,不是主机的时间。这 27 条记录里有七条暴露了 GMT 偏移输入参数,其中六条把它留在 0。

常见运行问题

  • 租期到期或者信用卡过期,实例在还持有仓位的情况下被停用。
  • 终端启动了,账户却没有登录。图表看上去一切正常,EA 却在空转。

相关 MT5 函数

TerminalInfoInteger(TERMINAL_CONNECTED)
终端与交易服务器之间是否还连着——这就是该记录下来的心跳。
TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)
终端层面的许可。重启之后如果算法交易没打开,它就是 false。
TimeCurrent()
经纪商服务器时间——时段过滤器读的是这个时钟,不是主机的时钟。本页账目上的时间戳是 UTC,那又是第三样东西。

示例

一小时的停机,在每套策略身上吃掉的年度份额都不一样,因为入场并不是均匀铺开的。

Sundial,落在同一个 UTC 小时内的入场
557 笔中的 557 笔
Tradewind,同一口径
6.12 %
27 条记录的中位数
14.85 %

在比较各家主机的正常运行时间数字之前,先问清楚你的 EA 需要的是哪一个小时。

计算 Sundial 的 557 笔入场里有 555 笔带着 00:55 UTC 这个时间戳

结果 同一个停机窗口,抹掉了一整套策略,却几乎没有擦到另一套

怎么使用

把托管方案对准策略持仓多久,而不是对准套餐的价格。

区间 含义
持仓时间中位数不足 2 小时(27 条里的 2 条) 一次往返在这段行情里占的比例是看得见的;请挑经纪商所在的区域。
持仓时间中位数 2–24 小时(27 条里的 6 条) 附近一台基础实例就够了;把钱花在重启后的行为上。
持仓时间中位数超过一天(27 条里的 19 条) 延迟无关紧要。你买的全部就是正常运行时间。
无论持仓多久,跑在家用机器上 只有盯着看的时候才行得通;这里多数仓位都活过了开仓当天。
  • 把 MetaTrader 设为随 Windows 一起启动,然后特意重启一次来验证它。确认账户重新登录上了,算法交易也还开着。
  • 往返时间要从 VPS 量到经纪商的交易服务器,而不是从你的办公桌量起。

经纪商附送的免费 VPS 优惠都挂着最低余额或月交易量条件;先把资格条款读完。

常见误区

挑离自己最近的那个位置

真正要紧的那一段是从服务器到经纪商。你一周连一次,EA 每下一单就连一次。

以为 MetaTrader 的虚拟主机会一直同步

它只在你下令时迁移一份快照。之后你在本地改了输入参数,被托管的那份副本仍然按旧值交易。

用错误的时钟去读最繁忙的那个小时

这些账目时间戳是 UTC。把 08:00–16:59 当成经纪商时间来读,办公桌以外的那部分份额就从 54.28 % 变成 64.49 %。

深入说明

终端真正必须醒着的时候

在 27 条公开记录、18,219 笔回测入场上测得数值
落在 08:00–16:59 UTC 之外的入场54.28 %
开仓与平仓不在同一个日历日的交易64.71 %
持仓时间中位数,全部交易1,362.6 分钟
持仓时间中位数最短的记录(Chrysalis)67.5 分钟
带有 GMT 偏移、夏令时或时段小时输入参数的记录27 条中的 8 条
每条记录每年入场笔数的中位数56.4

有两行决定了这笔购买。全部入场中有一半以上落在办公桌前的时段之外,接近三分之二 的仓位活到了下一个日历日——不过真正跑满 24 小时以上的只有 48.36 %,因为一条日历 分界线并不是一段时长。七条记录暴露了 GMT 偏移输入参数,其中六条把它留在 0;这八条 里,把任何一个时钟类输入参数设成非零值的只有三条。把终端在不同区域之间搬来搬去, 丝毫改变不了它在什么时候交易。

错过一小时,不等于只错过一小时

处在中位数上的那条记录,把自己 14.85 % 的入场压在最繁忙的那一个小时里。 Sundial 把全部 557 笔都放在那里,其中 555 笔正好打上 00:55。Tidewell Slack 把每一笔入场都装进连续的两个小时里;Almanac 每天在三个 固定时刻出手——00:55、07:50 和 15:00——所以一次停机最多只能拿走其中之一。 Tradewind 最繁忙的那一个小时只占 6.12 %。

停机的代价是策略的属性,不是主机的属性。99 % 的正常运行时间,对一个每小时都交易 的 EA 意味着一件事,对一个只在 00:55 存在的 EA 又意味着另一件事。

安静的策略和死掉的终端长得一模一样

最冷清的时候,处在中位数上的那条记录,连续两次入场之间隔着 53.4 天。Windrose 曾经 有过 193.4 天没有一笔入场。Chrysalis 是 760.8 天——但它是这里唯一一条账目整整跳过 一个日历年的记录,而在那段沉默期间,另外 26 条记录记下了 3,770 笔入场。一条写成 “这一周没有交易就通知我”的规则,会在健康的策略上响个不停,却会在慢速策略停机时 一声不吭。

要盯的是终端,不是账目。用定时器记录 TERMINAL_CONNECTED,把消失的心跳当成警报。

相关术语与接下来该查什么

VPS 改变的是智能交易系统在哪里运行,永远不会 改变它做什么。这个决定里属于成交的那一半,归滑点和 经纪商的成交模型管。属于策略的那一半,要对着 剥头皮来读——那是唯一一类目标小到能让往返时间显形 的策略。经纪商捆绑的 VPS 优惠都卡着余额和交易量的门槛;这里有据可查的是 XM 的那一份。目录里的每一件商品都公开了它 背后的账目,所以你可以自己去查一遍打算托管的那个 EA 的小时分布。

常见问题

运行 MT5 的 EA 一定要用 VPS 吗?
只有打算让它无人值守地运行时才需要。EA 只在终端开着并保持连接时才交易,所以一台会休眠、会更新、会掉线的机器,会不声不响地让策略停下来——何况我们公开记录里的多数入场,都落在办公桌前的时段之外。
一个 EA 需要多低的 VPS 延迟?
这要看它瞄的目标有多大。追逐个位数 pip 的剥头皮策略,需要和经纪商共处同一个数据中心区域;本目录不公布任何延迟测量值,所以我们不会在这件事上写出一个毫秒数字。而持仓以小时计的策略,几百毫秒对它毫无影响,这里的每一条记录持仓都超过一小时。
MetaTrader 内置的虚拟主机和 VPS 是一回事吗?
两者目的相同,做法不同。虚拟主机是在 MetaTrader 内部租一个被托管的终端,并把你的图表和 EA 迁过去一份快照——简单,但那是一次性的复制。常规的 VPS 是一台由你自己管理的完整 Windows 机器,需要自定义文件或者同时开几个终端时,要的就是它。
用了 VPS,我的 EA 会更赚钱吗?
不会。它消除的是停机,缩短的是订单要走的距离;它碰不到策略本身。它改变的,是回测里装着的那些交易与账户真正成交的那些交易之间的落差。
怎么确认一个被托管的终端还在交易?
别从交易列表上看——安静的策略和死掉的终端,连着几周给出的都是同一张空白画面。用定时器记录 TerminalInfoInteger(TERMINAL_CONNECTED),心跳一旦消失就报警。

相关文章