EA迁移新VPS完整操作清单与上线验证步骤
EA迁移新VPS完整操作清单与上线验证步骤
有个数字经常被忽略:在把EA从一台VPS迁到另一台VPS的过程中,真正导致异常的不是代码本身,而是"环境假设"。历史数据显示,多数迁移后的问题集中在前72小时——不是策略失效,而是时间基准、品种后缀、合约参数这些看似琐碎的配置在新环境里对不上。迁移不是复制粘贴,更像一次受控实验:先把变量列清楚,再逐项验证。

先冻结旧环境,别急着关机器
迁移前第一件事不是登录新VPS,而是把旧环境"拍照存档"。至少导出三样东西:EA的.set参数文件、终端日志目录、以及品种列表截图。参数文件用MT4/MT5的"保存"按钮导出,别手动抄;日志目录路径一般在终端数据文件夹的MQL4/Logs或MQL5/Logs下,打包带走。
常见错误:只复制了.ex4/.ex5文件,忘了自定义指标和依赖的DLL。EA若调用了自定义指标句柄,指标缺失时编译能过,运行时却返回INVALID_HANDLE。迁移前用脚本扫一遍依赖:
- 列出EA源码中所有iCustom、IndicatorCreate调用
- 记录每个指标的文件名与所在子目录
- 确认是否有DLL调用及其位数(32/64位)
注意:MT4是32位程序,MT5有64位版本,DLL位数不匹配会在初始化阶段直接报错,且日志提示往往很含糊。
新VPS的时区与时间基准,最容易翻车的一环
EA里凡是涉及交易时段的逻辑,几乎都依赖服务器时间。新VPS的系统时区、终端连接的经纪商服务器时区,两者必须分开核对。举例来说,某经纪商的MT5服务器时间可能是GMT+2或GMT+3(随夏令时切换),而你的EA若用TimeCurrent()做时段过滤,迁移后时区没对齐,策略就会在错误的时间窗口开仓。
验证方法:在新终端里跑一段诊断脚本,打印TimeCurrent()、TimeLocal()与TimeGMT()三者差值,和旧环境记录对比。差值不一致就调整系统时区,而不是改EA代码。常见错误是把系统时区设成北京时间就以为万事大吉——终端时间由经纪商服务器决定,与本地系统时区无关,这个区分必须清楚。
品种命名与合约参数,逐项对齐
不同经纪商对同一品种的命名差异很实际。以主流平台为例,黄金可能写作XAUUSD、GOLD或XAUUSD.m;指数差价合约常带后缀如US30、DJ30。迁移后EA若用硬编码字符串下单,符号找不到就会静默失败。建议把品种名抽成输入参数,或写一个映射函数:
伪代码逻辑:输入逻辑品种名"XAUUSD",遍历SymbolsTotal(true),用StringFind匹配前缀,命中后返回实际名称;未命中则打印候选列表并返回空。这样换平台只需改映射表,不动策略主体。
合约参数同样要核对:点值、最小手数、手数步长、止损最小距离。这些值以经纪商官网公布为准,迁移后应在终端"规格"窗口逐项记录。示例参数(非真实回测结果):某平台黄金点值0.01、最小手数0.01、止损距离约20点;换平台后若止损距离要求变大,原本的固定止损可能被拒单。
部署与验证:分阶段放行
不要一上来就挂实盘。按这个顺序走:先编译通过,再策略测试器跑一遍历史数据(数据区间选覆盖至少一个完整波动周期的样本),然后挂模拟或小仓观察。评价指标看三项:订单成交率、滑点分布、日志中ERROR与WARNING的数量。
常见错误:测试器里用"每个 tick"模式通过,实盘却因VPS网络延迟出现成交价偏差。迁移后先记录新VPS到经纪商服务器的往返延迟,和旧环境对比,延迟明显升高就考虑换机房区域。另外,EA的定时器、OnTimer周期在迁移后也要确认没被重置。
最后一步是日志巡检。新环境跑满一个交易日,把日志拉出来搜关键字:invalid、not enough money、order send failed。有报错先定位是符号、资金还是权限问题,别急着改策略参数。
你在迁移EA时,是先验证时区还是先核对品种后缀?有没有遇到过编译通过但运行时静默失败的坑?留言说说你的排查顺序。
免责声明:本文仅代表作者观点,不构成任何投资建议。市场有风险,交易需谨慎。
