用 MQL5 云网络把 EA 优化提速上百倍
本地代理、局域网代理区、云网络与分布式计算
一、什么是云网络优化
MT5 的「云网络(MQL5 Cloud Network)」是一群志愿者提供的分布式计算资源,你可以用它加速策略测试器的遗传优化:把参数组合拆成小任务,分发到网络里的多台机器并行跑,再把结果回收汇总。对需要扫海量参数的 EA,本地跑几天的事,云网络几小时就能出。
本质是把「单机的暴力搜索」变成「众包的并行搜索」。代价是要按计算量付费(或你贡献空闲算力抵扣),且要信任网络节点跑你的 EA——所以只在用标准、无害的回测逻辑时启用。
二、怎么启用
在策略测试器的「代理」页勾选使用 MQL5 云网络,登录 MQL5 社区账号并充值/贡献算力。之后选「遗传算法」优化模式,测试器会自动把种群分发到网络。你本地只需汇总与筛选最优结果,重活交给网络。
三、遗传优化的评分函数
云优化要有一个明确的「谁更好」标准,这就是 OnTester 返回的评分。评分设计决定优化方向:单纯返回总盈利会诱导过拟合尖峰,更好的是风险调整指标(如盈利因子×回撤倒数)。评分写对了,网络才帮你找到稳健参数而非漂亮幻觉。
double OnTester()
{
double pf = TesterStatistics(STAT_PROFIT_FACTOR);
double dd = TesterStatistics(STAT_EQUITY_DDREL_PERCENT);
return (pf>0) ? pf*(100.0/(100.0+dd)) : -1; // 风险调整评分
}
四、并发与额度控制
云网络按核时计费,无节制地开大量代理会很快烧钱。建议先用本地少量代数跑通逻辑、定好评分,再用云网络做大规模搜索;并设好代理数量上限与预算上限,避免一夜爆单。优化是手段,不是烧钱竞赛。
五、结果管理
优化产出一堆参数组合,要按评分排序,挑前几名做样本外验证:用没参与优化的历史段跑一遍,看是否仍稳健。只信样本外也稳的前几名,其余再漂亮也是拟合噪声。把每次优化的参数与评分归档,方便对比迭代。
六、本地 vs 云
低频、参数少的策略,本地多核足够,不必上云;高频扫参、遗传算法大种群,才值得用云网络换时间。折中做法:本地做粗筛定范围,云网络做精搜。这样既省算力钱,又不耽误迭代速度。
七、常见坑
- 评分函数只返回总盈利,诱导过拟合
- 不设预算上限,云算力费用失控
- 忘了样本外验证,把拟合当稳健
- 基础策略期望为负还指望优化翻盘
- 代理网络跑含隐私/外部调用的 EA 有泄漏风险
八、设计抗过拟合的评分函数(进阶)
基础评分只 return 净利润,优化器会狂找「在历史里最赚」的参数,多半是过拟合。更稳的评分要惩罚不稳定与风险:用 profit factor(总盈利除以总亏损)、recovery factor(净利润除以最大回撤)、甚至要求最少成交笔数,把「靠一两次运气赚大钱」的组合压下去。
还可以在 OnTester 里叠加惩罚项:若最大回撤超过阈值直接给低分,若持仓时间过长也扣分。评分函数就是你对「好策略」的定义,定义得越贴近真实目标,云优化找出来的参数才越接近实盘可用,而不是只会在样本内好看。
double OnTester()
{
double pf = TesterStatistics(STAT_PROFIT_FACTOR);
double rf = TesterStatistics(STAT_RECOVERY_FACTOR);
double dd = TesterStatistics(STAT_EQUITY_DD);
double tr = TesterStatistics(STAT_TRADES);
if(tr < 30 || dd > 0.25) return 0.0; // 样本太少或回撤过大直接弃
return pf * rf; // 兼顾盈利质量与回撤恢复力
}
九、样本外验证与过拟合识别
云优化跑完,别急着上实盘。把参数按评分排序,取前几名,用没参与优化的历史段(样本外)重跑一遍,看表现是否仍接近样本内。若样本内漂亮、样本外崩塌,就是典型过拟合——这组参数只记住了历史噪声。
进阶做法是 Walk-Forward(滚动窗口):用 2019 到 2022 优化、2022 到 2023 验证,再往前滚一截重新优化验证,看参数是否稳定可迁移。能跨窗口保持正向的参数,才值得小仓试实盘;否则宁可弃用,云网络省下的时间不该用来给烂策略找看起来不错的参数。