【MT4-EA】正しいバックテストのやり方

【MT4-EA】正しいバックテストのやり方


今回はFXDDの無料ヒストリカルデータを使った、EAのバックテストのやり方について書いていきます。

MT4を使い始めたばかりの人の中には、バックテストのやり方を知らない人もいると思いますので今回は、バックテスト用のデータの作成から書いていきます。

EAを使っていく上で自力でバックテストが正しくできないということは、目隠しをして綱渡りをするようなものなので、自動売買をやる人は必ずマスターしましょう。

ただ、私自身も長年MT4でバックテストをやってますが、誰かに教えてもらったものではなく、完全自己流なので紹介する方法よりも良いやり方がある可能性もあります。

しかし、ちゃんと「Mismached Charts error不整合チャートエラー)」の項目は「0」になっているので、結果は問題はなくバックテストできているので OK としています。

  • 余談ですが、「Mismached Charts error(不整合チャートエラー)」ですが、「0」でないとバックテスト自体の信憑性は劣りますので、公開されているEAのバックテストデータを見る時は最低でも、この部分がゼロになっているかは確認した方が良いと思います。

バックテスト用のデモ口座を準備する

バックテストは一般的にデモ口座で行います。

基本的にどこのFX会社のデモ口座でもバックテストはできますが、自分のリアル口座とサーバータイム(GMT)が同じブローカーを選んだほうが無難です。

また、デモ口座の使用期限が無いものを選んだほうが何かと楽です。

XMのデモ口座も基本的に無期限です。(120日以上利用履歴がなければ再申請が必要。)

FXDDは3ヶ月で再申請が必要です。

ベテランの方はご存知だと思いますが、実はバックテストを行う上で無視できない大きな問題があります。

それは、ヒストリカルデータの品質(精度)の問題です。

MT4のツールメニューのヒストリーセンターからデータをダウンロードした場合は、そのブローカーの過去の価格データがダウンロードできるのではなく、普通はメタクオーツ社が提供するデータがMT4に取り込まれます。

問題は、このメタクオーツ社が提供するヒストリカルデータの品質が微妙すぎて、バックテストの信憑性が非常に低くなる点にあります。

現在、私達が無料で手軽に利用できるヒストリカルデータの中で通貨ペア数が多く、ある程度精度が高いものはFXDDのヒストリカルデータだと思います。

もちろん有料のデータであれば、より精度が高いティックデーターの提供をしているところもあります。

しかし、ティックデータの場合はデータ量が大きくなることもあり、短期間のバックテストしか行えないというデメリットもあります。

実際、当サイトの無料EAのように5分足以上の確定で動作するような場合は、ティックデータの恩恵は少なく、なるべく精度の高い1分足データで長期(8〜10年)のバックテストを行うほうが遥かに有益なデータが得られます。

逆に2〜3年程度のバックテストは、カーブフィッティングが容易で非常に信頼性が低いバックテストデータになる可能性が高くなります。

そこで今回はそのFXDDのヒストリカルデータをMT4へインポートしてバックテストを行う方法について説明します。

period_converter_ALL」というスクリプトを使いますので、「ファイルメニューからOpen Data Folder」 >「MQL4」>「Scripts」フォルダにいれておいてください。

*上のメニューの「ツール置き場」>「ツール」からもダウンロードできます。

まず、XMやFXDDなどでデモ口座を開設する必要があります。

XMでデモ口座を作る

電話番号や住所はダミーでもよかったと思いますが、受信可能なメールアドレスで登録する必要があります。

以下、デモ口座を開設してMT4をインストールしてあることを前提に説明します。

*MT4の言語がEnglishになっていますが、要領は日本語でも同じです。

この記事は、Windows7環境の古い記事を修正・追記している関係上、画像に表示されているパスがWindows10のものと一部異なりますが、記載の手順で問題はありません。
以前はアルパリでも精度の高いデータを提供していましたが、現在は提供を中止しているようです。

MT4側の下準備をします。

*以下、クリックで画像は拡大できます。

「ファイルメニューからOpen Data Folder」 を選択して「history」フォルダを開きます。

まず余計なデータが残っていないか確認して、フォルダの中に通貨ペアの名前がついたファイルがある場合は一旦全て削除します。

次にMT4の「ツール」から「オプション」を選択します。

開いたウインドウで「チャート」を選択して下の方のウインドウ2箇所にに、画像のように全て「9」を入力します。

