MT4でバックテストのやり方を説明

 

MT4でバックテストのやり方

How To バックテスト

基本的なバックテストのやり方を説明します。

バックテストの前に

バックテストをする前にMT4の設定を少し変更します。

デフォルトの設定のままでは、バックテストできる期間は約1年5カ月程度です。バックテストをする際は長期間のテストを行うことが多いので、まずはそこの設定を変更します。

「ツール」→「オプション」→タブの「チャート」を選択します。

MT4のオプション設定

「ヒストリー内の最大バー数」と「チャート内の最大バー数」に入れれるだけ「9」を入力し、その後「OK」をクリックします。

MT4のヒストリー内の最大バー数の設定

確認のために再度「オプション」から「チャート」タブを選択して、ちゃんと設定が変更されているか確認してみてください。

MT4の最大バー数の設定

画像のように、「ヒストリー内の最大バー数」および「チャート内の最大バー数」のどちらも「2147483647」になっていれば大丈夫です。

備考ですが、デフォルト設定ではこの最大バー数が「512000」になっています。つまりこれは、1分足512000本が最大ということです。で、この512000分を期間で表してみると、外国為替市場の年間取引可能日数は245日前後なので、512000 ÷ (245日 × 24時間 × 60分) = 1.45年 となり、デフォルト設定でのテスト可能な最大期間は約1年5カ月程度となります。

後に説明しますが、バックテストで使用するヒストリカルデータは1分足を使って各時間足を生成するので、デフォルト設定だと上記の計算から約1年5カ月となってしまうというわけです。

それでは、次の設定です。

「ツール」→「オプション」→タブの「エキスパートアドバイザ」を選択します。

下画像の赤枠の項目にチェックしてOKをクリックします。

MT4のオプション設定

これらは許可していなくてもバックテストできるEAの方が多いですが、EAによってはDLLやWebRequestを使用するものもあるので、私は初期設定のタイミングで事前にチェックを入れておく様にしています。

次に、MT4の左上のツールバーから「ストラテジーテスター」をクリックします。

MT4のストラテジーテスター

そうすると、MT4の下段にテスターウィンドウが開きます。バックテストはこのテスターウィンドウ内で行います。

MT4のストタテジーテスター

ちなみに、バックテストの際はターミナルウィンドウを一切使用しないので私は閉じています。

MT4でEAのバックテストをするための初期設定は以上です。

続いて、ヒストリカルデータを入手する方法と、それをMT4にインポートする方法に移ります。

ヒストリカルデータを入手する

長期のヒストリカルデータを無料で入手する方法はいくつかありますが、一般的に多く利用されている方法で説明します。

まず、海外のFXブローカーである「FXDD」のヒストリカルデータのダウンロードページから入手します。

FXDDのヒストリカルデータをダウンロード

赤枠で囲んだところに、各通貨ペアのダウンロードリンクがあるので、そこから希望の通過ペアをクリックしてダウンロードします。

例えば、USD/JPYをクリックすると、ウィンドウが開いてUSDJPY.zipのダウンロードが始まります。このzipファイルの中にhstファイルが入っており、それがUSD/JPYの1分足ヒストリカルデータファイルになります。

ダウンロードできる期間は通貨ペアによって異なり、長い通貨ペアだと2005年からあります。

次にダウンロードしたhstファイルをMT4にインポートします。

ヒストリカルデータをインポート

今回は例としてUSD/JPYをインポートしていきます。

「ファイル」→「データフォルダを開く」をクリックします。

MT4のデータフォルダ

データフォルダが開くので、その開かれたフォルダ内の「history」フォルダ→「XMTrading-Real 25」フォルダを開きます。

※「XMTrading-Real 25」フォルダは、使用するブローカーによって異なり、アクセスしているブローカーのサーバーの名前になっています。

フォルダ内には既に「USDJPY○○.hst」というファイルがいくつかあります。この「○○」には時間足を表す数字が入ります。1分足なら1、1時間足なら60、日足なら1440、といった具合です。今回はUSD/JPYをインポートするので「USDJPY○○.hst」を全て削除します。

MT4のhistoryフォルダ

ここで一度MT4を再起動します。

再起動したら「ツール」→「ヒストリーセンター」をクリックします。

MT4のヒストリーセンター

