MetaTrader4 エキスパート・アドバイザーのバックテスト

本記事では、MetaTrader4 (MT4) にエキスパート・アドバイザーの動作を検証するための仕組みである、バックテストについてご紹介します。

バックテストとは、過去の価格データを用いて、あたかも過去のある期間、EA が動いていたかのようなシミュレーションを行うことで、EA の動作や、収益性、リスクを確認するためのテストです。MT4 は、バックテストのための仕組みを内蔵しています。 この記事では、SampleEA を USDJPY の1分足チャートで動かした場合のバックテストを行ってみます。

  1. バックテストの準備
  2. バックテストの実行
  3. バックテストの結果の確認

 

バックテストの準備

バックテストを行う前に、過去の過去データを準備する必要があります。
USDJPY の1分足チャートデータが必要となりますので、以前「過去の価格データの取り込み」の回で紹介した手順で、USDJPY の1分足チャートデータを用意してください。USDJPY の1分足チャートを開いて、Home キーを押し続ける方法で結構です。

 

バックテストの実行

バックテストを行うには、まず標準ツールバーの《テスター》ボタンをクリックして、テスターを表示させます。図1の赤枠のボタンが《テスター》ボタンです。


図 1

図1の下部に表示されているのがテスターの《セッティング》タブです。この画面でバックテストの条件を指定します。
エキスパートアドバイザー欄は、バックテストを行う EA を選択する欄です。今回は SampleEA を選択してください。
通貨ペア欄、期間欄は、バックテストを行う対象となるチャートの通貨ペアと周期を指定します。今回は、USDJPY、M1 (1分足) とします。

モデル欄は、バックテスト時の価格データの取り扱いを指定する欄です。「全ティック」、「コントロールポイント」、「始値のみ」の3通りのモデルがあります。それぞれ、以下のような振舞いになります。

 

全ティック

可能な限り小さい周期のデータを使用して、価格時系列を再現します。MT4 を起動していてリアルタイムの価格を受信していた時間は、ティックデータを保持しているため、そのデータを使います。ティックデータは無いが1分足がある期間については、各足の四本値からその期間の値動きを MT4 が自動的に推定し、もっともらしいティックデータを仮想的に作り出して使用します。1分足が無ければ5分足から、それもなければ15分足から、という風に使用されていきます。このモデルが、最も正確なバックテストが出来るモデルとなりますが、使用するデータ量が多いため、所要時間は長くなります。

 

コントロールポイント

テスト条件に指定した期間よりも1つ細かい周期の足データまでを用いて、仮想的なティックデータを作り出して使用するモデルです。「全ティック」よりも使用するデータが少ないため、テストの精度は悪くなりますが、所要時間は短縮されます。

 

始値のみ

テスト条件に指定した期間の足の始値のみをティックとして使用するモデルです。非常に荒っぽい方法ですが、始値しか影響しないような EA をテストする際は所要時間が短かくて済む利点があります。

 

今回は「全ティック」を使用します。1分足を準備していただいたので、主にそれが使用されます。一部、MT4 起動中に受信した本物のティックも使用されます。
スプレッド欄は、バックテストで想定するスプレッドをポイント数で指定します。MT4 の価格データはビッドで保持されているので、ここで指定したポイント数分高い価格にアスクが設定されます。今回は5にします。
「日付と時間を使用」欄は、バックテストの期間を限定するための欄です。チェックを入れて開始日と終了日を指定すると、その期間だけでバックテストを行います。チェックを外すと、保持している全てのデータで実行します。今回はチェックを入れ、開始日を1ヶ月前、終了日を今日の日付にしてください。

