FX自動売買専用のVPSが月100円で使える!?

【MT4】EAのバックテストのやり方をEA開発者が解説|画像付き

アルゴリズムに基づいて自動でFXトレードを実施してくれるExpert Adviser(EA)は、感情に左右されずに機械的に収益を上げてくれるため近年非常に注目されており、プロトレーダーから初心者の方まで幅広いユーザーを持つ人気のソフトウェアです。

EAにはバックテストと呼ばれる過去検証機能が付加されており、EAの開発や、他人が開発したEAを使って運用する際の判断材料として活用されています。

過去の相場で良いパフォーマンスが出せないEAが未来の相場で機能することは、まずありません。
したがって、バックテストはEAを開発したり使用したりするうえで欠かないものになります。

本記事では、バックテストの仕組みからバックテストを使ったEAの評価方法まで詳しく解説します。
また、フォワードテストを効率的に短期間で正確に実施する方法も併せて解説したいと思います。

目次

バックテストの仕組み

バックテストとは、

EAを過去のチャート(ヒストリカルデータ)に基づいて売買させた時のパフォーマンスを確認する事ができる、MT4に標準搭載されている機能です。

ヒストリカルデータとは、ある通貨ペアの過去の実際の始値、終値、高値、安値と出来高(何回レートが動いたか)を記録したデータです。

バックテストは、この5つの値から専用のアルゴリズムに基づいて擬似的に過去の値動きを再現させ、EAの内部ロジックで売買させてみた時のパフォーマンスを確認するという仕組みです。

バックテストはなぜ必要か?

バックテストはEAの売買ルールの優位性を検証するためには欠かせないものです。

しかしながら、バックテストで高いパフォーマンスが出せたからといって、未来の相場での高いパフォーマンスを確証できるわけではありません。
バックテストはあくまで過去の検証でしかなく、検証したEAが未来にも通用するかしないかは、別の話になります。

しかしながら、バックテストで高いパフォーマンスを出せない売買ルールは、未来の相場で高いパフォーマンスを出せることは絶対にありません。
バックテストで良いパフォーマンスである事は必要条件であり、必要十分条件ではないのです。

バックテストを実施することのもう一つの目的は、

EAの売買ルールの最大ドローダウン(過去最高残高から最大でどれだけ残高を減らしたか)や期待値(1トレード当たりに期待できる損益)など、リアルトレードでEAを稼働させる時の設定条件を決めるための基本情報を得ることです。

特に最大ドローダウンの把握は重要です。
リアルトレードでそれ以上のドローダウンが発生した場合には、EAの稼働を止めるかそのまま走らせるかを判断する場面の一つとなります。

また、自分が許容できるドローダウンがいくらなのかを考慮する事で、取引枚数(ロット数)を決める事ができます。

これらの理由から、
バックテストは必ず実施しなければならないものでしょう。

バックテストの実施方法

バックテストの準備

冒頭で述べたように、バックテストはヒストリカルデータに基づいてテストをしますので、まずはヒストリカルデータをインポートすることから始めます。

最初に実施する事は、MT4内に蓄積できるヒストリカルデータの容量を最大にしておきます。
MT4上部のメニューバーの「ツール」から「オプション」を選択します。

ウィンドウ中の「チャート」を選択すると、下記の画像のように、「ヒストリー内の最大バー数」、「チャートの最大バー数」という項目がありますので、そちらに「99999999999···」と9を入力できるだけ入力し、OKボタンを押します。

次に行うのは、ヒストリカルデータをダウンロードすることです。

一般的にはMT4に対応している海外FX業者からダウンロードしますが、今回はFXDD(WikiFXでFXDDのスコアを確認)という業者からダウンロードする方法について解説します。

まずは以下リンクからFXDDのサイトに移動して下さい。

FXDDサイドリンク:https://www.fxddtrading.com/bm/jp

FXDDのホームページから、下記画像のように①から③の順にクリックしていくと、通貨ペアを選択する画面に遷移しますので、バックテストしたい通貨ペアをクリックしてダウンロードしてください。

画像の手順を従って、通貨ペアをダウンロードしてください
テストしたい通貨ペアのデータをダウンロードしてください

