【コラム】MT5×Python #7 — 最適化結果を XML から集計する(大量試行の第一歩)¶
#6 までで「二系統」を整理したうえで、テスター側で大量の組み合わせを試す現実的なやり方として、最適化 → XML → pandas に進みます。Python がテスターや最適化を起動するわけではありません。あくまで MT5 が出したファイルを後処理します。
この記事の3行まとめ
- 大量のパラメータ組は、まず MT5 の 最適化(Optimization) で回し、結果を XML 等で保存するのが現実的な第一歩
- Python は ファイルを読んで集計・整形する(公式 API に「テスター起動」はない)
- 連載マップ の流れとあわせて読むと位置づけがつかみやすい
1. なぜ「最適化 + Python」か¶
Python だけでテスターを何万回も起動することは 公式 API では想定されていません。一方、MT5 側の最適化は、1 回のセッションで多数のパラメータ組を処理できます。結果を XML(やリスト)で書き出し、並べ替え・フィルタ・CSV 化を Python に任せると、「大量試行のあとを読む」体験に近づけます。
「試す」は MT5、「並べる・比較する」は Python — という分担です。
2. 手順の骨子¶
- ストラテジーテスターで EA を選び、最適化を設定する(パラメータの範囲・ステップ、目的関数=プロフィット因子など)。
- 最適化が完了したら、結果を XML で保存する(メニュー名や形式は MT5 のビルドで差があります)。
- Python で XML を読み込み、
pandas.DataFrameに変換し、ソート・フィルタ・CSV 出力する。
ここまで進むと、「目的関数が高い順に並べた表」や、条件を絞った候補だけを残した CSV といった形にできます。最適化そのものは MT5 に任せ、比較・可視化・保管を Python に寄せるイメージです。
パースを書くとき
最適化結果 XML の タグ名や階層は、ビルドや保存手順で差が出ることがあります。手元の XML をテキストエディタで開き、実際の構造に合わせて xml.etree.ElementTree や pandas.read_xml などを選ぶと安全です。
実機の XML と構造が違う場合は、サンプルパーサ内のタグ名を編集してください。以下からサンプルスクリプトとテスト用 XML をダウンロードできます。
mt5_optimize_xml_sample.py をダウンロード mt5_optimize_result_sample.xml をダウンロード
ダウンロードしたスクリプトを scripts\research\ に配置し、プロジェクトのルートで実行します。
python scripts\research\mt5_optimize_xml_sample.py docs\downloads\mt5_optimize_result_sample.xml -o results.csv
3. 次回(#8)への橋渡し¶
それでも足りないのが、テスターやターミナルを外から無人で起動するタイプの自動化です。これは 公式 Python API の外になり、OS・パス・セキュリティの話が不可欠です。#8 では、限界と発展形を短く扱います。
🚀 「大量試行」をさらに自動化するツール
最適化 XML の集計が「手動でやる第一歩」だとすると、その先にあるのはテスト実行そのものの自動化です。
- JSON ファイルを
inbox/に置くだけでバックテストが自動実行 - 結果の HTML → JSON 変換も自動
- 寝ている間に複数通貨ペア × 複数パラメータのテストが完了
ジョブキュー方式の CLI ツールキットとして、note.com で紹介する予定です。
免責の一文¶
本記事は検証・学習用の技術メモであり、投資助言ではありません。FX には損失リスクがあります。最終判断はご自身の責任でお願いします。