上周把用了大半年的一个欧美 scalp EA 从本地搬到 VPS,本地回测胜率 68%,搬过去再跑一遍,直接掉到 51%。当时第一反应是 VPS 延迟问题,换了三家机房,从东京换到新加坡再换到法兰克福,结果都一样。后来翻 MT4 的日志才发现,问题根本不在延迟,而是三个默认设置被悄悄改了。
第一个坑:点差模型。本地回测我一直用的是“当前点差”,因为平时挂的是 ECN 账户,欧美点差常在 0.1-0.3 之间浮动。但 VPS 上装的 MT4 如果是默认安装,回测时点差模型会切到“固定点差”,而且默认值经常是 2 个点起步。别小看这 1 个多点的差距,我那套 EA 平均每单盈利才 4 个点,止损 6 个点,点差一放大,盈亏比直接从 1:1.5 掉到 1:0.8,胜率不崩才怪。后来我把 VPS 上的 MT4 重新配置,手动把点差模型改成“当前点差”,并且用历史中心的数据做了一次同步,胜率才回到 64% 附近。
第二个坑:报价数据源。这里有个很隐蔽的地方——本地 MT4 连的是你平时看盘的经纪商服务器,VPS 上如果没手动选,MT4 会默认连到 MetaQuotes 的公共服务器。两者报价不一样,尤其是黄金和镑美这种波动大的品种,差个 3-5 个点很正常。我对比过同一段 15 分钟 K 线,两边的高低价能差出 8 个点,回测结果自然对不上。解决办法是在 VPS 的 MT4 里,手动添加你实盘账户所在的服务器地址,然后重新下载历史数据。这一步不做,后面怎么调都是白搭。
第三个坑:复盘模型。MT4 回测有三种模式:每 tick、每控制点、仅开盘价。本地很多人图快用“仅开盘价”,但 VPS 上如果 CPU 核心数不够,系统有时会自动降级到“每控制点”。对于挂单和移动止损频繁的 EA,这两种模式的成交价能差出好几个点。我现在的做法是,不管本地还是 VPS,统一用“每 tick”跑一遍,虽然慢,但结果最接近实盘。如果 VPS 配置低,宁可换一台 4 核的,也别在这里省。
说个对比:我试过用同样的 EA、同样的历史数据,只改这三个设置,在 VPS 上跑出来的胜率从 51% 一路回到 66%,跟本地只差 2 个点。所以下次你发现 EA 上 VPS 后回测不对劲,先别急着怀疑策略失效,把这三个地方翻出来看一眼。你们有没有遇到过类似的情况,最后查出来是什么原因?
补充一句,记得顺手把“复盘显示”也打开,不然你连点差什么时候扩大的都看不到,别问我怎么知道的。
第一个坑:点差模型。本地回测我一直用的是“当前点差”,因为平时挂的是 ECN 账户,欧美点差常在 0.1-0.3 之间浮动。但 VPS 上装的 MT4 如果是默认安装,回测时点差模型会切到“固定点差”,而且默认值经常是 2 个点起步。别小看这 1 个多点的差距,我那套 EA 平均每单盈利才 4 个点,止损 6 个点,点差一放大,盈亏比直接从 1:1.5 掉到 1:0.8,胜率不崩才怪。后来我把 VPS 上的 MT4 重新配置,手动把点差模型改成“当前点差”,并且用历史中心的数据做了一次同步,胜率才回到 64% 附近。
第二个坑:报价数据源。这里有个很隐蔽的地方——本地 MT4 连的是你平时看盘的经纪商服务器,VPS 上如果没手动选,MT4 会默认连到 MetaQuotes 的公共服务器。两者报价不一样,尤其是黄金和镑美这种波动大的品种,差个 3-5 个点很正常。我对比过同一段 15 分钟 K 线,两边的高低价能差出 8 个点,回测结果自然对不上。解决办法是在 VPS 的 MT4 里,手动添加你实盘账户所在的服务器地址,然后重新下载历史数据。这一步不做,后面怎么调都是白搭。
第三个坑:复盘模型。MT4 回测有三种模式:每 tick、每控制点、仅开盘价。本地很多人图快用“仅开盘价”,但 VPS 上如果 CPU 核心数不够,系统有时会自动降级到“每控制点”。对于挂单和移动止损频繁的 EA,这两种模式的成交价能差出好几个点。我现在的做法是,不管本地还是 VPS,统一用“每 tick”跑一遍,虽然慢,但结果最接近实盘。如果 VPS 配置低,宁可换一台 4 核的,也别在这里省。
说个对比:我试过用同样的 EA、同样的历史数据,只改这三个设置,在 VPS 上跑出来的胜率从 51% 一路回到 66%,跟本地只差 2 个点。所以下次你发现 EA 上 VPS 后回测不对劲,先别急着怀疑策略失效,把这三个地方翻出来看一眼。你们有没有遇到过类似的情况,最后查出来是什么原因?
补充一句,记得顺手把“复盘显示”也打开,不然你连点差什么时候扩大的都看不到,别问我怎么知道的。