続いてダウンロードしたヒストリカルデータをインポートの手順を実行します。
MT4の上のタブの中から「ツール→ヒストリーセンター」を開くと通貨ペアの一覧表が出てきます。

1分足をダブルクリックした後、インポート()をクリックします。
するとファイル選択のウィンドウが立ち上がるので、業者からダウンロードしたヒストリカルデータを選択し、読み込むとインポート完了です。

1分足のデータをインポートしてください
他の時間足を使う場合には

これまでの作業で1分足のチャートがインポートされました。

1分足を使うEAであればこのままテストできますが、他の時間足を使う場合は、この1分足のデータから他の時間足のデータを作成する必要があります。

上部のツールバーからファイル→オフラインチャートを選択します。

以下のような画面となりますので、下図のように、ナビゲーターをクリック、「スクリプト」内のPeriod Converterをチャートにドラッグ&ドロップ、の値に作りたいチャートの時間足を入力してOKをクリックすると作成完了です。

なお、時間足の値については以下を入力してください。分で表示した値となります。
5M: 5、15M: 15、30M: 30、1H:60、4H:240、1D:1440

ヒストリカルデータの正確性について

ヒストリカルデータの正確性は大変重要です。
売買ロジックによっては、ちょっとしたデータの差でパフォーマンスに大きく差異が発生してしまいますので如何に正確なデータを入手するかがポイントになります。

ヒストリカルデータの精度が悪ければ具体的にどのような事が発生してしまうのか、具体例を用いて解説したいと思います。

例えば、ヒストリカルデータが歯抜けになっていたとします(下図のようにあるべきデータが無かった場合です)。

本来ならその部分で持っていたポジションが決裁されるはずが、バックテストではその歯抜けの後の飛び値で決裁されて大幅な利益や損失になってしまっていたら当然本来の結果とは異なる結果となります。

多少の誤差は影響しませんが、データ不備が多くなってくるとボディーブローのように効いてきて、全くパフォーマンスが異なるという事になり兼ねません。

他にも様々なパターンのデータの不備が考えられますが、そのようなことが多くなればなるほどバックテストとリアルトレードの差異が大きくなり、結果の信頼度が落ちます。
なお、時間足が短ければ短い程データ不備がテスト結果に及ぼす影響が大きくなる傾向があります。

実はこの信頼度は、データを提供しているFX業者によって差があります。
品質の高いものから品質が悪いものまで、提供しているデータの期間も様々です。

これについては色々まとめてくれている方が沢山いますので、それらを調査した上でどの業者を使うのかを決める事をオススメします。

テストの条件設定とバックテストの実施方法

バックテストの条件設定

バックテストの条件設定を行います。まずは、メニューバーの「表示」から「ストラテジーテスター」を開いてください。

下図のようなウィンドウが立ち上がりますので、各項目を設定 していきます。

①エキスパートアドバイザ
テストしたいEAを選択して下さい。

②通貨ペア
テストしたい通貨ペアを選択してください

③モデル
「全ティック」、「コントロールポイント」、「始値のみ」の中から一つを選択して下さい。
記載の順番にテスト精度が向上しますが、テストに時間がかかります。
後述にそれぞれの特徴を示していますので、参考にして下さい。私のオススメは以下です。

それぞれ3つのモデルで30回分程度のバックテストをしてみて、3つとも同等の性能であった場合は「始値のみ」を選択、全ティックとコントロールポイントのみ同等の性能であった場合は「コントロールポイント」を選択。
それ以外は「全ティック」を選択。

④期間を指定
テストする期間を開始日と終了日で設定して下さい。
テスト期間が長ければ長いほどテストの信頼性が向上しますが、当然ながら時間がかかってしまいます。
トレード回数が2,000回を下回るようであればテスト期間はインポートしたヒストリカルデータの期間をフルで設定することをオススメします。

⑤期間
こちらは時間足の設定です。EAには時間足の指定があることがほとんどですので、そのような場合には設定して下さい。

⑥スプレッド
スプレッドとは取引コストのことです。
エントリーした時にスプレッド分不利なレートから入るので、ポジションを持った時にはその分のマイナス益から始まります。
スプレッドはFX業者、通貨ペアによって異なります。
ご利用のFX業者のホームページや個人のまとめサイトから平均スプレッドを確認し、設定値を決定して下さい。
なお、私のオススメは最低でもプラス0.5 pipsは大きめに設定しておくことです。
これにより、EAのロバストネス(リアル口座で運用した時の性能低下へのインパクト)を考慮することができます。
リアルトレードに移行すると性能が低下するというのはよくある事象です。

