什么是 MT5 优化?
您电脑上的 Docker worker 运行 MT5 优化,并定期接收控制面板命令。
您需要提供 EA(.ex5)、参数网格(.set)和 MT5 经纪账户(模拟或真实)。结果保存在电脑的 reports 文件夹中,并在控制面板显示为通过项和收藏。公司组合还需要受支持的组合 EA 的源代码。
此功能为自托管。PositionRelay 不会替您运行 MetaTrader。目前没有托管优化器。
工作原理
已发布的 Wine + MetaTrader 5 Docker 镜像在您的机器上运行。心跳进程使用您的 PositionRelay User ID 鉴权,检查 Ultimate 权限,并等待控制面板命令。
验证通过的结果显示在 Passed 和 Favorites。公司组合还需要受支持的组合 EA 的源代码。
- 订阅 Ultimate,打开 Dashboard → Setup → MT5 Optimizations。
- 安装 Docker,并按照适合您操作系统的设置向导操作。
- 挂载 Experts 与 SetFiles,编写 optimizer.env,然后启动容器。
- 先在启动日志中确认经纪账户已授权,再检查 worker 是否在 Dashboard → Optimizations 显示在线。
- 配置日期、品种与策略,然后点击 Start。
要求
- 有效的 PositionRelay Ultimate 订阅。
- 运行 Docker 的 Windows、Linux 或 Intel macOS x64 电脑。不支持 Apple Silicon / ARM。
- 需要足够的 RAM 和磁盘空间存储真实 tick 历史;使用 Docker Desktop 时可在设置中调整资源。
- MT5 经纪账户(模拟或真实)的登录名、密码和服务器。
- 您自己编译的 EA(.ex5)。MQL5 Market EA 受激活锁定,无法运行。
- 按照设置向导,将 .set 文件放在 SetFiles/Classic/<timeframe> 下。
Docker 设置
分步安装说明位于 Dashboard → Setup → MT5 Optimizations。向导会显示适合您系统的文件夹、文件和命令,并填入 User ID。
文件存放位置:选项 1 是您电脑上的文件夹(Windows 为 C:\PositionRelay\optimizer,Linux 和 macOS 为 $HOME/PositionRelay/optimizer),用于存放 EA、.set 文件、Broker/servers.dat 和 optimizer.env。目前只有这一种方式,向导也使用它。选项 2(将 EA、.set 文件和环境变量上传到 PositionRelay)即将推出,使用风险由您自行承担。
Experts、SetFiles、Broker 和 reports 的每条 -v 命令中,左侧是电脑上的文件夹,/data/... 是容器内的路径。如果文件在其他位置,请分别替换完整的主机路径,在 Windows 上也要包括盘符。只修改 --env-file 不会改变这些挂载。
在已连接经纪商的 MT5 终端中选择 File → Open Data Folder。只将 config/servers.dat 复制到优化器的 Broker 文件夹,让 Docker 中的 MT5 找到经纪商。不要复制 accounts.dat。设置向导会显示准确的目标路径。
按照向导操作并使用您的 MT5 经纪账户。只有日志显示“Broker login authorized”后,才能移除 MT5_PASSWORD。
首次启动时,容器会先尝试登录经纪账户,再启动心跳,可能需要几分钟。请查看容器日志。出现 "Starting optimizer heartbeat" 后,再等待几次轮询,worker 才会在 Optimizations 页面显示在线。
- 切勿提交 optimizer.env。
- Experts 与 SetFiles 以只读方式挂载;reports 可写。
- MT5 目录树与 tick 缓存在命名卷 positionrelay-mt5 上。
从控制面板运行
打开 Dashboard → Optimizations。选择日期范围、品种、周期、策略、优化模式、余额与最大净值回撤。可选在验证后启用稳健性测试。
Start 开始新批次。Resume 继续中断的运行。Stop 停止当前批次;worker 仍保持在线。Clean 清除主机上的测试器缓存。
页面打开时,实时状态每隔几秒刷新。任务期间请保持容器运行。
结果、收藏与组合
Passed 行为批次中通过验证的幸存者。在控制面板标记收藏;worker 可将其同步到主机 Favorites 文件夹。
公司组合目前仅支持一种 PositionRelay 组合 EA,并需要公开镜像中不包含的源代码。使用自己编译的 .ex5 可以优化、验证和收藏,但不能构建组合。
报告保存在您于主机上创建的 reports 文件夹中。
更新镜像
要检查是否有新镜像,请运行 docker pull ghcr.io/razvantomegea/position-relay-portfolio-optimizer:latest(设置向导中的“下载”命令)。pull 状态只说明本地镜像,不能说明正在运行的容器是否已使用该镜像。请比较 docker inspect --format '{{.Image}}' positionrelay-optimizer 与 docker inspect --format '{{.Id}}' ghcr.io/razvantomegea/position-relay-portfolio-optimizer:latest。若两者相同,可让容器继续运行;若不同,或之前已下载但推迟了重新创建,请等待正在运行的任务结束,再使用设置向导最后一步中的命令重新创建容器。镜像更新仅替换 worker;卷会保留 MT5 和 tick 缓存。新版 MT5 需要单独更新。
故障排除
- Worker 一直离线 — 确认 Ultimate 有效、POSITIONRELAY_USER_ID 与 Setup 一致,且 docker logs 显示心跳。
- 经纪商登录尚未确认 — 检查从正常运行的 MT5 复制的 Broker/servers.dat,然后检查 MT5_LOGIN、MT5_PASSWORD 和 MT5_SERVER。只有在日志显示 "Broker login authorized" 后才从 env 文件移除密码。
- 首次登录时 Wine 可能输出 fixme 消息和图形库错误。仅凭这些行无法判断成功或失败。请查看 "Broker login authorized" 或 "broker login not confirmed",然后确认 "Starting optimizer heartbeat"。即使经纪登录失败,worker 仍可能显示在线。
- EA 无法运行 — Market 购买的 EA 受激活锁定。请使用自己编译的 .ex5。
- 磁盘不足 / tick 过慢 — 提高 Docker Desktop 资源,并腾出真实 tick 历史空间。
- Apple Silicon / ARM — 不支持。请使用 x64 电脑。
- 控制面板命令失败 — 打开 docker logs -f positionrelay-optimizer 查看 worker 错误。