ビジュアルモード欄は、バックテストの進行中の状況をチャートで追いながら実行する機能です。チェックを入れるとビジュアルモードになり、バックテスト中に取引状況が確認できるチャートが表示されるようになります。今回は使用しませんので、チェックを外しておいてください。

 

  1. ビジュアルモードで実行している間は、チェックボックスの右側にある各欄で動作をコントロールできます。チェックボックスのすぐ右のスライダーはスピード設定で、右にスライドさせると高速に進行するようになります。その右のボタンは一時停止ボタンです。《スキップ》ボタンは、クリックするとその右の欄で指定した日付までビジュアルモードを一時的に無効にして一気に進めます。

 

最適化欄は、次回説明する「エキスパート・アドバイザーの最適化」で使用します。今回はチェックを外しておいてください。

続いて、《エキスパート設定》ボタンをクリックしてください。EA の動作設定画面が開きますので、《テスト中》タブを選択してください (図2)。


図 2

この画面では、バックテストにおける初期証拠金とポジションを取るサイドを指定します。
バックテストの途中で資金が枯渇するとテストが終了してしまうので、今回は多めの 1000000 USD (100万米ドル) に設定しておきます。円口座でお使いの方は 100000000 JPY (1億円) としていただいても結構です。
ポジションは「Long & Short」にしてください。他に「Long Only」、「Short Only」も選択可能です。
最適化部は、最適化で使用する設定なので、次回説明します。

次は《パラメーターの入力》タブに移ります (図3)。


図 3

テスト対象の EA のパラメーターが一覧になっています。

変数欄がパラメーター名で、バリュー欄がパラメーターの値になります。SampleEA のパラメーターは、Heightが EA の売買判断を左右する本質的なパラメーターで、Lots は取引ロット数、Magic は EA が自分の取引を識別するための番号です。今回は図3のように、Heightに10、Lots に0.01と指定してください。Magic は動作に影響しないので、そのままで結構です。Lots は、大きくするとバックテストの途中で負けが込んだときに証拠金が枯渇してテストが終了してしまうので、小さい値にしています。最低取引ロットサイズが 0.01 ではない口座をお使いの方は 0.1 や 1 としていただいても結構です。

スタート、ステップ、ストップ欄は、最適化で使用する欄ですので、次回説明します。

《読み込み(L)》、《保存(S)》ボタンは、EA を動作させるときの設定画面と同様、このパラメーターをファイルに保存したり読み込んだりするためのボタンです。

もう1つ《最適化》タブがありますが、こちらは最適化用の画面になりますので、次回取り上げます。
ここまで設定できたら《OK》をクリックしてください。

残りのボタンは、バックテストの設定ではありませんが説明しておきます。
《通貨ペアのプロパティー》ボタンをクリックすると、図4のような画面が開きます。

図 4

これは、お使いの口座におけるこの通貨ペアの取引条件を確認できる画面です。最新のスプレッド、レートの小数点以下桁数、ストップレベル等の条件が確認できます。これらの条件はバックテストでも使用されます。

《チャートを開く》ボタンは、結果確認時に使用するボタンです。後程説明します。
《エキスパート編集》ボタンは、クリックすると現在選択している EA の mq4 ファイルを MetaEditor で開きます。バックテストの結果、EA を修正したくなったときに使います。

さて、ここまで準備が出来たら、《スタート》ボタンをクリックしてください。すぐにバックテストが実行されて、図5の赤枠部のように、緑色のバーが表示されるかと思います。また、《結果》、《グラフ》、《レポート》というタブが出現しているはずです。この状態でバックテストは完了しています。
では、結果を確認してみましょう。


図 5

 

バックテストの結果の確認

まずはテスターの《チャートを開く》ボタン (図6の赤枠) をクリックしてみてください。図6のようなチャートが開きます。


図 6

バックテスト内で行われた取引がチャート上に描画された状態で表示されます。青い右向きの矢印は買い建玉のエントリ、赤いものは売り建玉のエントリを表します。黄色い左向きの三角形は手仕舞いの位置です。赤や青の破線で結ばれた間、建玉を保有していたということになります。右上がりの青破線、右下がりの赤破線は利益の出たトレード、右下がりの青破線、右上がりの赤破線は損失の出たトレードということになります。
これで EA の振舞いを視覚的に確認できます。

