MT5テスターの入力値キャッシュに騙されない
目次
結論:テスターの入力値は「前回の値」が残っていると考える
MT5のストラテジーテスターは、EAごとに前回の入力値を覚えています。便利な機能ですが、EAを更新したあとや別の検証をした直後だと、自分が検証したつもりの設定と、実際に回った設定が食い違うことがあります。
私たちが出した対策はシンプルです。テスターの画面に表示されている値を信用しない。設定ファイルの [TesterInputs] に全項目を書き、レポートに残った入力値で確認する。 この記事では、その理由と手順を説明します。
📧 無料メール講座(全8通)+登録者限定 MT5 インジケーター13本パック
登録するとすぐに、サイトの MT5 インジケーター13本をコンパイル済みファイル(.ex5)・ソースコード・使い方ガイドにまとめた登録者限定パックのダウンロードリンクが届きます。続けて、FX自動売買の本質、バックテストの正しい見方、ブローカー選びのコツなどを全8通(最初の5日間は毎日1通、その後は登録7・14・30日後)でお届けします。MQL5 Market 版(ローンチ価格・販売数に応じて段階的に値上げ)の値上げ前のお知らせも届きます。当サイトのEAは提携ブローカーのリアル口座があれば無料です。
※ プライバシーは厳守。配信解除はいつでも可能です。
なぜ別の設定を検証してしまうのか
テスターは入力値を保存して使い回す
MT5のテスターは、最後に使ったパラメータをEAごとに保存しておき、次に同じEAを選んだときに読み込みます。手で値を入力する手間は省けますが、次のような場面で事故が起きます。
- EAを改修してデフォルト値を変えたのに、テスターには古い値が残っていた
- 最適化で極端な値を試したあと、その値のまま通常のバックテストを回した
- 別の通貨ペア用に変えたロットやフィルター設定が、次の検証に持ち越された
どれも、画面をちゃんと見れば気づけるはずのものです。ただ、入力項目が数十個あるEAだと、1つだけ違っていても見落とします。
結果が「それらしく」見えるのが厄介
設定が違っていても、テスターはエラーを出しません。結果がまるで的外れなら気づけますが、困るのはもっともらしい数字が出る場合です。
例として、同じUSDJPY H1で動くドンチャン系EAを2本並べます(どちらもMT5実機バックテストの実測値です)。
| EA | PF | 取引数 | 有効DD |
|---|---|---|---|
| DONCHIAN ENGINE | 1.5 | 631 | 10.8% |
| MEGAMAX DONCHIAN | 1.55 | 629 | 58.6% |
PFも取引数もほとんど変わらないのに、有効DDは大きく違います。両者の設計の違いは各EAのページに書いていますが、ここで言いたいのは、PFや取引数だけを見ていると、どちらの設定で回ったのか見分けがつかないことです。入力値が1つずれていただけで、リスクの評価が丸ごと違ってしまうことはありえます。
私たちの確認手順
1. 設定ファイルの [TesterInputs] に全項目を書く
MT5は設定ファイル(ini)を渡してテスターを起動できます。その [TesterInputs] セクションに、変える項目だけでなく全部の入力値を書きます。
[Tester]
Expert=MyEA
Symbol=USDJPY
Period=H1
Model=4
[TesterInputs]
InpLots=0.10||0.10||0.01||1.00||N
InpPeriod=20||10||5||50||N
書式は「値||開始||ステップ||終了||最適化するか(Y/N)」です。通常のバックテストなら末尾は N にします。
ここに書かなかった項目がどの値で動くかは、環境によって変わるかもしれないので、当てにしません。 「デフォルトのままのはず」という思い込みが、今回のテーマの事故そのものだからです。
2. レポートの入力パラメータを照合する
テスターのレポートには、実際に使われた入力値が残ります。検証が終わったら、iniとレポートの入力値を突き合わせます。目で見比べるより、テキストにして差分を取るほうが確実です。
3. EAを更新したら「別のEA」として扱う
改修でデフォルト値を変えたEAは、ファイル名にバージョンを付けて別名で保存します。古い保存値が自動で読み込まれる経路を、最初から断つためです。
チェックリスト
-
[TesterInputs]に全入力項目を書いた - 最適化の後は、すべての項目の末尾が
Nに戻っている - レポートの入力値がiniと一致した
- EAの改修後はファイル名を変えた
- 銘柄・時間足・モデリングも
[Tester]で明示した
限界と注意
この運用でも、すべての事故を防げるわけではありません。
- EA側に入力値として出ていない内部定数は、iniでは管理できません。ソースが同じかどうかは別の手段で確かめる必要があります。
- 入力値が正しくても、ヒストリーデータやスプレッドの条件が違えば結果は変わります。入力値の照合は、再現性を保つための一要素にすぎません。
- 私たち自身、この手順を徹底する前に回した検証がすべて正しかったと言い切ることはできません。気づいた範囲では検証し直していますが、見落としが絶対にないとは言えません。
配布しているEAの設定方法はEA設定方法に、ほかの検証ノウハウはナレッジにまとめています。
まとめ
- MT5のテスターは前回の入力値を覚えていて、気づかないうちに引き継いでしまう
- 設定がずれていてもエラーは出ず、もっともらしい数字が出るので気づきにくい
- 対策は、
[TesterInputs]に全項目を書くことと、レポートの入力値との照合 - EAを改修したら別名で保存し、古い保存値が読み込まれないようにする
- それでも内部定数やデータ条件の違いは防げないので、入力値の管理は検証の一部にすぎない
関連記事
📧 無料メール講座(全8通)+登録者限定 MT5 インジケーター13本パック
登録するとすぐに、サイトの MT5 インジケーター13本をコンパイル済みファイル(.ex5)・ソースコード・使い方ガイドにまとめた登録者限定パックのダウンロードリンクが届きます。続けて、FX自動売買の本質、バックテストの正しい見方、ブローカー選びのコツなどを全8通(最初の5日間は毎日1通、その後は登録7・14・30日後)でお届けします。MQL5 Market 版(ローンチ価格・販売数に応じて段階的に値上げ)の値上げ前のお知らせも届きます。当サイトのEAは提携ブローカーのリアル口座があれば無料です。
※ プライバシーは厳守。配信解除はいつでも可能です。