⑦エキスパート設定
「テスト設定」タブでは、初期証拠金の設定や、ポジションをロング(買い)とショート(売り)の両方にするのか、片側に するのかを設定できます。

「パラメータの入力」タブでは、EAのパラメータを指定できます。パラメータは各EAによって異なりますので、EAの説 明書をよく読んで設定して下さい。

バックテストの実施と結果の確認方法

設定が完了したら、ストラテジーテスター右下の「スタート」をクリックすると、テストが開始されます。
テストが完了したら「スタート」横のバーが全て緑色になり、下部に「結果」、「グラフ」、「レポート」というタブが現れます。この3つの項目がバックテストの結果を確認する項目になります。以下にそれぞれについて解説します。

結果
取引の結果が順番に表示されます。エクセルにコピーして統計処理をしたり、最大利益や最大損失の日時を確認したりすることに使います。

グラフ
資産の推移グラフが確認できます。波の小さい(ドローダウンの小さい)右肩上がりの曲線が理想で、資産の増減をイメージすることができます。

レポート
以下のように、バックテストのまとめが表示されます。各項目の意味は以下の通りです。この中でも特に確認すべき項目については赤色で表示しております。

テストバー数:テストを実施したバーの数
モデルティック数:テストの実施に使用したティック数
モデリング品質:バックテストの品質
不整合チャートエラー:チャートのデータ不整合数
スプレッド:テスト時のスプレッド
初期証拠金:テストを開始する時の最初の証拠金
純益:損益金額
総利益:利益の合計
総損失:損失の合計
プロフィットファクタ:総利益/総損失
期待利益:損益/トレード回数(期待値とも呼ばれる)
絶対ドローダウン:開始資金に対して最大のドローダウン
最大ドローダウン:テスト期間中の最大のドローダウン
相対ドローダウン:最大ドローダウンの比率
総取引数:取引数の合計
売りポジション、買いポジション:売り買い各々の取引数
最大勝トレード、最大負トレード:売り買い各々の最高損失
平均勝トレード、平均負トレード:勝ち負け各々の平均損益

上記赤文字について、本記事内で解説があるものがほとんどですが、触れられていない純益とプロフィットファクタについて、いかに解説したいと思います。

·純益
もっとも基本的な項目です。利益がでないEAを稼働する意味はありません。
個人的な基準としては、1ロットにつき年間$10,000を目安にしております。
これ以下の場合、取引数が少ないか、期待値が小さくて使いにくいという判断をします。

·プロフィットファクター
1.5ロット以上を目安とします。
これが低いということは、利益が出るとしても損失も大きいということになりますので、なかなかロットを上げにくくなり、レバレッジが効かせにくくなってきます。

最後に、バックテスト結果にはのっていませんが、「リターンドローダウンレシオ(RDD)」という統計値を紹介したいと思います。計算式は以下となります。

RDD=純利益/最大ドローダウン

私はこの統計値を一番よく使います。
私の場合最大ドローダウンをベースにロット調整を行いますので、この値が大きければ大きいほど期待できる収支が大きくなるということになります。ぜひ参考にしてみて下さい。

バックテストの信頼度

信頼度を評価する手法

冒頭で述べたように、バックテストのパフォーマンスが良いからといって必ずリアルトレードでも能力を発揮するとは限りません。ここでは、バックテストの結果が信頼できるかどうかを確認するポイントを解説していきたいと思います。

スプレッド設定は適切かを確認する

スプレッドを甘めに設定してバックテストを実施する人がいます。
前述したように、ほとんどの場合リアルトレードのバックテストよりもパフォーマンスが下がりますので、スプレッド設定は厳しめにしておいて評価するのが適切だと考えます。
実際のスプレッド+0.5 pips程度大きめに設定しておくのがオススメです。

モデリング品質を確認する

モデリング品質はテストの信頼性に直結します。基本的には90%以上のデータを信頼する様にしましょう。
チャートの時間足同士に不整合データがあったり、1分足でテストしたり

