こんな方におすすめ
- FX自動売買のバックテストをしたい方
- MT4でEAのバックテストをする具体的な方法を知りたい方
- EAのバックテスト・検証をする時に何を準備すればいいかわからない方
MT4用EAのFX自動売買のバックテスト方法について紹介します。
こちらの記事を読む事により、公開されているEAのバックテスト結果がどのような状況かを見て判断できるようにもなります。
EAのバックテストとは?初心者でも理解できる解説
バックテストとは、自分で作ってみたEAや入手したEAが、過去のチャートデータを元にどのような取引を行ったか、収支の結果がどうだったかを確認・検証する作業のことです。
MT4で自動売買をする為のEAは、MQL4というプログラムで作られています。
バックテストを行う目的
- その動作プログラムにエラーがないかを確認、検証する
- EAに組み込んだロジックが想定通りに動作するかをチェックする
- 過去の為替相場で、良い成績を出しているかを確認する
- パラメータを変更して、通貨ペアや時間足に合わせて、より良い結果に繋がる設定を探す
などに使われます。
EAのバックテストはFX初心者であっても本記事に書いてある一連の流れをやってみることで実施することは可能です。
ただし、パソコン初心者の場合など、バックテストを行う為のチャートデータの準備など簡単な操作ではないことや、バックテストに時間がかかるところもありますので、FX研究所で公開しているEAなどは各ページにあるバックテスト結果を利用する判断材料にしてもらえると早いかと思います。
それでは早速、MT4でのEAのバックテスト方法について解説していきます。
MT4でEAをバックテストする前に必要な準備とは?
バックテストを行う為には、テストを行いたいEAをまず最初に入手しておく必要があります。
FX研究所内のEAは以下のページから入手できますので、ご確認ください。
EAが入手できましたら、以下の順番でバックテストの準備をしましょう。
step
1バックテストをするパソコン環境を準備
step
2パソコンでMT4を起動しログイン
step
3バックテスト用MT4の事前設定
step
4バックテストをするEAをMT4のデータフォルダに格納
step
5バックテストで使う過去のヒストリカルデータを入手
step
6MT4に過去のヒストリカルデータを入れる
バックテストをするパソコン環境を準備
バックテストはEAや選択する期間により、実行してから結果が出るまで時間がかかります。
バックテストを開始してから結果が出る前にパソコンの再起動などをしてしまうとまた最初からやり直しになってしまいますので、普段使っているパソコンとは別に、バックテスト用のパソコンを準備しましょう。
MT4が元々Windows用のソフトウェアであることから、トラブルが起こった際などの事例を確認したりすることを考えると、Windows10以上を推奨します。
また、バックテストにはメモリを多く使うこと、過去のチャートデータやテストログでデータ容量を利用する為、メモリは最低4GB、HDD/SSD容量は80GB以上をおすすめします。
JUNKWORLD(ジャンクワールド)などで中古パソコンを入手したり、ご自身の使っていないパソコンを利用するなどがよいでしょう。
パソコンでMT4を起動しログイン
MT4は各FX会社がそれぞれのホームページ上に無料公開しています。バックテストを行いたいFX会社のMT4をパソコンにダウンロードして設定しましょう。
ヒストリカルデータという過去のチャートデータを入れる時に、現在MT4上に保存されているチャートデータを一度すべて消す必要が出てきます。必要に応じて、MT4を複数起動する方法を参考にバックテスト専用のMT4を準備しておくことをおすすめします。
FX会社MT4ダウンロードページ
操作画像付きの詳細な手順は、MT4のダウンロード、インストール、ログイン方法【初心者簡単】を確認してください。
FX会社によって通貨ペア名が変わったり、EAによってはFX会社を制限されているものがありますので、必ず利用予定のFX会社のMT4にログインするようにしましょう。
ご自身のリアル口座でもデモ口座でもバックテストは可能です。
バックテスト用MT4の事前設定(ローソク足の本数変更)
MT4上のチャートで利用するバー(ローソク足)の数を開きます。
MT4上部メニュー>ツール>オプションをクリックして、オプションを開きます。
チャートタブをクリックし、「ヒストリー内の最大バー数」と「チャートの最大バー数」に9999999999999999 と入力してOKをクリックします。
確認の為もう一度、MT4上部メニュー>ツール>オプションをクリックしてチャートタブを開きます。
以下のように、MT4が最大で設定できる「ヒストリー内の最大バー数」と「チャートの最大バー数」が2147483647 に自動で設定されています。
バックテストをするEAをMT4のデータフォルダに格納
次に、MT4でバックテストを行うEAをMT4のデータフォルダに格納します。
上部メニュー>ファイル>データフォルダを開く をクリックすると、MT4のデータフォルダが開きます。
その後、MQL4>Experts の順番に移動し、EAのデータ(拡張子が「.ex4」または「.mq4」)を格納します。
手順がわからない場合は、MT4にEA(FX自動売買)を設定する方法(画像でやり方を解説)を参考にしてください。
バックテストで使う過去のヒストリカルデータを入手
バックテストを行うために、過去の相場データであるヒストリカルデータを入手する必要があります。
ヒストリカルデータは、FXDDやFXCMなどのFX会社やMT4を作成しているMetaQuotes本社など、入手ルートが様々ありますが、場合により精度が悪く期待している結果が得られない可能性があります。
ある程度精度を求める場合は、以下いずれかの方法で入手することをおすすめします。
おすすめのヒストリカルデータ入手方法
- おすすめ FXTFからヒストリカルデータをダウンロードする方法
精度が高め、2012年1月3日以降のデータをCSVでダウンロード可能。口座開設~マイページにログインして無料でダウンロードが必要。 - Tick Data Suite(TDS)を利用する方法
精度が高くリアル。複数のMT4を使ってバックテストを行うのが簡単、最新版のヒストリカルデータを簡単に使える。
ただし、初期費用が12,090円、月額費用1,349円がかかる。2003年からのデータを利用可能。
今回のバックテスト手順では、わかりやすくて精度も高いFXTFからダウンロードしたCSVのヒストリカルデータを例にしてすすめます。
FXTFからヒストリカルデータをダウンロードする方法
FXTFのトップページからマイページにログインを行います。
左側のメニューから、チャートデータをクリック。
チャートデータ一覧になるので、バックテストをしたい通貨ペアをクリック。
ZIPファイルがパソコンのダウンロードフォルダにダウンロードされます。
ZIPファイルを解凍すると、CSVファイルが出てきます。こちらをMT4に読み込ませることで、過去のチャートの値動きを入れることが可能です。
MT4に過去のヒストリカルデータを入れる
ここからがMT4に過去のヒストリカルデータを入れる作業です。
入手したチャートデータと今使っているMT4上のチャートデータが重複したりすると、バックテストでエラーが出たり、正常な結果にならないなどで初めからやり直しになってしまうことがありますので注意しましょう。
以下の流れ通りに作業することで、入手したヒストリカルデータを正しくMT4に入れることが可能です。
現在MT4に入っているチャートデータを削除
MT4に過去のヒストリカルデータを入れるうえで、現在MT4に入っているチャートデータをすべて削除します。
MT4はログインすると自動で画面上に開いているチャートのデータをダウンロードしてしまうので、やり直しを防ぐために、MT4にログインしている場合は以下をします。
- 今開いているチャートを全部「✕」で閉じる
- ログアウトする
MT4上部メニュー>ファイル>取引口座にログイン でログイン画面を開き、ログインIDとパスワードを空にした状態でログインボタンを押すことでログアウトすることが可能です。ログアウトすると、MT4右下のステータスが「回線不通!」になります。
この状態で、MT4上部メニュー>ファイル>データフォルダ から、MT4のデータフォルダを開きます。
MT4のデータフォルダが開けたら、一度MT4自体を右上の「✕」で閉じてMT4を停止しましょう。
開いたデータフォルダの「history」をクリック。
その後、パソコンでMT4を起動しログイン でログインしたサーバ名のフォルダをクリックします。(説明の画面はXM Tradingのデモ口座を利用した場合です)
historyフォルダ内のファイルについては、利用しているFX会社によって異なることがありますので、状況によりフォルダを選択します。
以下のようにファイルがいくつか出てきますので、種類で並べ替えをして、ヒストリカルデータを追加予定の通貨ペアの「HSTファイル」を削除します。
period converter ALL スクリプトのダウンロード
入手したFXTF社のヒストリカルデータは、1分足のみのデータです。
その為、1分足のデータを元に、他の時間足のデータ(5分足・15分足・30分足・1時間足・4時間足・日足・週足・月足)を作る必要があります。
データの作成には「period converter ALL」というスクリプトを使います。
こちらは1分足のデータを元に自動で他の時間足データを作成してくれるのでとても便利です。
参考
「period converter ALL」スクリプトはMQL5の公式サイトからダウンロードすることが可能です。
ダウンロードページURL:https://www.mql5.com/ru/code/11201
ダウンロードした「period_converter_ALL.mq4」をMT4のデータフォルダ>MQL4>Scripts にコピーします。
MT4に1分足のヒストリカルデータをインポート
MT4を起動します。
口座にログインしない状態のまま、上部メニュー>ツール>ヒストリーセンターをクリックします。
ヒストリーセンターが開いたら、バックテストに利用するヒストリカルデータに対応する通貨ペアをダブルクリックします。(画面は、XM TradingのUSDJPYの例です)
「1分足(M1)」をクリックして選択し、インポートをクリックします。
インポート画面で、ファイル名の右側の参照ボタンから、FXTFからダウンロードしたCSVファイルを選択します。
少し読み込みに時間がかかるので待っていると、以下のように「時間」「始値」「高値」「安値」「終値」「出来高」が表示されます。
表示されたら、OKボタンをクリックします。
ヒストリーセンターに戻るので、左ツリーの1分足(M1)の左の記号に色がついていること、上部のレコード数が入っていることを確認する。
他の通貨ペアのヒストリカルデータがある場合は、同じ手順で1分足(M1)にデータをインポートしていきます。
すべて終わったら、ヒストリーセンター右下の閉じるボタンをクリックした後、MT4の右上の「✕」をクリックして一度停止します。
全時間足のチャートデータを作成
1分足のヒストリカルデータをMT4にインポートし終わったら、MT4を再度起動し直してから、全時間足のチャートデータ作成作業を行います。
上部メニュー >ファイル>オフラインチャートをクリックします。
全時間足のチャートデータを作りたいヒストリーデータを選択して、開くボタンをクリックします。
以下の画面のように、USDJPY.M1(offline)というチャートが表示されます。
このオフラインチャートに、左側のナビゲーターツリーから、スクリプト>「period_converter_ALL」をドラッグ&ドロップします。
すると、チャート左上に、「Converting to Period(**) bars to end :XXXXXX」と高速に処理が走り、各時間足のチャートデータを自動で作成してくれます。
この表示が消えるまで待ちましょう。これが消えれば問題なく作成完了です。
作成が完了したら、上部メニュー >ファイル>オフラインチャートを開くと以下のようにM5以降の時間足のチャートデータができていることを確認します。
必要に応じて、他の通貨ペアも同じ手順で1分足のデータから他の時間足を作成します。
これで過去のバックテストで利用するチャートデータの整備が完了です。実際のバックテストを行う前にMT4を再起動しましょう。
MT4でEAをバックテストする方法
バックテストをするための準備が終わったら、早速バックテスト開始です。
MT4でストラテジーテスターを開く
MT4にログインして、上部メニュー>表示>ストラテジーテスターをクリックします。
MT4の下部に、ストラテジーテスターのウィンドウが開きます。
各項目を設定して、バックテストを行っていきます。
バックテストの基本設定をする
まずはバックテストを行う自動売買用のEAを選択します。
今回は例として、移動平均線を利用したEA「exy-2perfectorderUSDJPY」を使います。
エキスパートアドバイザの右側に表示されているEA選択画面の右側の▽をクリックして、プルダウンからバックテストを行いたいEAを選択してダブルクリックします。
EAの選択
EAが表示されていない場合
MT4のデータフォルダ>MQL4>Experts にEAデータ(拡張子「.ex4」または「.mq4」)が入っていない可能性があります。
確認して、EAを設置した後に、MT4を再起動して再度やり直してみましょう。
通貨ペアの選択
通貨ペアのプルダウンをクリックして、バックテストする通貨ペアをクリックします。
今回は、「exy-2perfectorderUSDJPY」に対応しているUSDJPYを選択します。
モデルの選択
バックテストを行う時に、過去のヒストリカルデータをどのように利用してテストするかをプルダウンから選択します。
モデル種別 | 精度 | 所要時間 |
全ティック(利用可能な最小時間枠を使いすべてのティックを生成する、最も正確な方法) | ○ | 時間がかかる |
コントロールポイント(ひとつ下の時間枠を使った大まかな方法。結果はあまり信頼性はない) | △ | 早い |
始値のみ(最も早い方法。バーのはじめにしか動かないEA向け) | △ | 早い |
バックテストに精度を求める場合は、全ティックで行うことをおすすめしますが、バックテストに時間がかかります。
コントロールポイント、始値のみは、バックテスト時間はかなり短縮されますが、精度がどうしても下がってしまいます。
ひとまずどのような結果になるかを試してみたい、作り途中のEAの動作確認をしたい等の場合は、「始値のみ」や「コントロールポイント」を利用してみるのもいいでしょう。
今回は全ティックを選択します。
期間の選択
バックテストをしたい時間足をプルダウンから選択します。
今回は「exy-2perfectorderUSDJPY」に対応しているM15(15分足)を選択します。
スプレッドの選択
バックテストを行う期間内の、スプレッドの設定をします。
初期値は現在値になっていますが、プルダウンから選択、または数字を直接手入力することができます。
スプレッドが1.0pipsの場合は、上記のスプレッドを「10」にします。
今回は、XM Tradingのスタンダード口座の場合(USDJPY(ドル円)は約1.6pips)を想定して「16」と入力します。
最適化のチェックボックスは外す
「最適化」は、EAのバックテストをパラメータを指定した値に変更して、繰り返し実施する場合に利用します。
今回は単体でのバックテスト方法ということで、最適化のチェックボックスは外します。
最適化については、同時にたくさんのパターンの検証ができる代わりに、組み合わせパターンによってはとても多くの時間がかかります。
設定方法等もバックテストとは若干変わって来ますので、また別の記事で紹介します。
期間を指定で、開始日、終了日を選択
バックテストを行う期間を設定することが可能です。
最初に、「期間を指定」にチェックを入れ、バックテスト開始日、終了日を入力します。
今回は、2016/1/1~2022/10/31を設定します。
ビジュアルモードのチェックボックスでチャート上のどこでトレードしたか確認が可能
ビジュアルモードは、バックテスト結果だけでなく、チャートも同時に表示をしてどこでトレードをしたかなどを目視で確認したい場合に利用します。
利用する場合は、ビジュアルモードにチェックを入れます。
ボリュームのような横に動かす部分で、チャートが進むスピードを調整可能です。一番右が一番スピードが早いです。
今回はビジュアルモードにチェックを入れず先に進みます。
EAのエキスパート設定でパラメータを設定する
次に、エキスパート設定に移ります。
テスターウィンドウ右上のエキスパート設定をクリックします。
テスト設定でバックテストの証拠金を設定
エキスパート設定が開いたら、テスト設定タブをクリック。
ここで、バックテストの初期証拠金設定ができます。初期証拠金はプルダウン、または手入力が可能です。
ご自身がテストしたい初期証拠金設定にします。
今回は100,000円を入力します。
ポジションは基本的に初期値のLong&Shortで大丈夫です。
「Long&Short」=買い、売りどちらもバックテスト、「Long only」=買いだけバックテスト、「Short only」=売りだけバックテスト にするための設定です。
最適化内の、最適化パラメータ、遺伝的アルゴリズムは今回のバックテストでは利用しないため、そのままの設定にします。
パラメータの入力
次にパラメータの入力タブを選択します。
以下のように、バックテストしたいEAのパラメータ設定画面になります。
「値」に入っている各数値を元に、バックテストが行われることになりますので、ご自身の設定に合わせて各項目を設定します。
最初は、EAの初期設定が入っており、変更したい場合は数字の部分をダブルクリックすることで変更ができます。
変更が完了したら、下のOKボタンをクリックします。
左側のチェックボックスや、スタート、ステップ、ストップは、最適化を実施する時に利用しますので通常のバックテストを行うだけの場合は変更不要です。
ここまで設定ができたら、バックテスト前の各種設定は完了です。
EAのバックテストをスタート
テスターウィンドウ右下の、スタートボタンを押します。
すると、使用中M1… と表示され、バックテストが開始されます。
バックテスト中は、緑色のゲージが左から右に増えていき、一番右まで行けば完了です。途中でバックテストを中断したい場合は右下のストップボタンをクリックしましょう。
実際に、ちゃんとトレードされているかを見るには、結果タブやグラフタブをクリックすることで確認することが可能です。
以下のように、ゲージが満タンになり、右下のボタンが「スタート」に戻ったらバックテスト完了です。
(参考)結果、グラフを見てもテスト結果が出てこず動作していない可能性がある場合
操作履歴タブをクリックすることで、バックテスト中のログを見ることが可能です。
パラメータがおかしくてテストがされない場合など、こちらを確認してみるといいでしょう。
EAのバックテスト結果を確認
バックテストが終わったら、まずはレポートタブをクリックします。
その後、空いているところを右クリック>レポートの保存をクリックします。
名前をつけて保存画面になるので、StrategyTester.htmファイルを好きな場所に保存します。
保存すると、自動でGoogleChromeなど通常使うブラウザで、レポートが表示されます。
大きく分けて、3つのブロックに分かれます。
レポートの主な部分
- EA名やバックテスト環境、EAのパラメータ部
・・・バックテスト実施前に設定した部分です。 - バックテスト期間の成績、残高の推移グラフ
・・・EAの成績を確認したい時はここを見ます。 - バックテスト期間の個別トレード詳細
・・・個別のトレードの注文状況を1つずつ確認することができます。
バックテスト結果のレポートの見方
それでは、EAのバックテスト結果を見ていきましょう。公開されているEAのバックテスト結果を見る時のポイントにもなります。
EA名やバックテスト環境、EAのパラメータ部
各パラメータの説明
- EA名と利用しているFX会社のサーバ名
- 通貨ペア:バックテストした通貨ペアが表示されます。
- 期間:バックテストしたチャートの時間足、バックテスト期間が表示されます。
- モデル:バックテストをどのように実施したかです。「全ティック」が一番精度が高いことを覚えておきましょう。
- パラメーター:EAの各パラメータを何に設定したか表示されます。名称はプログラム上の表記になっていますが、基本的にエキスパート設定ウィンドウの順番になっています。
- テストバー数:バックテストに利用したローソク足の本数です。
- モデルティック数:バックテストに利用したティックの数です。
- モデリング品質:バックテストの品質です。90%付近であればよいといわれています。
- 不整合チャートエラー:バックテストしたチャートに欠損や異常があるかの数値です。0~20くらいが理想です。不整合チャートエラーが多い場合は、ヒストリカルデータを入れ直すなど検討が必要かもしれません。
- 初期証拠金:バックテストの初期証拠金です。
- スプレッド:バックテストで利用したスプレッド値です。
不整合チャートエラーの値が大きすぎないか確認しましょう。
バックテスト期間の成績、残高の推移グラフ
ここからが、実際のバックテスト結果です。
各結果の説明
- 純益:バックテスト期間の利益です。総利益と総損失の差額です。
- 総利益:利益の合計です。
- 総損失:損失の合計です。
- プロフィットファクター:EAの性能を評価する指標です。総利益÷総損失です。高ければ高いほどよい結果ですが、2.0以上など高すぎる場合、バックテスト期間が短かったりという場合もあります。1.2以上だと良いEAな印象です。
- 期待利得:1回の取引あたりに平均でどのくらいの利益が得られるかを表す数値です。
- 絶対ドローダウン:初期の証拠金から最も減った金額です。
- 最大ドローダウン:最も資産が増えた時から、最も資産が減った金額で、バックテスト期間の中で最大の損失になった金額です。数字が少ないほど安定感があるといえます。
- 相対ドローダウン:最も資産が増えた時から最も資産が減った時の資産が減った比率です。
- 総取引数:バックテスト期間中にトレードした回数です。
- 売りポジション(勝率%):売りポジションの勝率です。
- 買いポジション(勝率%):買いポジションの勝率です。
使うEAの種類や特徴にもよりますが、純益、プロフィットファクター、最大ドローダウン、総取引数はチェックしておきたいですね。
各結果の説明
- 勝率(%):勝ったトレードの合計数と勝率
- 負率(%):負けたトレードの合計数と負けた確率
- 最大 勝トレード:勝ったトレードの最大金額
- 最大 敗トレード:負けたトレードの最大金額
- 平均 勝トレード:勝ったトレードの平均金額
- 平均 敗トレード:負けたトレードの平均金額
- 最大 連勝(金額):最も連勝が続いたトレード数とその合計利益
- 最大 連敗(金額):最も連敗が続いたトレード数とその合計損失
- 最大 連勝(トレード数):最も連勝が続いた時の合計利益と続いたトレード数
- 最大 連敗(トレード数):最も連敗が続いた時の合計損失と続いたトレード数
- 平均 連勝:連勝回数の平均
- 平均 連敗:連敗回数の平均
ここは、具体的な勝率やトレード回数などです。
EAのバックテスト後は、こちらのような残高の推移を表すグラフも表示されます。
横軸がトレード回数、縦軸が口座残高を表しています。
バックテスト期間の個別トレード詳細
一番下はバックテスト期間中の個別トレードの結果です。
buy=買いトレード、sell=売りトレード、modify=注文変更、s/l=ストップロス、t/p=テイクプロフィットです。
ここまでが、バックテスト結果レポートの確認方法です。
EAのバックテストをパターンごとに繰り返し検証する方法
ここまでは決めたパラメータでバックテストを行う方法や、レポートの見方について紹介しました。
しかし、これだけではなくMT4のストラテジーテスターには、バックテストのパラメーターを変更して様々なパターンを繰り返し行う機能「最適化」も搭載されています。
ストラテジーテスターの右下の最適化チェックボックスをチェックして行いますが、各種設定等についてはまた別の記事で紹介したいと思います。
MT4でEAのバックテストをする方法【FX初心者でも自動売買の検証ができる】 まとめ
FX初心者でも自動売買の検証が可能なMT4でEAのバックテストをする方法について紹介しました。
まとめ
- MT4では、自動売買用のEAを過去のチャートデータを使ってバックテスト(検証)が可能
- バックテストをするための過去のチャートデータを入手する必要あり
- period_converter_ALLスクリプトを利用するとチャートデータの作成が簡単
- バックテスト結果レポートは、EAで自動売買をする上では知っておきたいこと!
FX研究所で無料公開している自動売買用EAやFX便利ツールは、今回紹介したMT4が利用できるFX会社で利用することができます。
以下の記事に利用の流れを紹介していますので、気にいったツールがあれば活用してください。