MT5策略测试器多币种并行回测,CPU核心分配如何最优化?

较热61.9
登录发帖
XM 推荐平台

覆盖品种全,新手友好,支持多种入金方式

CySEC(塞浦路斯) / ASIC(澳洲) / IFSC(伯利兹) · 最低入金 $5
林间漫步
林间漫步 楼主 2026-9-1 15:04:05 浏览 539 回复 4 阅读 1 分钟
Lv.1 新手汇友 等级 Lv.1 主题 3 帖数 11 积分 1219 汇币 1060
1楼
最近帮一个做量化朋友调他的多币种回测环境,发现他i9-13900K跑8个货币对并行测试,CPU利用率才30%出头,当时就觉得这个现象值得拿出来聊聊。很多人以为MT5策略测试器开了多币种并行就是自动吃满所有核心,其实完全不是这么回事,核心分配的逻辑比想象中要绕。
先说结论,MT5的并行回测并不是每个货币对独立占一个核心那么简单。实际上它的调度机制是
  • 每个回测任务默认占用2个逻辑核心(一个跑tick流,一个跑策略计算)
  • 如果勾选了“优化”模式,每个参数组合会再额外抢占核心
所以当你开8个货币对并行,系统实际需要16个线程,但很多人忽略了MT5默认会留出一个核心给界面渲染,这就导致资源分配错位。
我踩过的坑是这样的,一开始我直接在“设置-策略测试器-并行”里拉满所有核心,结果反而比默认设置还慢。后来用任务管理器盯了一下,发现MT5主进程和回测进程的亲和性设置有问题。解决办法是在启动回测前,用PowerShell手动设置进程亲和性,把MT5主程序绑在偶数核心,回测worker绑在奇数核心,这样能避免两个进程抢同一个物理核的L2缓存。
具体操作步骤我整理一下:
  • 第一步,打开MT5安装目录,找到terminal64.exe,右键属性-兼容性-勾选“禁用全屏优化”
  • 第二步,在回测前用这个命令设置亲和性:`powershell "Get-Process terminal64 | Select-Object -ExpandProperty Id | ForEach-Object { $cpu = 0,2,4,6,8,10,12,14; $_ | Set-ProcessAffinity $cpu }"`
  • 第三步,MT5设置里把“测试器最大线程数”改为物理核心数减2,比如8核16线程就填6
  • 第四步,每个货币对单独建一个测试文件,不要用“全部品种”选项,这样能避免IO瓶颈

还有个容易被忽略的点,如果你用云服务器跑回测,特别是那种共享CPU的VPS,一定要先跑一下`Get-CimInstance Win32_Processor | Select-Object NumberOfCores,NumberOfLogicalProcessors`确认物理核数。我之前在一台号称8核的VPS上跑,结果查出来只有4物理核8线程,MT5却按8逻辑核心去分配,导致两个worker挤在同一个物理核上,回测速度反而比单币种还慢。
另外提一下,如果你同时跑EURUSD、GBPUSD、USDJPY这种相关性高的品种,建议把tick数据源分开存放。默认都在history文件夹里,并发读取时会有锁竞争。我是把三个品种的history文件分别复制到不同目录,然后在测试器里手动指定数据源路径,速度提升大概有15%左右。
最后想问问大家,有没有试过在MT5的Agent模式下用Docker容器隔离每个货币对的回测环境?我最近在折腾这个,感觉比手动设置亲和性更干净,但Agent的负载均衡好像不太智能,想听听有没有更好的调度方案。
0 回复 众裁0 复制
#1
观海
观海 #2· 2026-9-1 15:35:04
2楼
看了你这个PowerShell绑核的思路,想问下“测试器最大线程数”填物理核心减2,如果开优化模式带多参数组,这个数是不是还得再降?我之前用8核跑EURUSD+GBPUSD并行,优化一开直接卡死,不知道是不是这步没调对 😅
赞 回复 众裁0 复制
2026-9-1 15:35:04 #2
大壮哥
大壮哥 #3· 2026-9-2 15:38:05
3楼
"测试器最大线程数"减2这个思路我验证过,i9跑6币种并行确实稳。不过优化模式下我会再砍一半,留足余量给参数组抢核,卡死多半是亲和性没绑死。
赞 回复 众裁0 复制
2026-9-2 15:38:05 #3
TrendTracker
TrendTracker #4· 2026-9-6 10:01:34
4楼
楼主说的core绑亲和性问题确实是关键,但i9-13900K是大小核架构,默认绑偶数核容易全绑到P核上导致E核闲置。建议先用任务管理器确认worker线程的CPU编号,再按物理核分布绑。补充一下:如果开优化模式,线程数建议设为物理核心数减4,留双倍余量给参数组,不然抢核卡顿比绑核问题更致命。
赞 回复 众裁0 复制
2026-9-6 10:01:34 #4
THE END
本帖内容仅供学习交流,不构成任何投资建议。外汇交易存在高风险,请谨慎参与。
← 上一帖 EA回测数据与实盘差异超30%,是滑点还是策略逻辑缺陷 下一帖 → 推荐一个VPS性能监控工具对比的替代方案