するとモデリング品質が90%を下回ります。そのような場合には、フォワードテストをしっかりと行い、バックテストとの差異がない事を確認してからリアルマネーを投入する様にしましょう。

モデリング品質を100%にする事はできないのか?

答えは“yes“です。

しかしながら、99.9%にすることはできます。
その方法は、TickStoryなどのプロバイダーから有料でリアルティックを入手することです。
これは、ティックの動きが前の時間足のデータと補完アルゴリズムで表現されたものではなく、完全に再現されたものです。バックテストの精度が上がりますが、時間がかかる、有料、ハイスペックなPCを持っていないと現実的でないという事から、ほとんどの人は90%以上のモデリング品質を基準としています。

コントロールポイントと始値のみの問題点

「モデル」に「コントロールポイント」や「始値のみ」を適用するとモデリング品質はn/aが返ってきます。Not appliedの略で、これは非適用を意味します。なぜ非適用なのかというと、ロジックによっては信頼できる場合もあるし、信頼できない場合もあることが理由です。それはどういうことなのか?コントロールポイントのモデルについて具体例を示しながら詳細を解説したいと思います。

コントロールポイントは、一つ前の足のデータをベースに、8つのポイントのみをピックアップして値動きを再現します。
では、その8つのポイント間のレートに大きな差があればどうなるでしょうか?例として以下のような売買ロジックのEAをバックテストした場合の結果について考えてみましょう。

売買ロジック:ボリンジャーバンドの-2シグマバンドよりも下がったら買い、+2シグマバンドの上で売りです。

テスト結果

下の図は、取引ポイントをマークしたチャートと、資産曲線です。
左側がコントロールポイント、右側が全ティックでのテスト結果です。

一見してわかるのは、資産曲線が全く異なるという事です。コントロールポイントは素晴らしい資産曲線を示しているのに対し、全ティックは全く儲からない結果となっています。

なぜこんな事になるかというと、売買ポイントに注目して頂きたいと思います。
赤色が買い、青色が売り、緑色が決済したポイントになります。
左側と右側でほんの少しですが、コントロールポイントの方が有利に売買されているのが分かりますでしょうか?

これは、コントロールポイントが飛び値になっている事に起因します。
全ティックはバンドの外側に出たらすぐに決済するのに対し、コントロールポイントはバンドの更に外側で決済されるのです。

これがロジックによってコントロールポイントのテスト結果が信頼できない理由です。始値のみは、もっとこの傾向が顕著になると考えて下さい。

当然、EAの売買ロジックによってはコントロールポイントでもほぼ全ティックと同じ結果となるものもあります。
始値や終値のみで取引するようなEAです。コントロールポイントや始値のみでバックテストする場合には、必ず短い期間でテスト結果を比較し、同等のパフォーマンスである事を確認してからにするようにしましょう。

期待値を確認する

バックテストの結果を確認する時に必ずチェックする必要がある重要なパラメータであるにも関わらず、あまり取り上げられる事のないのが「期待値」です。バックテストの期待値が低い場合、バックテストが素晴らしい資産曲線を描いていても、リアルトレードになったらさっぱりといった事がよくあります。

その理由は、ほとんどの場合リアルトレードは取引コスト(スプレッド、スワップ金利、スリッページ等)が理由でバックテストの結果よりも期待値が下がるためです。期待値が元々高い場合はパフォーマンスにそこまで影響はありません。しかしながら、元々期待値が低い場合はマイナスの期待値になる、すなわちトレードする度に損失になる可能性が高い戦略になってしまう訳です。

経験上、期待値は5pips以上を推奨しています。しかしながら、なかなかそんなEAは見つかりませんので、現実的には2.5 pip以上あたりを目指す事になりでしょう。ただし、期待値が低い場合は以下の事について配慮しておく必要があります。

  • バックテストは実際よりも厳しいスプレッド条件として期待値を確認しておく
  • スワップ金利が大幅マイナスな通貨ペアを選択しない
  • パラメータの許容スリッページを0.5pips以下に設定する

また、EAが過剰最適化(カーブフィッティング)されたものであればリアルトレードの期待値も下がり、マイナスになってしまう可能性があります。過剰最適化については次項にて詳しく解説します。