できたら「OK」をクリックしてウインドウを閉じます。

確認のためにもう一度オプションパネルを開いて「チャート」のところを確認して、左の画像のように「2147………….」みたいな感じの数字に置き換わっていればOKです。

ここまでで一旦MT4を閉じます。

ヒストリカルデータのダウンロードと読み込み

FXDDの無料ヒストリカルデータを使う

まずFXDDのヒストリカルデータをダウンロードページからダウンロードします。

ダウンロードページはこちらから。

今回は「EURUSD」でやって見ます。

ダウンロードしたファイル「EURUSD.zip」解凍し、できた「EURUSD.hst」は適当なところに置いておきましょう

MT4を立ち上げて、「ツール」から「ヒストリーセンター」を選択します。

画像のようにユーロドルの1分足(M1)を選択した状態にして「インポート」ボタンをクリックします。

下のようなパネルが開きますので、「ブラウズ」をクリックします。

先程ダウンロードして解凍した「EURUSD.hst」ファイルを選択して「開く」をクリックします。

「OK」をクリックします。

データベースのところの数字が大きくなり変わったことを確認して「OK」をクリックしてウインドウを閉じます。

ここで、一旦MT4を閉じて再度立ち上げてください。

「ファイルメニューからOpen Data Folder」 >「history」>「FXDD-MT4 Demo Server」フォルダの中にインポートしたファイルが入っていることが確認できると思います。

こんな感じになっていると思います。

次に、EURUSDのチャートを表示させて1分足に変更します。

チャート上で右クリックして「更新」を選択します。

左のように表示され、ダウンロードしたヒストリカルデータと直近のデータが読み込まれました。

もう一度、「history」>「FXDD-MT4 Demo Server」へ行き、サイズの大きな「EURUSD1.hst」以外の通貨ペアの名前のついたファイルを削除します。

左図の場合は「EURUSD60.hst」を削除します。

 ここでなんとなくMT4を再起動します。

MT4を立ち上げたらファイルメニューから「オフラインチャート」を開きます。

左のようなウインドウが開きますので、「EURUSD,m1」を選択して「Open」(開く)をクリックします。

開いたチャートの上で右クリックして「更新」を選択します。

また、なんとなくMT4を再起動します。

スクリプトの中の「period_converter_ALL」をオフラインチャートにドラッグ&ドロップします。

すると、1分足から各時間足のデータを作り始めます。

データの作成が終わり「ジャーナル」(操作履歴)のところに「〜〜〜〜M1:removed」と表示されればOKです。

先程の「history」>「FXDD-MT4 Demo Server」の中身が画像のようになって、各時間足のデータが作成されていることが確認できると思います。

これでバックテストデータの準備はOKです。

最後に、MT4を再起動します。

これで、ある程度正確なバックテストを行うためのデータの準備ができました。

EAのバックテストを行う

ヒストリカルデータの準備ができたら、実際にバックテストを行います。

以下の画像は、「Scal-3」USDCADのバックテストを例に説明していきます。


MT4の「View」(表示)メニューから、「Strategy Tester」(ストラテジーテスター)を表示させます。

バックテスト用のウインドウは使いやすいように配置しましょう。

バックテスト行う上で、主に変更が必要な部分

①EAを選択します。

所定のフォルダ(MQL>ExpertExperts)にEA(〇〇.ex4)を入れておく必要があります。

また、DLLを使うEAはの場合は、Librariesフォルダに所定のdllファイルが入っている必要があります。

*当サイトの無料EAはDLLを使っていません。

②通貨ペアを選択します。

全章の手順などで、ヒストリカルデータが準備されている必要があります。

③タイムフレームを選択します。

そのEAが使うタイムフレームを指定します。

④スプレッド値を「ポイント」で設定します。

バックテストする際スプレッド値を設定します。常に一定値でのテストになるので、実際のスプレッドより0.3〜0.5pips(3〜5ポイント)ほど大きめに設定しています。

⑤利用するヒストリカルデータのタイプを選択します。

多少時間はかかりますが「Every Tick」(全ティック)が最も正確です。

*ティックと言っても、1分足から生成される疑似ティックデータになりますが、「Control points」(ひとつ下の足を使ってやる)や、「Open prices only」(始値のみ)よりもテストの精度は高く信頼性は上がります。

