MT4のバックテスト精度を上げる方法|1分足データとモデリング品質90%の出し方

スポンサーリンク

どうもこんにちは。戦術トレードラボのラボ長です。

第4話で書いたとおり、私は一度、モデリング品質36%のバックテストが出した好成績を信じて、本気で喜びました。
1分足のデータを入れて品質を90%にしたら、+15.9万円は+8.9万円に減り、別の期間ではマイナス12.0万円(いずれもバックテスト・過去データ)。

そのとき、「MT4のバックテストは、データを入れ替えると別物になる」と身にしみて分かりました。

この記事では、これからEAを自作する方に向けて、MT4のバックテスト精度を上げる手順をまとめます。
1分足データの入手、取り込み、テスターの設定、そして「品質90%」を出したあとに残る落とし穴まで。
非エンジニアの私が実際につまずいた所を中心に、なるべく具体的に書きます。


スポンサーリンク

なぜMT4のバックテストは「精度」が問題になるのか

MT4のストラテジーテスターは、過去の値動きを1ティック(1回の値段の更新)ずつ再現しているわけではありません。
手元にある足のデータ(1分足、5分足、1時間足……)から、その足の中の値動きを「作って」います。

  • 1時間足しかなければ、1時間の中の動きは「始値→高値→安値→終値」のような、おおまかな道筋で埋められる
  • 1分足があれば、1時間の中を60本の足で埋められるので、ずっと現実に近くなる

つまり、細かいデータがないほど、テスターは想像で値動きを補っているわけです。
損切りや利確がどのタイミングで触れたか、どちらが先だったか。この判定が、想像で埋めた部分では平気でずれます。

その「想像の少なさ」を表すのが、テスト結果のモデリング品質です。

モデリング品質とは何か

テスト結果の「レポート」タブに、モデリング品質(Modelling quality)が%で表示されます。

表示意味
n/a始値のみ(Open prices only)モードなど、品質を計算しないモード
25%前後上位足からティックを作っている。ほぼ当てにならない
90%テスト期間ぜんぶに1分足データがあり、「全ティック」モードで動かした状態。MT4の標準機能で出せる最高値
99%外部のティックデータをMT4に読み込ませる有料ツール(Tick Data Suiteなど)を使ったときの表示

ここで大事なのは、MT4の標準機能では90%が上限だということ。
90%と出ていれば、「1分足はそろっている」という意味です。私の36%は、期間の一部にしか1分足がなく、残りを粗いデータで埋めていた状態でした。

テスターの3つのモード

ストラテジーテスターの「モデル」には3種類あります。

モデル中身使いどころ
全ティック(Every tick)持っている一番細かい足からティックを生成。一番遅く、一番正確最終的な成績の確認は必ずこれ
コントロールポイント(Control points)1つ下の時間足を使って、大まかに再現参考程度。成績の判断には使わない
始値のみ(Open prices only)足の始値だけで判定。とても速い足の確定時にしか判断しないEAの、当たりをつける段階だけ

「始値のみ」は速いので、設定の当たりをつけるときにはとても便利です。
ただ、損切りや利確は足の途中で触れるものなので、成績を信じる段階では全ティックで回し直す。これが基本です。

1分足データを入手する3つの方法

1. ヒストリーセンターからダウンロードする

MT4の「ツール」→「ヒストリーセンター」(F2キー)で通貨ペアを選び、「ダウンロード」を押すと、MetaQuotes社のサーバーから過去データが落ちてきます。

いちばん簡単ですが、注意点があります。

  • 落ちてくるのは、あなたの証券会社のデータではありません。値段も、サーバーの時間帯も違うことがあります
  • 1分足は数年分しかないことが多く、古い期間は粗いままになりがち
  • 小数点の桁数(4桁と5桁)が、証券会社と違うことがある

「とりあえず動かしてみる」段階なら十分ですが、成績を判断する段階では次の方法をおすすめします。

2. 外部の1分足データを取り込む

海外の業者やサイトが、1分足のヒストリカルデータを無料で公開していることがあります(Dukascopyなどが有名です。利用条件は公式サイトで確認してください)。
CSVでダウンロードし、ヒストリーセンターの「インポート」で1分足に読み込みます。

ここで私がやった遠回りをひとつ。
最初は「ティックデータしかないのか……」と思い込んで、12通貨ペア分を一晩かけて落としました。取得元のサーバーが不安定で、8回に7回はエラーで止まる夜でした。
あとから、1分足の圧縮ファイルが別に置いてあるのを見つけて、一瞬で終わりました。笑
先に「1分足(M1)」のファイルがないか、配布ページをよく探してください。

3. 自分のMT4にためる

MT4は、チャートを開いている通貨ペアの足を自動でためていきます。
これから使う通貨ペアの1分足チャートを開いておけば、時間とともに「自分の証券会社の本物のデータ」がたまります。
過去にはさかのぼれませんが、フォワードテストと並行してためておくと、あとで役に立ちます。

取り込んだあとに必ずやる3つの設定

1分足を入れただけでは、まだ品質90%になりません。私がハマった順に書きます。

(1) チャートの最大バー数を増やす

「ツール」→「オプション」→「チャート」にある「ヒストリー内の最大バー数」と「チャートの最大バー数」を、大きな値にします。
初期値のままだと、古い1分足が切り捨てられて、テスト期間の一部が粗いデータのままになります。設定したらMT4を再起動してください。

(2) 上位足を1分足から作り直す

1分足だけ入れ替えても、5分足や1時間足は古いデータのまま残っています。
1分足と1時間足が別の出どころだと、テスターが「不一致チャートエラー(mismatched charts errors)」を出します。