過剰最適化とは

過剰最適化とは、EAの売買ロジックを過去の相場に対して過剰に最適化することです。過去の相場に合うように売買ロジックを作るので、バックテストの成績は非常に優秀になります。しかし、実際の取引では大抵の場合バックテスト通りになりません。

厄介なのが、過剰最適化は非常に簡単にできてしまいます。バックテストの成績を良く見せてEAを売り付けようとしたりする開発者もいれば、より良いパフォーマンスを追求する過程で過剰最適化してしまったりと様々です。EAの過半数はそういった過剰最適化の罠にハマったものがほとんどである事を認識しておくべきです。

過剰最適化を見破るテクニック

過剰最適化の要因は以下であることが多いと言えます。順番に解説したいと思います。

1. 調子の悪い時期の取引を意図的に消している
2. フィルターをかけすぎている(取引しない条件を売買ロジックに入れすぎている)
3. パラメータを弄って良い組み合わせを選んでいる

解決方法↓

ある期間だけ不自然に取引がない状態となります。資産曲線のグラフでは分からないので、取引結果をコピーしてエクセルなどのスプレッドシートに貼り付け、抜けている期間がないか確認してみてください。

ビジュアルモードの活用方法

ビジュアルモードとは、実際にチャートが動き、売買の様子を動画で早送りして見るようにできる方法です。

このビジュアルモードは、主にEA開発者が自分で製作したEAが思惑通りに稼動しているかを調べるのに使います。ですが、実はEAを使う側の人も見ることをオススメします。

その理由は、ビジュアルモードを見る事で、EAの売買ロジックについて理解が深まるからです。自分が使うEAの売買ロジックは、可能な限り把握しておく方が上手く使いこなせる事は間違いありませんので、ぜひビジュアルモードでの確認をオススメします。

実際にビジュアルモードでバックテストしてみましょう!

下図はストラテジーテスター画面になります。この画面の赤い丸で囲ってある部分がビジュアルモードのスイッチです。 ここのチェックボックスにチェックしてください。

あとは普通にバックテストの設定をして、右下のスタートボタンを押します。

画面にチャートが出て、チャートが上下に動き出すのが確認できると思います。 

ここで注意しなければならないのは、インディケーターを使ったEAの場合、ビジュアルモード中はインディケーターが表示されないことです。 ビジュアルモードのバックテストを終了した時に、利用しているインディケーターが表示され、取引ポイントなどのチェックが可能になります。

デフォルト設定ではチャートの動きが早すぎて売買の様子が全く把握できません。チェックボックス横のバーでスピードが調整できるので、見やすいように調整してください。

バックテストを活用したフォワードテストの効率的実施方法

フォワードテストとは

フォワードテストとは、EAが現在から未来の相場において、利益につながる優位性を持っているかどうかの確認することです。フォワードテストを行うことによって、現時点でのEAの有効性をリアルタイムで知ることができます。

EAを稼働する際には、フォワードテストをしっかりと確認するようにしましょう。フォワードテストはリアル口座でもデモ口座でも実施は可能です。まずはデモ口座で様子を見る事をオススメしますが、デモ口座の場合は取引コスト(スプレッド、スリッページ、スワップポイントなど)が実際よりも小さい場合があるので注意が必要です。

統計分析を使ったリアルトレードへの移行判断

上述したように、フォワードテストはバックテストの結果が信頼できるものかどうかをチェックするために行うものです。

ではどのような結果であればリアルトレードに移行できるのか、判断基準がなければ早すぎるタイミングで待ちきれずにリアルトレードに移行してしまったり、不安でいつまでもリアルトレードに移行できなかったりという事態に陥ってしまします。そこで、効率的にこれを判断するために必要となるのが、統計的に行うフォワードテストの評価手法です。

以下に代表的なものを紹介するので、参考にしてみてください。重要なのは、フォワードテストで儲かっているかどうかではなく、バックテストと比較して差異がないかです。

損益分布比較

この方法は、損益の頻度分布をバックテストとフォワードテストで比較する方法です。下図は横軸に損益、縦軸に頻度をグラフ化したものです。