ヒストリーセンターウィンドウが開くので、そこから目的の「USDJPY」を探し、ツリーから「1分足(M1)」を選択してダブルクリックします。

MT4のヒストリーセンター

このとき、赤枠で囲んだ「デー・ベース:○○レコード」の「○○」を確認します。この「○○」は、現在MT4内に何本のUSD/JPYの1分足データがインポートされているかを表示しています。なので、今回の場合だと「今は2048本ですよ」ということです。後ほど、インポートがちゃんとできたかどうかを確認する際に使います。現状の本数をざっくりでいいので覚えておきます。

続いて「インポート」をクリックします。

MT4のヒストリーセンター

インポートウィンドウが開くので「参照」をクリックします。

MT4のヒストリーセンター

ダウンロードした「USDJPY.hst」を選択し、「OK」をクリックします。

そうすると、先ほど確認した「デー・ベース:○○レコード」の「○○」の数が圧倒的に多くなっています。

MT4のヒストリーセンター

こうなっていればインポート成功です。

「閉じる」をクリックしてヒストリーセンターウィンドウを閉じます。

スクリプトを使って各時間足を自動生成

次に、1分足データを基に各時間足を自動生成するスクリプト「period_converter_ALL.mq4」をダウンロードします。リンクをクリックするとperiod_converter_ALL.mq4がダウンロードされます。

そして「データフォルダ」→「MQL4」→「Scripts」のフォルダに、ダウンロードしたperiod_converter_ALL.mq4を入れます。

MT4のScript period_converter_All

そして、ここでMT4を再起動します。

再起動したMT4の「ファイル」→「オフラインチャート」をクリックします。

MT4のオフラインチャート

するとオフラインチャートリストが開き、先ほどインポートしたUSD/JPYの1分足が「USDJPY,M1」と表示されているので、「USDJPY,M1」を選択して「開く」をクリックするか、ダブルクリックします。

MT4のオフラインチャート

MT4のウィンドウ内にインポートしたUSD/JPY 1分足のオフラインチャートが開きます。

そのオフラインチャートに左のツリーから「period_converter_ALL」をドラッグ&ドロップ、もしくはダブルクリックします。

MT4のperiod_converter_All

チャートの左上に、下記画像の様な、いかにも「時間足を計算してます」って感じの表示がされていれば各時間足を生成中です。

MT4のperiod_converter_All

画像は15分足を生成中のタイミングをキャプチャしたものです。5分足から順番に月足まで生成されていくので、この表示が消えるまでしばらく待ちます。

チャート左上の生成中っぽい表示が消えたら、先ほどのオフラインチャートリストを表示すると、先ほどは「USDJPY,M1」しか表示されていませんでしたが、「USDJPY,Monthly」までの時間足が生成されていることが確認できます。

MT4のperiod_converter_All

お疲れ様でした。

これで、MT4でEAをバックテストする前の準備が整いました。

準備完了!いざバックテスト!

さて、ここから実際にEAをバックテストしてみます。

・・・の、前にテスターウィンドウを簡単に説明します。

バックテストは、テスターウィンドウ内で全ての操作を行います。

MT4のバックテスト設定

いろいろと設定できる項目はありますが、基本的によく使用する項目に印を付けました。

  1. EAの選択
  2. 通貨ペアの選択
  3. バックテストの精度を選択
  4. バックテストを行う期間を指定
  5. EAの動作を視覚的に確認
  6. バックテストする時間足を選択
  7. バックテストするスプレッドを入力
  8. EAのパラメータを設定
  9. 通貨ペアの詳細
  10. バックテスト後にEAの取引履歴を確認
  11. MetaEditarを起動
  12. 最適化する場合にチェック

流れとしては、①でバックテストするEAを選択し、②で対象の通貨ペアを選択、④でバックテストする期間を指定します。

③モデルは基本的に全ティックを選択して正確にバックテストを行います。EAが始値で動くタイプのものであれば、「始値のみ」でも全ティックでテストした場合とほぼ同じ結果が得られ、テストも早く終了します。バックテストするEAのロジックが不明な場合は「全ティック」でテストします。コントロールポイントは正確性に欠けるため使用しません。

続いて、⑥で時間足を、⑦でスプレッドを指定します。

