【移植#32】バックテスト後の確認チャートを毎回同じ見た目にする — tester.tpl向け表示プリセット¶

この記事の3行まとめ
- MT5では、単体テスト後に開く確認チャートへ
tester.tplを適用できます - 配布インジケーターはGreen on Black、SMA20/50、設定確認パネルを一度に作ります
- 専用MT5でSMA値、8バッファ、7項目のチャート設定を独立照合しました
今回の原典は「テスターへ毎回インジケーターを載せる手間」¶
投稿日順で次に当たる2010年1月19日の記事では、空のEAをビジュアルテストするとき、開始後に毎回テンプレートやインジケーターを適用する手間が取り上げられていました。
元記事「EAの名前をテンプレート名にしてバックテストする。」を読む
原典のMT4では、EA名と同じテンプレート名やtester.tplを使う方法が説明されています。ただし、現在のMT5公式リファレンスで明記されているのは、単体テスト後に開くチャートへtester.tplを適用し、無ければdefault.tplを使うという動作です。
MQL5公式「Testing Trading Strategies」
そのため今回は、MT4時代のEA名テンプレートの優先順位をそのまま断定せず、現在の公式仕様で確認できるtester.tpl向けに表示プリセットを作ります。
配布版が整える7項目¶
インジケーターを適用すると、次の7項目を設定してから実際のチャート値を読み戻します。すべて一致するとパネルにPRESET READYと7/7を表示します。
| # | 確認項目 | 初期設定 |
|---|---|---|
| 1 | 背景色 | 黒 |
| 2 | グリッド | 非表示 |
| 3 | 価格表示 | ローソク足 |
| 4 | 右端シフト | 有効 |
| 5 | 出来高 | 非表示 |
| 6 | 上昇側の価格色 | 緑 |
| 7 | 下降側の価格色 | 緑 |
さらに、短期SMAを水色、長期SMAをオレンジで重ねます。初期値はSMA20とSMA50です。売買シグナルではなく、テスト後のエントリー・決済位置を同じ基準で見返すための補助線として使います。
tester.tplとして使う手順¶
- 配布ファイルをMT5の
Indicatorsへ保存してコンパイルします。 - 任意のチャートへ適用し、SMA期間やグリッド表示を調整します。
- チャートのテンプレート保存を選び、名前を
tester.tplにします。 - EAの単体テストを実行し、終了後に開くチャートを確認します。
テンプレートにはインジケーター名と入力値も保存されます。別のMT5環境へ移す場合は、同じインジケーターを先にコンパイルしておく必要があります。
tester.tplは特定EAだけでなく、テスターの確認チャート全体へ使う共通プリセットです。EAごとにSMA期間を変えたい場合は、テスト後に入力値を変更するか、用途別テンプレートを手動で使い分ける方が分かりやすいです。
EA自身からテンプレートを読み込まない理由¶
MQL5にはChartApplyTemplate()がありますが、公式リファレンスでは、呼び出したEAのチャートへテンプレートが正常に読み込まれると、そのEA自体がアンロードされると説明されています。
売買ロジックの途中で安易に呼ぶと、表示を変えるためにEAを止める結果になりかねません。今回の配布版はテンプレートを強制読込せず、チャート色と補助線だけを設定するインジケーターにしました。設定後のチャートを利用者がtester.tplとして保存する構成です。
チャート変更命令はキューへ追加されるため、設定後にChartRedraw()で再描画します。表示した値だけで合格にせず、ChartGetInteger()で7項目を読み戻して判定しています。
MT5で確認した結果¶
検証画像は、専用MT5のEURUSD・H1チャートへ配布版を適用して撮影しました。画像はチャート表示の検証用であり、ストラテジーテスター実行中の画面ではありません。tester.tplの適用タイミングについては、前述の公式仕様に基づいています。
| 確認内容 | 結果 |
|---|---|
| 配布インジケーターのコンパイル | 0エラー・0警告 |
| 専用検証EAのコンパイル | 0エラー・0警告 |
| SMA20 | 直近20本の終値平均と一致 |
| SMA50 | 直近50本の終値平均と一致 |
| チャート設定 | 7/7一致 |
| 出力バッファ | 8個を照合 |
| 正常期間モデル | 20 < 50で合格 |
| 異常期間モデル | 1 / 1と50 / 20を拒否 |
| 注文処理 | なし |
| 画面取得 | 成功 |
8個のバッファには、SMA20、SMA50、設定合格数、設定総数、期間設定の合否、プリセット全体の合否、非売買フラグ、テスター実行フラグを出力します。外部EAから表示状態を確認したい場合にも利用できます。
入力パラメーター¶
| パラメーター | 初期値 | 内容 |
|---|---|---|
InpFastPeriod | 20 | 水色で表示する短期SMA期間 |
InpSlowPeriod | 50 | オレンジで表示する長期SMA期間 |
InpShowGrid | false | グリッドを表示するか |
InpUseChartShift | true | チャート右端に余白を作るか |
InpShowPanel | true | 設定確認パネルを表示するか |
期間は2 <= 短期 < 長期 <= 1000の範囲で受け付けます。同期間や短期より小さい長期期間は、比較表示として意味が曖昧になるため初期化時に拒否します。
ダウンロード¶
32_Tester_Result_Chart_Preset_v1_00.mq5 をダウンロード
このインジケーターはチャート表示だけを変更し、注文の送信・変更・決済は行いません。既存チャートへ適用すると色やグリッド設定が変わるため、現在の外観を残したい場合は先に別名のテンプレートとして保存してください。
使えないこと・注意点¶
7/7はチャート設定の一致であり、EAのロジックや収益性の合格判定ではありません。tester.tplは共通設定なので、すべてのEAに同じSMA期間が適するとは限りません。- テンプレートへ保存されたカスタムインジケーターが別環境に無い場合、その表示は再現できません。
- チャート外観の変更は非同期です。重いチャートでは描画完了まで少し時間がかかる場合があります。
- ブローカーや端末設定によって、銘柄名・価格桁・取引履歴の表示は異なります。
ロジック評価の結論¶
原典の発想は、バックテストのたびに同じ表示準備を繰り返さないための小さな自動化でした。この目的は、現在のMT5でもtester.tplで引き継げます。
一方、MT4時代のテンプレート名の優先順位までそのまま移すのではなく、現行の公式仕様で確認できる範囲へ絞ることが重要です。今回のプリセットは、テスト結果を「いつも同じ見た目、同じ補助線」で見返すための土台として使えます。
前後の記事¶
前: 【移植#31】EAのアイデアを実装可能な仕様にする — 8項目の要件チェックをチャート表示
次: 【移植#33】確定足と予報を分けるメール通知 — MACDゼロクロスを同一バー1回だけ送る