【コラム】MT5×Python #4 — HTMLレポートを Python で読む¶
#3 で保存した HTML レポートを、いよいよ Python だけで後処理します。テスターを動かしているのは MT5 のままです。ここからは ファイルの話です。
この記事の3行まとめ
- テスターが保存した HTML には、JSON(
window.__report) が埋め込まれていることがある(旧形式は テーブルのみのことも) - 本記事では ダウンロードしたサンプルまたは
mt5_data_fetcher.py --chart-from-htmlで、Balance / Equity 風の PNG を再生成できる - あくまで 後処理 — Python がテスターを動かしているわけではない
1. HTML の中身を見てみる¶
MT5 のレポート HTML を テキストエディタで開くと、window.__report = {...} のような JavaScript オブジェクトが含まれる場合があります。ここに Balance や Equity のシリーズなどが入っており、後処理の原材料になります。
形式の差
MT5 のビルドや保存手順によって、HTML の構造が微妙に違うことがあります。想定外の形式だと取りこぼすので、手元の HTML を一度目で確認しておくと安心です(本サイトで配布するスクリプトは、リポジトリの最新版と同様に JSON 埋め込みと 旧テーブル形式の両方を想定しています)。
2. --chart-from-html を試す¶
本サイトでは、スクリプトをダウンロードしてすぐに試せるようにしています。
A. ダウンロードして試す(推奨)¶
-
次の 2 ファイルを同じフォルダに保存してください(片方だけでは動きません)。
mt5_report_extract.py をダウンロード mt5_chart_from_html_sample.py をダウンロード
-
Python と matplotlib / numpy を入れておきます(
MetaTrader5パッケージは不要です)。 -
仮想環境を使う場合は有効化し、保存したフォルダに移動してから実行します。
出力 PNG は既定では、HTML と同じ場所に ReportTester-xxxx_chart.png のような名前で並びます(-o で変更可)。
B. 多機能スクリプト(mt5_data_fetcher.py)¶
プロジェクト一式を手元に置いている場合や、週次レポート連携など 他機能も使う場合は、プロジェクトのルートで次を実行します。
mt5_data_fetcher.py の依存関係
スクリプトは先頭で MetaTrader5 を import しているため、--chart-from-html だけでも pip install MetaTrader5 が必要です。あわせて matplotlib / pandas / numpy も入れてください。
MT5 パッケージを入れたくない場合は、上記 A. のダウンロード版だけを使ってください。
スクリプトの中身を確認したい場合は、上記 A. のダウンロード版を参照してください。
--chart-from-html は 保存済み HTML を読むだけで済むため、MT5 へのログインや initialize() は不要です(mt5_data_fetcher の場合も --chart-from-html モードはファイル読み取り中心)。テスターはすでに終わっている前提で、ファイルの読み取り・画像生成に集中できます。
開発者向け: プロジェクト内には scripts\research\mt5_chart_from_html_sample.py(上記ダウンロード版と同等)と scripts\mt5_data_fetcher.py があります。
python scripts\research\mt5_chart_from_html_sample.py --chart-from-html "C:\path\to\ReportTester-xxxx.html"
テスター画面の レポートタブでは、Balance / Equity などが次のように確認できます(#3 で保存した HTML と同系統の内容です)。

タブを切り替えると、保有ポジションや履歴など別ビューも出ます。



3. うまくいかないとき¶
- JSON が取れない/旧テーブルだけ — HTML の形式が想定と違う。
window.__reportの有無をエディタで確認する。配布スクリプトは JSON 埋め込みと 旧ストラテジーテスター表の両方に対応しています(古いスクリプト単体を手元に残している場合は、上記のダウンロード版に差し替えてください)。 - 文字コード — Windows の MT5 が UTF-16 LE(先頭が
FF FE)で HTML を保存することがあります。配布のmt5_report_extract.pyおよびリポジトリのmt5_data_fetcher.py/backtest_parser.pyは UTF-8 と UTF-16 の両方で読めるようになっています。 - パスに全角やスペース — コマンドラインではクォートで囲む。
🛠️ backtest_parser.py(HTML → 要約 JSON)
プロジェクト内の scripts/backtest_parser.py は、HTML から要約を report_data.json に書き出す例です(プロジェクトのルートで実行する想定)。
4. 後処理で得られるもの¶
ブラウザで HTML を開けばグラフは見られますが、PNG として残すと、ブログ用の図・レポート・別ツールへの貼り付けがしやすくなります。複数回テストした結果を並べるときも、HTML と同じフォルダ規約にしておくと整理しやすいです。
次回予告¶
#5 では、テスターではなく、実口座/デモの約定履歴を history_deals_get 等で取り、pandas で集計する流れに進みます(デモ口座推奨)。
免責の一文¶
本記事は検証・学習用の技術メモであり、投資助言ではありません。FX には損失リスクがあります。最終判断はご自身の責任でお願いします。