⑦のスプレッドはPoint単位になっているので、例えば「1.5pips」でテストしたい場合は「15」と直接入力します。「0.3pips」の場合は「3」と入力します。基本的に私がバックテストする場合は、より悪条件を想定してバックテストする様にしています。例えば、ブローカー発表の対象通貨ペアの平均スプレッドが「1.2pips」であれば、そのままの「12」でテストするのではなく、「25(2.5pips)」でバックテストします。

⑧エキスパート設定は、EAによって設定するパラメータは様々なので、そのEAを開発した方の取扱説明等を参考に適宜設定します。

補足として、通常MT4でバックテストできる基軸通貨は「USD、EUR、GBP、CHF」ですが、⑧エキスパート設定の「テスト設定」タブに直接「JPY」と入力すると日本円でバックテストすることが可能です。下画像は「初期証拠金100,000円」の設定となり、日本円のトレード結果が算出されます。

MT4で日本円でバックテスト

また、EAによっては通貨ペアや時間足によって最適化されたパラメータ値を登録した「セットファイル(○○○.set)」というファイルが用意されている場合があります。その場合は「パラメータの入力」タブの「読み込み」から、「データフォルダ」内の「Presets」からsetファイルを読み込ますことができます。

MT4でセットファイル読み込み

いざバックテスト!

さて、今回は例として、MT4にデフォルトで収録されているEA、Moving Average.ex4USD/JPY1時間足で、スプレッドを2.5pipsと仮定し、2008年1月1日~2017年12月31日までの10年間のバックテストをしてみます。パラメータ設定はデフォルトのままです。

この辺のセッティングが整ったら「スタート」をクリックします。

MT4でバックテストする方法

「スタート」をクリックすると、グリーンの進捗バーが左から右へと動き始め、

MT4でバックテストする方法

グリーンのバーが右に到達し、ボタンが「ストップ」から「スタート」に戻ればバックテスト完了です。ちなみに、私はバックテスト完了は、MT4の鳴声?アヒル?の様な音で気付きます。笑

MT4でバックテストする方法

バックテストが完了したら、「レポート」タブを開き、「モデリング品質」と「不整合チャートエラー」の数値を確認します。

MT4のバックテスト結果

モデリング品質は「90%」(稀に89.9%となる場合もあり)で、不整合チャートエラーは「0」になっていれば、正常にバックテストされていることが確認できます。

※モデリング品質について、5分足以上のバックテスト結果は、正常にテストが完了すれば「90%」になりますが、1分足のバックテストの場合「25%」が上限になります。

※不整合チャートエラーについて、赤文字で0以外の数字が出た場合は、何らかの要因でヒストリカルデータをうまくインポートできていないか、あるいはMT4から取引口座にログインしたまま(オンライン状態)のまま作業を進めていて、ヒストリカルデータが現在のチャートに自動的に書き換えられてしまった可能性があります。この場合は、データフォルダからhstファイルを削除して、データのインポートからやり直す必要があります。

そして、バックテストの結果を「レポート結果」として保存することが出来ます。

「レポート」タブ上のどこでもいいので右クリックし、「レポートの保存」をクリックします。

MT4のバックテストのレポート結果

レポート結果を保存すると、ブラウザが開きます。よく見かける、EAのバックテスト結果詳細としてEA開発者さんが掲載しているアレですね。

MT4のバックテストのレポート結果

お疲れ様でした。

以上が、バックテストの基本的なやり方です。

この様に、画像を交えながら書いていくと、すごく長くてすごく面倒そうに見えますが、本当にすぐに慣れます^^

慣れてきたら、モデリング品質が99.9%になる様にバックテストする方法を試してみたり、パラメータを最適化してEAを自分好みに調整してみたり、他のブローカーで公開されているヒストリカルデータでのバックテストの結果の差異を見てみたりと、いろいろできます。

いやほんとお疲れ様でした^^;

では^^

あとがきという名のぼやき

今回の記事ですが、何文字あると思いますか?

ほんとは、レポート結果の見方まで書きたかったんですが、今日はもうヨシとします。笑

というわけで、近日中にレポート結果の見方、あと、そこから何を読むかなどを記事にしたいと思ってます^^

そうそう。文字数ですが、約5400文字でした。

原稿用紙7枚分?!

そう考えると凄い量ですね。この1記事で、私が学生時代に使用した原稿用紙の合計枚数を越えちゃったんじゃないでしょうか。笑

 - MT4のダウンロードや使い方, バックテストの概念 ,