MT4のEAをバックテストする手順|海外FX
MT4でEAをバックテストするには何が必要?
バックテストの手順を詳しく知りたい
バックテストのトラブルを解決したい
ここではMT4でのEAバックテスト手順をわかりやすく解説。
1億時間以上バックテストを実行した経験から、バックテストの本質について理解できる記事になっている。
バックテストで起きる不具合や、こまった時の対応も紹介。
最後まで読むことで環境の設定からトラブル対応まで、MT4のEAバックテストについてすべてご理解いただける内容となっている。
EAをバックテストするメリットとデメリット
バックテストとは、過去のチャートからEAの性能を評価すること。MT4のツール「ストラテジーテスター」で条件を設定、擬似的な取引を実行し、EAの性能を評価できる。
バックテストはあくまでも擬似的な取引であり、リアル取引の状況を完全に再現することは不可能という前提がある。
相場の不確実な動きに対し、機械的なEAの取引で利益をいくら残せるのか?長期間で検証できる。リアル取引で何十年とかかる検証も、バックテストであれば短期間で性能を評価できるのでメリットは大きい。
デメリットはバックテストでしか勝てないようなEAを追い求める危険性があること。過去のチャートは確定しているため、それに合わせて利益を出すのは難しくない。つまり、バックテストで良い成績をだしたとしても、リアル取引で同じようにいくとは限らないのだ。
バックテストでの成績を追い求めた結果、カーブフィッティングしたEAはざらにある。バックテストの結果に過度な期待は禁物だ。
バックテストではスプレッドの変動、スリッページ、約定速度が考慮されていない。
活用するにはリアル取引とは大きく違う環境だと理解が必要だ。
MT4でEAをバックテストする手順
- EAをMT4へセットする
- ヒストリー内の最大バー数を上限に設定
- ヒストリカルデータのダウンロード
MT4はバックテスト前の準備が必要。
MT4のストラテジーテスターウインドウを開きバックテストの設定。
バックテストのEAに条件の設定が可能。
MT4でバックテストする準備
まずはMT4でバックテストの準備から。このリンクからMT4をダウンロードできるので任意のブローカーから入手。
EAをMT4のデータフォルダへ移動する
MT4のメニューから「ファイル」>>「データフォルダを開く」と操作しMT4のデータフォルダを開く。
データフォルダ内の「MQL4フォルダ」>>「expertsフォルダ」の順にアクセス、EAファイルを移動。
ヒストリー内の最大バー数を上限に設定
ヒストリカルデータをダウンロードしてバックテスト期間を長くするが、その前に最大バー数の設定を上限まで引き上げる。ヒストリー内の最大バー数を上限まで引き上げていないと、わざわざヒストリカルデータをダウンロードしても最大の期間を適用できない。
Ctrl+O>>「チャート」
または「ツール」>>「オプション」>>「チャート」の順でヒストリー内の最大バー数を設定。
ヒストリー内の最大バー数は2147483647が最大となるが、最大を超える数値を入力すれば自動的に最大値が設定される。
ヒストリカルデータのダウンロード
MT4のヒストリーセンターからヒストリカルデータをダウンロードできる。ダウンロードできるデータはMetaQuotes社にデータのある銘柄のみとなる。
FX通貨ペアのほとんどはダウンロード可能だが、CFDはダウンロードできない銘柄もある。
「ツール」>>「ヒストリーセンター」から、
またはショートカットのF2キーでヒストリーセンターを開く。
バックテストに使う通貨ペアを選びダウンロード。ヒストリカルデータの期間は選べず、すべてのデータがダウンロードされる。
どの時間足を選択してもすべての時間足でダウンロードされる仕様となっている。
FXブローカーからダウンロード
海外FXブローカーのAXIORYとTradersTrustではヒストリカルデータを提供している。
MT4は外部ヒストリカルデータのインポートができるため海外FXブローカー提供のヒストリカルデータも利用できる。
FXブローカーが提供するヒストリカルデータは正確でバックテストの質を高める効果が期待できる。
しかし期間が数年と短いためMetaQuotesのヒストリカルデータとの併用がおすすめだ。
インポートするヒストリカルデータは上書きされるためMetaQuotesのデータと併用が可能。
ストラテジーテスターの設定
MT4のバックテストには「ストラテジーテスター」を使用する。
EAに条件を設定し、スタートでバックテストが開始。バックテストにかかる時間はEAの仕様やテスト期間で変動する。
無駄なテストで時間を浪費しないよう、ストラテジーテスターでのテスト条件は慎重に設定したい。
項目 | 内容 |
---|---|
①EA選択 | バックテストするEAを選択する。 |
②通貨ペア選択 | バックテストする通貨ペアを選択する。事前にヒストリカルデータをダウンロードしておく。 |
③モデル | ヒストリカルデータの使用範囲を選択できる。全ティック推奨。 |
④期間 | バックテストする時間足を設定する。EAの仕様に合わせる。 |
⑤スプレッド | バックテストの売買にかかるスプレッドを設定する。 |
⑥期間を指定 | バックテストする期間を指定する。 |
⑦ビジュアルモード | バックテストの取引がチャートに出力される。 |
⑧エキスパート設定 | バックテストするEAの設定。 |
⑨最適化 | 複数のエキスパート設定をテストして最適な条件を抽出する。 |
狭すぎるスプレッドはバックテスト結果を狂わせる
ストラテジーテスターのスプレッド設定がリアル取引よりも狭いスプレッドに設定すると、勝てなかったEAが勝ってしまうEAになるロジックもある。
EAのロジックによるが、狭すぎるスプレッド設定はEAの性能を見誤る可能性が高い。
ストラテジーテスターのスプレッドはEAの性能に直結する設定であり、リアルと同等、またはリアルよりも少し大きめの値がおすすめだ。
ストラテジーテスターで設定できるスプレッドの単位はポイントで、主なFX通貨ペアでの1ポイントは0.1pipsとなるので覚えておこう。
モデル
モデルでヒストリカルデータを使用する範囲の選択が可能。
全ティック、コントールポイント、始値のみ、の3種から選択できる。
全ティックはすべてのデータを使用するため信頼度が高い。
続いてコントロールポイント、始値のみ、の順。始値のみではEAのロジックで始値以外のデータを利用しているとテストとして機能しないので注意。
全ティック以外でのバックテストは時間短縮のメリットがあるが、信頼性は大幅に減少すると理解しておこう。
期間
EAが取引する時間足を設定する。
EAによってはセットする時間足が仕様で決められている。
決められた時間足以外ではバックテストできないEAもあるので注意。
期間を指定
バックテストする期間を指定する。
どんなに軽い処理のEAでも10年以上のバックテストとなると数時間かかる。
一度に長い期間とせず1~2年単位で区切ると時間効率が上がる傾向にある。
長期間のバックテストであれば試す価値はある。
ビジュアルモード
ストラテジーテスターの設定でビジュアルモードにチェックを入れるとバックテストがチャートに描画される。
EAの取引を可視化できるメリットはあるが、バックテスト完了に時間がかかる。
ビジュアルモードでチェックしたい期間を事前に絞れば効率のよいバックテストになる。
ビジュアルモードはスライダーで再生速度を変更できるが、微調整はできない仕様なので諦めよう。
エキスパート設定
- テスト設定
- 初期証拠金
- ポジション
- 最適化パラメータ
- パラメーターの入力
- 使用するEAごとのパラメーターを設定
- 最適化
- 最小口座残高
- 最大利益
- 最小証拠金レベル
- 最大ドローダウン
- 連敗
- 連敗トレード
- 連勝
- 連勝トレード
エキスパート設定ではEAの条件を設定。
テスト設定で初期証拠金を設定。
パラメーターの入力で設定できる項目はEAによって違う。
最適化では選択した項目についてパラメーターを変化させ、それぞれの結果を比較できる。
最適化の詳細は後述している。
バックテスト開始と終了
ストラテジーテスターのスタートをクリックでバックテスト開始。
みどり色ゲージの右端移動でバックテスト完了。
バックテストの最適化について
エキスパート設定のパラメーターから値の組み合わせを探れるのが最適化だ。
インジケーターの値、ロットサイズなどからパラメーターの組み合わせを比較できる。
組み合わせが多いと試行回数も増えるためバックテストに時間がかかる。
また、バックテスト試行期間が短い場合にはカーブフィッティング※の可能性が高くなる。
最適化でパラメーターを探るのであれば、長期間での試行を推奨する。
※取引内容がチャートの特定部分に対してのみ通用している状態
パラメーターの入力では各項目に対してスタート、ステップ、ストップ、を設定できる。
最適化したい項目を選択し、値の幅をスタートとストップで設定できる。
スタートの値からステップの値ごとに増加してストップの値までを検証する、といった流れになる。
画像にある例の場合、複利リスク値(%)にチェックがあり最適化の対象となる。
最適化:スタート4.0、ステップ2.0、ストップ12.0のイメージ
スタートが4.0%でストップが12.0%のため4.0~12.0%までの複利リスク値(%)で最適な数値を検証できる。
4.0~12.0%までをステップで指定した2.0刻みで検証し、4.0、6.0、8.0、10.0、12.0、でそれぞれの結果が出ることとなる。
最適化の結果、変化について結果を知りたいかを指定できる。
- 最小口座残高
- 最大利益
- 最小証拠金レベル%
- 最大ドローダウン
- 連敗
- 連敗トレード
- 連勝
- 連勝トレード
最大利益と最大ドローダウンについて最適化した結果を知るには、最大利益と最大ドローダウンにチェックを入れる。
最適化のバックテストは通常よりも試行回数が増えるため時間がかかる。
試行回数、期間はバックテスト時間が増える要因になる。
最適化では終了予定の時間が表示される。
バックテスト後に最適化結果タブから最適化の結果を表示できる。
項目を選んでソート可能。
画像の場合、複利リスク値12.0%を始めとし、10.0、8.0、6.0、4.0の順で獲得利益が多い結果に。
ドローダウンは逆順に多い結果とわかる。
時間がかかるバックテスト
処理の重いインジケーターを使っているEAのバックテスト
ビジュアルモードのバックテスト
期間の長いバックテスト
最適化バックテスト
処理の重いインジケーターを使っているEAのバックテストは時間がかかる
複数のインジケーターを使用、処理の重いインジケーターを使用しているなど、EAの仕様によってバックテスト時間は変化する。
ビジュアルモードのバックテストは時間がかかる
ビジュアルモードはチャート描画の処理がありバックテストに時間がかかる。
チャートを見る必要のないバックテストではビジュアルモードオフが良い。
期間の長いバックテストは時間がかかる
設定期間が一定を超えるとバックテストは処理が遅くなる。
たとえば10年間のバックテスト1回と、10年間を2年ごとに分けた5回のバックテストとでは同じ時間にならない。
MT4では長い期間を一度にバックテストすれば処理に時間がかかる。
最適化バックテストは時間がかかる
最適化は設定項目が多く、期間と合わせて掛け算でバックテスト時間が増える。
MT4でバックテストしたEAのレポートを検証する
バックテスト完了でストラテジーテスターレポートを保存できる。
やり方はストラテジーテスターのレポートタブでレポート画面を開き右クリック「レポートの保存」でOK。
ストラテジーテスターで設定した項目=みどり枠
バックテストの品質に関わる情報=オレンジ枠
項目 | 説明 |
---|---|
純益 | 総利益から総損失を引いた利益 |
総利益 | 利益トレードの合計 |
総損失 | 損失トレードの合計 |
プロフィットファクタ | 総利益÷総損失で求められる値 |
期待利得 | 純益÷総取引数で求められる値 |
絶対ドローダウン | 初期資金からもっとも減少した金額 |
最大ドローダウン | 総資金が最大の時の最大減少金額 |
相対ドローダウン | 総資金が最大の時の最大減少比率 |
総取引数 | すべての取引 |
売りポジション | 売りポジションの勝率 |
買いポジション | 買いポジションの勝率 |
勝率 | 全体の勝率 |
負率 | 全体の負率 |
最大勝ちトレード | 1トレードで最大の利益 |
最大敗けトレード | 1トレードで最大の損失 |
平均勝ちトレード | 勝トレード平均の金額 |
平均敗けトレード | 敗けトレード平均の金額 |
最大連勝(金額) | 最大連勝での金額 |
最大連敗(金額) | 最大連敗での金額 |
最大連勝(トレード数) | 最大連勝数 |
最大連敗(トレード数) | 最大連敗数 |
平均連勝 | 連勝数の平均 |
平均連敗 | 連敗数の平均 |
バックテストの品質|不適合チャートエラーとモデリング品質
ストラテジーテスターレポートに表示される「不適合チャートエラー」「モデリング品質」はバックテストの品質を計る。
不適合チャートエラー:ヒストリカルデータが正しく参照されなかったバー数
ヒストリカルデータが正しくダウンロード、またはインポートされていれば不適合チャートエラーは0になる。
エラーがカウントされるようなら対象の期間でヒストリカルデータのダウンロード、またはインポートで解決。
モデリング品質:ヒストリカルデータの動きを再現できた割合
モデリングとは、実物を再現すること。
リアルでの値動きを記したデータがヒストリカルデータであり、それを忠実な再現として動作させるのがストラテジーテスターのバックテストとなる。
モデリング品質は100%になりえない。
それはダウンロードできるヒストリカルデータに正確なティックデータが存在しないためだ。
ヒストリーセンターで表示される時間足のデータは1分足からとなるが、実際の値動きはティックデータが最小だ。
しかし、ダウンロードできるヒストリカルデータは1分足の四本値が最小になる。
つまり、忠実にモデリングするにはティックデータが不足している状態なのだとわかる。
モデリング品質が100%でも無意味な理由
モデリング品質にこだわったところで、リアル取引を完全に再現するバックテストは不可能である。
なぜなら、リアル取引ではスリッページ、スプレッドの増減などが頻繁に発生する。
これらの現象をバックテストでは再現できないのだ。
バックテストではヒストリカルデータに対して忠実にEAの処理を執行できるため、例えるなら止まっている的を狙っているのと同じである。
リアル取引での的は不規則に動くため、結果は別のものになって当然だ。
モデリング品質は高い方が良い。
しかし、いくら高くても所詮テストの域をでるものではない、との理解が大切である。
プロフィットファクタと勝率
プロフィットファクター(以下PF)は利益÷損失で求められる指標だ。
PFの数値は一回の取引における利益の期待値になる。
例えば利益が300、損失が100の場合PFは3.0になり、利益が300、損失が600の場合PFは0.5、利益が300、損失が300の場合PFは1.0となる。
PFが高いEAは若干低い勝率でも利益は残るEAになる。
PFが低いEAは高勝率でも利益を残すことが難しい。
計算上ではPF1.0以上、勝率51%以上で、やればやるほど利益が残るEAということになる。
絶対ドローダウン、最大ドローダウン、相対ドローダウン
絶対ドローダウンは初期資金から最大に減少した時の金額をあらわしている。含み損も対象となる。
最大ドローダウンは証拠金残高に対して最大に減少した時の金額をあらわしている。含み損も対象となる。
相対ドローダウンは証拠金残高に対して最大に減少した時の割合をあらわしている。含み損も対象となる。
一般的にEAのドローダウンといえば最大ドローダウン、または相対ドローダウンが使われている。
証拠金残高にかかるリスクとして許容できるか否かは最大ドローダウン、または相対ドローダウンで判断すると良い。
バックテストで勝ててリアルで勝てないEA
カーブフィッテイングしているEAはリアルで勝てない
過去チャートの特定部分で有利に取引できるよう作られたEAは、リアルで勝てる確率はかなり低い。
バックテストの期間が10年以内のEAはカーブフィットの可能性を残していると疑うことが賢明である。
取引コストを無視したバックテストはEAの性能が上がる
リアルの取引ではスプレッドのコストがかかり、マイナス方向へのスリップも起こる。
EAの取引ロジックによっては、この取引コストを無視することで大きな利益を生むことがある。
こういったEAはバックテストで輝かしい結果を残すが、リアルトレードではジリジリとコスト負けを起こす。
バックテストの設定ではスプレッドをリアル取引よりも大きめに設定することで現実的な評価を下せる。
取引条件に左右されやすいEAはリアルで勝ちづらい
リアル取引で起こるスリップ、スプレッド拡大による影響があるEAではバックテストとリアル取引とで結果が大きく異なる。
指値、逆指値を使ったEAのバックテストでは相場の急変動でも狙った値で約定するが、リアル取引ではそうもいかない。
スワップが利益に加味されているEAも、ブローカーのスワップポイントが変動してしまえば性能に影響がでる。
バックテストのトラブルQ&A
- バックテストされない、取引の結果がない
-
- EAの仕様で取引していない可能性を調べる(通貨ペア、時間足、スプレッド制限、証拠金など)
- EAの使用条件に適していない可能性を調べる(専用口座、試用期間、デモ専用など)
- テスト期間のヒストリカルデータがない
- ビジュアルモードがオンの状態で一時停止されている
- モードが全ティック以外に設定(EA未対応の場合)
- 不適合チャートエラーがでる
-
MT4が回線に繋がっている場合ティックデータが更新されるためエラーになる可能性がある。ヒストリカルデータのダウンロード、またはインポートで修復が可能。
- モデリング品質が低い
-
1分足で取引するEAをバックテストするとモデリング品質は25%になるが不具合ではない。忠実にモデリングされたバックテストであってもリアル取引との乖離は埋められないため、モデリング品質を気にしすぎないようにしたい。
- バックテストが長い、終わらない
-
期間の長いバックテストは時間がかかる。年数を分けてテストするか、放置で終了を待つことで対応。
EAを運用する複利計算機
こちらはEAを福利運用した場合のシミュレーションができるFX計算機だ。
バックテストで得た結果をもとに、利回りと初期資金の入力で福利運用のシミュレーションが可能。
月々の積み立てシミュレーションにも対応している。
ご活用いただきたい。