MT5 最適化とは?
お使いのコンピューターの Docker worker が MT5 最適化を実行し、ダッシュボードのコマンドを定期的に確認します。
EA(.ex5)、パラメータグリッド(.set)、MT5 ブローカー口座(デモまたはリアル)はご自身で用意します。結果はコンピューターの reports フォルダーに保存され、ダッシュボードに Passed と Favorites として表示されます。会社ポートフォリオには、対応するポートフォリオ EA のソースコードが必要です。
この機能はセルフホストです。PositionRelay が代わりに MetaTrader を動かすことはありません。現時点でホスト型オプティマイザーはありません。
仕組み
公開されている Wine + MetaTrader 5 Docker イメージがマシン上で動作します。ハートビートは PositionRelay User ID で認証し、Ultimate 権限を確認したうえでダッシュボードのコマンドを待ちます。
検証済みの結果は Passed と Favorites に表示されます。会社ポートフォリオには、対応するポートフォリオ EA のソースコードも必要です。
- Ultimate に加入し、Dashboard → Setup → MT5 Optimizations を開く。
- Docker をインストールし、お使いの OS に合ったセットアップウィザードに従ってください。
- Experts と SetFiles をマウントし、optimizer.env を書いてコンテナを起動する。
- 起動ログでブローカー認証を確認してから、Dashboard → Optimizations で worker がオンラインであることを確認します。
- 日付・銘柄・戦略を設定し、Start を押す。
要件
- 有効な PositionRelay Ultimate サブスクリプション。
- Docker が動作する Windows、Linux、または Intel macOS の x64 コンピューター。Apple Silicon / ARM は非対応です。
- リアルティック履歴に十分な RAM とディスク容量。Docker Desktop を使う場合は設定でリソースを調整できます。
- MT5 ブローカー口座(デモまたはリアル)のログイン、パスワード、サーバー。
- 自作のコンパイル済み EA(.ex5)。MQL5 Market の EA はアクティベーションロックのため動作しません。
- ウィザードの説明どおり、SetFiles/Classic/<timeframe> 配下に .set ファイルを置きます。
Docker セットアップ
手順ごとのインストール方法は Dashboard → Setup → MT5 Optimizations にあります。ウィザードが OS に合ったフォルダー、ファイル、コマンドを示し、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 を削除しないでください。
初回起動では、heartbeat の前にブローカーログインを行うため、数分かかる場合があります。コンテナのログを確認してください。"Starting optimizer heartbeat" の表示後、数回のポーリングを経て Optimizations ページに worker がオンラインと表示されます。
- optimizer.env をコミットしないでください。
- Experts と SetFiles は読み取り専用でマウントされ、reports は書き込み可能です。
- MT5 ツリーとティックキャッシュは名前付きボリューム positionrelay-mt5 にあります。
ダッシュボードから実行
Dashboard → Optimizations を開きます。日付範囲、銘柄、時間足、戦略、最適化モード、残高、最大エクイティドローダウンを選びます。必要に応じて検証後のロバストネスを有効にします。
Start は新しいバッチを開始します。Resume は中断した実行を続行します。Stop は実行中のバッチを止めますが、worker はオンラインのままです。Clean はホスト上のテスターキャッシュを削除します。
ページを開いている間、ライブ状態は数秒ごとに更新されます。ジョブ中はコンテナを起動したままにしてください。
結果・お気に入り・ポートフォリオ
Passed 行はバッチで検証を通過した候補です。ダッシュボードでお気に入りを付け、worker がホストの Favorites フォルダに同期できます。
会社ポートフォリオは現在 PositionRelay のポートフォリオ EA 1 種類のみに対応し、公開イメージに含まれないソースコードが必要です。自作のコンパイル済み .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 とティックキャッシュが残ります。新しい 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 を使用。
- ディスク不足 / ティックが遅い — Docker Desktop のリソースを増やし、リアルティック履歴用の空き容量を確保。
- Apple Silicon / ARM — 非対応です。x64 コンピューターを使用してください。
- ダッシュボードでコマンド失敗 — docker logs -f positionrelay-optimizer で worker エラーを確認。