⑥チェックを入れてバックテストの期間を選択します。

テスト期間の指定ですが、直近は本日まで指定すると「不整合チャートエラー」が出ますので、数日か1週間くらい前までにしておきましょう。

⑦EAのパラメーター他、資金情報などを設定します。

Testing(テスト設定)タブでは、バックテスト口座のスタート時の金額と通貨を指定します。

Initial deposit(初期証拠金)の隣に「金額」、その右側で通貨種類を選択します。

選択できる通貨ペアのプルダウンメニューの中に、日本円(JPY)がありませんが、ウインドウに直接「JPY」と入力すると、MT4では口座通貨を「日本円(JPY)」としてバックテストしてくれます。

一般的に、その下は特に触る必要はありません。

Inputs(パラメーターの入力)タブでは、バックテストでのロット数の設定や他のパラメーターの変更ができます。

適用させるパラメーターがある場合は「Load(読み込み)」ボタンをクリックします。

適用させるパラメーターを選択して「開く」をクリックします。

*画像のように、デフォルトで開くMT4フォルダ内の「Tester」フォルダに、パラメーターファイルを入れておくと便利です。

一般的にパラメーターファイルは、「ファイルメニューからOpen Data Folder」 > MQL > Presetsフォルダの中に入っていると思います。

バックテストで使うロット設定などを変更して「OK」をクリックします。

ここまでの設定に変更などがなければ、「Start(スタート)」をクリックしてバックテストを始めます。

テストが終わるまでしばらく待ちます。

EAのロジックや期間によっては、かなりバックテストに時間がかかる場合があります。

Model(モデル)のところを「Every tick(全ティック)」>「Control points(コントロールポイント)」>「Open price only(始値のみ)」に変更していくと、テスト時間は短縮できますが、テストの精度も下がっていきますので、必要に応じて使い分けると良いと思います。

テストが終わると以下のようにプログレスバーがすべてグリーンになり、ボタンが「Start(スタート)」に戻ります。

バックテスト結果を見る

テスターウインドの下に並ぶタグでバックテスト結果を見ることができます。

Results(結果)タブ

Results(結果)タブを選択すると、テスト期間の全取引が確認できます。

Graph(グラフ)タブ

Graph(グラフ)タブでは、収益のグラフを見ることができます。

Report(レポート)タグ

上のグラフと共に、最も重要なレポートです。

レポートの上で右クリックから「Save as Report(レポートの保存)」をクリックすると、場所を指定してレポートを保存することができます。

保存されたファイル(HTML)をダブルクリックで開くと、よく見かけるバックテスト結果が見れます。

*日本語表示だと、保存したバックテストデータの表示が崩れるみたいです。

【重要】バックテスト結果の見方については以下を参考にしてください。↓

Journal(操作履歴)

バックテストが途中で止まったり、重大な異常があったときに見る場合があります。

一般的にはあまり重要ではないかもしれません。

バックテストを続ける上での注意!

バックテストをやっていると、「ファイルメニューからOpen Data Folder」 >tester>history フォルダの中に巨大なファイルが作られていきます。
このフォルダのサイズが大きくなってくると、私の環境ではなぜかエラーが出て、正しくバックテストができなくなります。
エラーが出た時や、バックテストをするEAを変える時などは、このファイルを捨てることにしています。また、バックテスト用のMT4のフォルダの中の不要なファイルなどはなるべく捨てるようにしています。

まとめ

MT4でEAを使った自動売買に取り組む人にとって、バックテストは非常に重要なスキルの一つです。

EAのパラメーター値の最適化も、バックテストが基本になりますので、やり方を工夫して効率を上げることは非常に重要なことです。

バックテストの目的やEAのロジックの特徴に合わせて、使用するヒストリカルデータのモデルを変えるのも有効な方法の一つです。

また、MT4はマルチコアのCPUに最適化されておらず1つのコアしか使わないので、多コアのCPUよりも高クロックのCPUのほうが高速化につながる傾向にあります。

より効率を上げるためには、複数のバックテストを同時に走らせて、多コアのCPUを有効活用させる工夫が必要になる場合もあります。

EAを使ったFXトレードにおいて、自分で正しくバックテストができることは基本だと思いますので、真剣に取り組む人には必須のスキルです。

>>自動売買リアル戦記トップページへ戻る








コメントの入力は終了しました。
トップへ戻る