コンテンツにスキップ

【コラム】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. 手順の骨子

  1. ストラテジーテスターで EA を選び、最適化を設定する(パラメータの範囲・ステップ、目的関数=プロフィット因子など)。
  2. 最適化が完了したら、結果を XML で保存する(メニュー名や形式は MT5 のビルドで差があります)。
  3. Python で XML を読み込み、pandas.DataFrame に変換し、ソート・フィルタ・CSV 出力する。

ここまで進むと、「目的関数が高い順に並べた表」や、条件を絞った候補だけを残した CSV といった形にできます。最適化そのものは MT5 に任せ、比較・可視化・保管を Python に寄せるイメージです。

パースを書くとき

最適化結果 XML の タグ名や階層は、ビルドや保存手順で差が出ることがあります。手元の XML をテキストエディタで開き、実際の構造に合わせて xml.etree.ElementTreepandas.read_xml などを選ぶと安全です。

実機の XML と構造が違う場合は、サンプルパーサ内のタグ名を編集してください。以下からサンプルスクリプトとテスト用 XML をダウンロードできます。

mt5_optimize_xml_sample.py をダウンロード mt5_optimize_result_sample.xml をダウンロード

ダウンロードしたスクリプトを scripts\research\ に配置し、プロジェクトのルートで実行します。

Batchfile
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 で紹介する予定です。

note.com(公開後に詳細へ)


免責の一文

本記事は検証・学習用の技術メモであり、投資助言ではありません。FX には損失リスクがあります。最終判断はご自身の責任でお願いします。


#6 に戻る 連載マップ #8 へ


関連用語

— SPONSORED —