例えばこの分布図で言うとバックテストの損益で一番多くの頻度であるものは1ドルで回数は60回です。一方フォワードテストはピークがずれていて-7ドルで回数は60回というデータになっています。
これが示すのは、何らかの理由でバックテストよりもフォワードテストの損益分布の方が低い方にシフトしている(期待値が下がっている)という事です。

このような場合には、もう少しデータを取って分布が一致していくかを見る必要があります。しばらく実施しても改善されない場合は、現状の結果を受け入れられるか受け入れられないかを判断しなければなりません。
そのための材料としてフォワードテストとバックテストの期待値の差分だけスプレッドを高くしてバックテストをしてみることをオススメします。

逆に下図のように、この頻度分布がほぼ一致しているような場合は、フォワードテストは早々に切り上げてリアルトレードに移行しても良いと判断ができます。

資産曲線の結合

頻度分布に差異があったとしても、リアルへの移行を諦めるのは時期尚早で、現在はたまたま不調期であった可能性もあります。それを確かめる手法が資産曲線の結合です。

もし、下図のように、バックテストとフォワードテストの資産曲線を結合してみて、フォワードテスト開始直後に変曲しているような場合は、リアルトレードへの移行は難しいでしょう。

「EAは過剰最適化されたものであった」、「取引コストを甘く見ていた」など、なんらかの理由があった事を突き止め、ブローカーを変更する、パラメータの変更でパフォーマンスを改善するなどといったいった対応を取るか、採用を諦めるという判断が必要になります。

これらの検証をパスして無事にリアルトレードに移行できたとしても、将来にわたってずっと稼ぎ続けられる戦略かどうかは分かりません。次にEAの稼働をストップさせる場合の判断方について解説したいと思います。

EAを止めるべきタイミング

EAには調子のいい時と悪い時が必ずあります。調子の悪い時は稼働をストップするべきというのはよく聞く話です。しかしながらそのタイミングは非常に難しく、それができる人は、そのEAを開発した人か、チャート分析に長けた人であると思います。
誤ったタイミングで稼働と非稼働を繰り返して資産を減らしていく人ものすごく多いのが実態です。ではどのようにして判断するのか?以下に私が実施している判断方法を解説しますので、参考にしてみてください。

バックテストの最大ドローダウンを考慮して判断

バックテストはリアルトレードよりもパフォーマンスが良いことがほとんどです。裏を返せば、リアルトレードではバックテスト以上の最大ドローダウンを覚悟しなければなりません。

私の場合は、最大ドローダウンの2倍は覚悟する事にしています。リアルトレードの最大ドローダウンがバックテストのそれの2倍に到達すれば、何かおかしなことがあったに違いないと判断し、要因を分析することにしています。

資産曲線の許容範囲

もう一つの方法として、資産曲線の許容範囲から判断する方法があります。
下図は期待曲線と資産推移の許容範囲を示すグラフです。このグラフはバックテストの統計値をもとに作成します。

バックテストを基にした場合、何日間でどれだけの利益が出るか、その増減幅はどれくらいか、ということを確認しておいてそれをグラフ化し、リアルトレードの損益グラフがその範囲に入っているかどうかをモニタリングするという手法です。

この手法を用いることで、感情に左右されずに客観的な事実を元に稼働のストップを判断することができます。

終わりに

本記事ではバックテストの重要性について解説しました。
バックテストは必要条件であり、必要十分条件ではないと冒頭に述べたことがご理解できたかと思います。

本記事を参考に、より精度の高いバックテストとフォワードテストの評価を実施し、是非リアルマネーでの運用に活かして頂ければと思います。

WikiFXとは?

WikiFX(ウィキエフエックス)は、FX会社の安全性・信頼性を評価している第三者機関です。
全世界3万以上のFXブローカーの情報を収集し・格付けを行っています。
FX会社の安全性スコアや詐欺被害のリアルな口コミは『wikifx.com』で確認できます。

取引に役立つ情報をあなたの元に
WikiFXアプリはこちらから

アプリ画面
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

WikiFXでは、テクニカル分析のやり方から、FX会社の安全性に関する情報まで『今日から役立つFXの情報』を幅広く発信しています。
そして私たちは、FX会社アフィリエイトを一切していません。
だからこそ、正しく・信頼性の高い情報を読者の皆様にお届けする自信があります。

コメント

コメントする

目次