次にテスターの《結果》タブを見てみましょう(図7)。

図 7

このタブでは EA の行った取引行為が全て一覧として表示されており、詳細に確認することが可能です。

#欄は取引行為の通し番号です。時間欄はその取引行為の行われた時刻です。
取引種別は、取引行為の種類を表しており、buy (買い新規建て)、sell (売り新規建て)、close (手仕舞い)、modify (注文変更)、t/p (指値約定)、s/l (逆指値約定)、close at stop (バックテスト期間終了のため手仕舞い) 等が記載されます。
注文番号欄は、注文の管理番号です。同じ注文番号となっている取引行為は、同じ注文に対する操作であることを示します。例えば、# 1と # 2 は共に注文番号1となっていますが、これは # 1 で建てた建玉が # 2 で手仕舞われたことを意味します。

数量欄は注文の数量、価格欄は注文価格、S/L は逆指値価格、T/P は指値価格です。

損益欄、残高欄はその名の通りで、建玉が手仕舞われた行に記載されます。

残高の推移は《グラフ》タブで確認できます (図8)。


図 8

横軸は注文番号になっており、縦軸に各注文の建玉が手仕舞われたときの残高をとったグラフになっています。一方的な右肩下がりのひどい損益だということが分かります。

最後に《レポート》タブを見てみます (図9)。


図 9

ここにはバックテスト結果から統計的に処理された様々な情報がまとめられています。実は、バックテスト完了時に真っ先に見るべき情報は、《レポート》タブです。
順に各項目の意味を説明します。

  1. テストバー数                             31707
  2. モデルティック数                      506357
  3. モデリング品質                          25.00%
  4. 不整合チャートエラー               0

 

この4つは、バックテストの品質に関する項目です。

テストバー数は、バックテスト期間を足の本数で表現したものです。今回は約1ヶ月なので、約30,000となっているかと思います。

モデルティック数は、本物のティックデータも足データから仮想的に生成されたものも含めて、使用したティックデータの件数です。

モデリング品質は、仮想的にティックデータを生成したことによる精度の低下を勘案したバックテストの精度の目安です。バックテスト期間中、本物のティックデータが完全に揃っていると、99.90% まで上昇しますが、1分足の過去データを使う場合は、25% 程度となってしまいます。

不整合チャートエラーは、仮想ティックデータ生成の際に、複数の周期の足データを使うことになった場合、その足データに矛盾があった箇所の数を示しています。1分足は取引サーバから受信しているが、5分足は別のデータをヒストリーセンターから取り込んでいる、といった場合に発生します。

 

  1. 初期証拠金                                1000000.00
  2. スプレッド                                5

この2つは、バックテストの条件として指定したものです。

  1. 総損益                                       -83.13
  2. 総利益                                       87.23
  3. 総損失                                       -170.36
  4. プロフィットファクター           0.51
  5. 期待利得                                   -0.07

 

この5つは、EA の収益性を示す情報です。総損益が最終的な損益のトータルです。利益の出たトレードのみを集計したものが総利益、損失のみの集計が総損失です。
プロフィットファクターとは、総利益÷総損失×(-1) と計算されるもので、利益と損失のバランスを見るための指標です。利益と損失がトントンで総損益が0のとき、プロフィットファクターは1となります。1より大きければ利益の出るEA、1より小さければ損失の出るEAとなります。大きければ大きいほど、損失に対して利益が大きいことになり、優れたEAと言えます。
期待利得は、総損益÷総取引数で、1取引当たりの損益を示します。これももちろん大きいほど良いです。

  1. 絶対ドローダウン                     83.18
  2. 最大ドローダウン                     84.44 (0.01%)
  3. 相対ドローダウン                     0.01% (84.44)

