コンテンツにスキップ

【コラム】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. ダウンロードして試す(推奨)

  1. 次の 2 ファイルを同じフォルダに保存してください(片方だけでは動きません)。

    mt5_report_extract.py をダウンロード mt5_chart_from_html_sample.py をダウンロード

  2. Pythonmatplotlib / numpy を入れておきます(MetaTrader5 パッケージは不要です)。

    Batchfile
    pip install matplotlib numpy
    
  3. 仮想環境を使う場合は有効化し、保存したフォルダに移動してから実行します。

    Batchfile
    cd C:\作業用フォルダ
    python mt5_chart_from_html_sample.py --chart-from-html "C:\path\to\ReportTester-xxxx.html"
    

出力 PNG は既定では、HTML と同じ場所に ReportTester-xxxx_chart.png のような名前で並びます(-o で変更可)。

B. 多機能スクリプト(mt5_data_fetcher.py

プロジェクト一式を手元に置いている場合や、週次レポート連携など 他機能も使う場合は、プロジェクトのルートで次を実行します。

Batchfile
python scripts\mt5_data_fetcher.py --chart-from-html "C:\path\to\ReportTester-xxxx.html"

mt5_data_fetcher.py の依存関係

スクリプトは先頭で MetaTrader5import しているため、--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 があります。

Batchfile
python scripts\research\mt5_chart_from_html_sample.py --chart-from-html "C:\path\to\ReportTester-xxxx.html"

テスター画面の レポートタブでは、Balance / Equity などが次のように確認できます(#3 で保存した HTML と同系統の内容です)。

ストラテジーテスター「レポート」— Balance / Equity チャートの例

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

レポート「保有ポジション」の例

レポート「取引履歴」の例

レポート「MFE/MAE」タブの例


3. うまくいかないとき

  • JSON が取れない/旧テーブルだけ — HTML の形式が想定と違う。window.__report の有無をエディタで確認する。配布スクリプトは JSON 埋め込み旧ストラテジーテスター表の両方に対応しています(古いスクリプト単体を手元に残している場合は、上記のダウンロード版に差し替えてください)。
  • 文字コード — Windows の MT5 が UTF-16 LE(先頭が FF FE)で HTML を保存することがあります。配布の mt5_report_extract.py およびリポジトリの mt5_data_fetcher.py / backtest_parser.pyUTF-8 と UTF-16 の両方で読めるようになっています。
  • パスに全角やスペース — コマンドラインではクォートで囲む。

🛠️ backtest_parser.py(HTML → 要約 JSON)

プロジェクト内の scripts/backtest_parser.py は、HTML から要約を report_data.json に書き出す例です(プロジェクトのルートで実行する想定)。


4. 後処理で得られるもの

ブラウザで HTML を開けばグラフは見られますが、PNG として残すと、ブログ用の図・レポート・別ツールへの貼り付けがしやすくなります。複数回テストした結果を並べるときも、HTML と同じフォルダ規約にしておくと整理しやすいです。


🛠️ 製品化した CLI(別媒体・掲載予定)

PF・MaxDD などをまとめた MT5 Backtest Kit を、note.com で紹介する予定です。

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


次回予告

#5 では、テスターではなく実口座/デモの約定履歴history_deals_get 等で取り、pandas で集計する流れに進みます(デモ口座推奨)。


免責の一文

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


#3 に戻る 連載マップ #5 へ


関連用語

— SPONSORED —