直し方は、MT4に付いているPeriod Converterというスクリプトを、1分足チャート上で5分→15分→30分→1時間→4時間→日足と順に動かし、すべての上位足を1分足から作り直すこと。
地味ですが、これをやると不一致がゼロになります。

(3) テスト後にジャーナルとレポートを確かめる

テストが終わったら、必ず2か所を見ます。

  • 「レポート」タブのモデリング品質が90%になっているか
  • 「ジャーナル」タブに不一致チャートエラーが出ていないか(レポートの「不一致チャートエラー」の数が0か)

損益より先に、ここを見る。これが私の習慣になりました。

品質90%でも残る、4つの落とし穴

ここからが本題かもしれません。1分足を入れて品質90%になっても、バックテストが現実とずれる原因は残ります。

1. スプレッドが固定

MT4のテスターは、テスト期間ぜんぶで同じスプレッドを使います(テスター画面のスプレッド欄で指定。「現在値」ではなく、固定の数字を入れるのが基本です)。
でも実際のスプレッドは動きます。私が12通貨ペアの売値と買値の1分足を並べてみると、日本時間の朝6〜7時だけスプレッドが4〜5倍に開いていました(証券会社のロールオーバーの時間帯です)。

この時間帯にエントリーするEAは、テスターでは見えないコストを払います。
対策は、スプレッドを業者の平均より少し広めに設定してテストすること。それでもプラスが残るかを見ます。

2. データの出どころで、成績が変わる

同じEA、同じ1年でも、業者のデータが違うと成績が変わります。私の場合、エントリーが22件から14件に減りました(第10話)。
1分足を入れたから正しい、ではなく、「このデータでは、こうだった」と受け止めるのが安全です。

3. サーバーの時間帯

外部データとあなたの証券会社で、足の区切りの時間(GMTオフセット、夏時間の扱い)が違うことがあります。
日足の区切りや、「この時間帯は取引しない」といったルールのあるEAは、ここがずれると別のEAになります。取り込む前に、データの時間帯を確認しておきましょう。

4. 1分足でも足りないEAがある

損切りが数pipsのスキャルピングEAは、1分足の中の順番(損切りと利確、どちらが先に触れたか)で結果が変わります。
私が試したところ、損切りと利確が同じ1分足の中に入るトレードは、損切りが小さめの設定でも全体の1%未満でした。1時間足で動くEAなら1分足で十分、という結論です。
ただし、損切り幅が数pipsのEAをまじめに評価するなら、ティックデータ(99%)の出番になります。

私の実例:36%から90%にして起きたこと

同じEA、同じ通貨ペアで、データだけを入れ替えた結果です(いずれもバックテスト・過去データ、資金100万円)。

粗いデータ(品質36%)細かいデータ(品質90%)
作った期間の成績+15.9万円+8.9万円
別の期間の成績―−12.0万円

品質36%のときは、「あと少しだ!」と喜んでいました。
1分足を入れたら、スタート地点まで突き落とされた気分でした。

でも、これはデータを入れ替えて初めて見えた本当の姿です。
もし品質36%のまま実際の相場で動かしていたら、この差は自分のお金で知ることになっていました。

MT4を久しぶりに使った私は、ヒストリカルデータの精度のことをすっかり忘れていました。
最初に品質を確かめていれば、「+15.9万円で喜ぶ」という遠回りはしなかったはずです。

チェックリスト

確認すること□
テスト期間ぜんぶに1分足データがある□
「ヒストリー内の最大バー数」を増やして再起動した□
Period Converterで上位足を1分足から作り直した□
モデルは「全ティック」□
レポートのモデリング品質が90%□
不一致チャートエラーが0□
スプレッドは固定で、業者の平均より少し広め□
データの時間帯(GMTオフセット、夏時間)を確認した□
別の業者のデータでも同じ傾向か確かめた□
損切り幅が小さいEAなら、ティックデータも検討した□

よくある質問

Q. モデリング品質が「n/a」と出ます。
A. 「始値のみ」モードか、テスト期間のデータが足りない状態です。全ティックに切り替え、1分足がテスト期間ぜんぶにあるか確かめてください。

Q. 90%より上は出ないの?
A. MT4の標準機能では90%が上限です。99%が必要なら、外部のティックデータをMT4に読み込ませる有料ツールを使います。まずは90%で十分な場合がほとんどです。

Q. MT5ならこの手間はいらない?
A. MT5のテスターは「リアルティックに基づいた全ティック」モードがあり、証券会社のサーバーから実際のティックを取り込めます。データの手間は少なめですが、そのぶん時間もかかります。どちらで作るかはMT4とMT5、EAを作るならどっち?にまとめています。

Q. 品質90%で好成績なら、信じていい?
A. データの精度は、バックテストで騙されないための「入り口」です。過剰最適化や大勝ち頼みなど、ほかの罠はバックテストで騙されないためのチェックリストと過剰最適化(カーブフィッティング)とは?へ。

まとめ

  • MT4のテスターは、細かい足がないところを想像で埋めている。その少なさが「モデリング品質」
  • 1分足を入れ、最大バー数を増やし、Period Converterで上位足を作り直して、全ティックで回す。これで90%
  • 90%でも、固定スプレッド・データの出どころ・時間帯・1分足の限界は残る
  • 成績を見る前に、品質と不一致エラーを見る癖をつける

私が品質36%の数字に騙された経緯は第4話に、データの出どころで成績が変わった話は第10話に書いています。
成績の数字そのものの読み方はEAの成績の見方へ。


関連: バックテストと検証 / 使っている道具

※本ブログの内容は私個人の経験にもとづくもので、将来の利益を保証するものではありません。バックテストの結果は過去のデータによるものです。投資は自己責任でお願いします。

コメント

タイトルとURLをコピーしました