この3つは、EAのリスクを示す情報です。まずドローダウンとは何かと言うと、残高がある時点から減少した幅を意味します。ドローダウンの程度を知ることで、この EA はどの程度残高を減らす恐れがあるのかを知ることができます。別の言い方をすると、総損益は同じだが、ドローダウンが大きいEAと小さいEAがあったとき、ドローダウンが小さいEAの方がリスクが小さいので優れていると判断できます。
テスターの出力するドローダウンは上記の3つがあります。

絶対ドローダウンは、初期証拠金からどれだけ残高が減ったことがあるかを意味します。
最大ドローダウンは、残高が直近で最も大きかったところから、その後最も減少したところまでの落差の最大値です。つまり、バックテスト期間中最大の残高減少幅を示します。()内はそれを残高に対する割合で表現したものです。

相対ドローダウンは、ドローダウンを残高に対する割合で評価したときに、その割合の最大値を示します。()内はそのときの残高減少幅です。
今回のテストでは、最大ドローダウンと相対ドローダウンは一致していますが、異なる結果になることも多々あります。どのドローダウン値を見るのが適切かというのは、EA をどのようなロット数で稼動させるかと関連しています。残高によらず固定ロット数で運用する場合は、ドローダウンの絶対額が重要となりますので、最大ドローダウンを見ます。逆に残高に応じてロット数を増減させる運用では、相対ドローダウンを見る必要があります。絶対ドローダウンは、バックテスト期間の取り方に左右されるので、あまり見ることはありません。

 

  1. 総取引数                                   1165
  2. ショートポジション(勝率%)   583 (29.16%)
  3. ロングポジション(勝率%)      582 (30.41%)
  4. 勝率(%)                                     347 (29.79%)
  5. 負率 (%)                                   818 (70.21%)
  6.                                                  最大
  7. 勝トレード                                2.14
  8. 負トレード                                -0.99
  9.                                                  平均
  10. 勝トレード                                0.25
  11. 負トレード                                -0.21
  12.                                                  最大
  13. 連勝(金額)                                 5 (0.56)
  14. 連敗(金額)                                 15 (-2.97)
  15.                                                  最大化
  16. 連勝(トレード数)                      2.14 (1)
  17. 連敗(トレード数)                      -3.04 (9)
  18.                                                  平均
  19. 連勝                                          1
  20. 連敗                                          3

 

残りの項目は、各取引の傾向を示すものです。

総取引数は、取引回数です。その内訳がショートポジション、ロングポジション欄です。それぞれの勝率が()書きされています。ここでは、買いと売りに想定外の偏りが出ていないか、どちらかだけ勝率が高いあるいは低いといったことが無いかを確認できます。

勝率、負率は利益の出たトレード、損失の出たトレードの回数、割合です。

また、勝トレード、負トレードそれぞれの最大、平均という欄があります。これは、利益の出たトレード、損失の出たトレードそれぞれについて、その額の最大値と平均値が表示されています。

勝率、負率、勝トレード、負トレードを併せて見ると、勝率は高いが勝トレードの平均利益が負トレードの平均損失より小さいので危険、あるいは逆に、勝率は低いが平均利益が平均損失より大きいので問題ない、などの判断が可能となります。

最後は連勝、連敗に関する情報です。連勝(金額)、連敗(金額)は、勝トレード、負トレードが連続した最大回数で、()内はそのときの損益です。連勝(トレード数)、連敗(トレード数)は、勝トレード、負トレードの連続によって連続して利益または損失が出続けたときの最大損益で、()内はそのときの連続回数です。連勝、連敗の平均は、それぞれの連続回数の平均値です。ここからは、極端な連勝や連敗が起こるような、勝敗のムラが無いかどうかが確認できます。

 

以上、バックテストの実行方法と結果の見方について説明しました。

 

 

MetaTrader4が使えるおすすめのFX会社:XM

  1. 口座開設入金なしでも3,000円
  2. 最大レバレッジ888倍!!!
  3. 約定拒否、リクオートなしの抜群の約定力
  4. 追証なし

 

 

おすすめの記事