バックテストの方法

バックテストとは

バックテストとは、MT4でEA(自動売買プログラム)を実際に運用する前に、過去のチャートデータでどのような成績を残し、

収益をどれくらい獲得できているか、一時的に最大どれくらい資金が落ちたか(最大ドローダウン)などを検証する作業のことを指します。

いきなりバックテストをしないまま、実際に取引をすることは大変リスクがあるので、必ず自身の取引口座でバックテストを行う必要があります。

また、公開されているEAのバックテストのレポートも証券会社(MT4事業者)や通貨のスプレッドによって異なる場合があるので、注意が必要です。

バックテスト環境の事前準備

FXDD1分足(M1)ヒストリカルデータダウンロード

左記リンク(FXDD)より必要な通貨の1分足の

ヒストリカルデータをダウンロードします。

※MT4からメタクオーツ社のヒストリカルデータもダウンロードできますが、

バックテストの結果があまり正確ではないです。

1分足から上位足へのヒストリカルデータを自動的に生成するプログラム[period converter ALL.ex4]を左記からダウンロードします

ダウンロードした[period converter ALL.ex4]をMT4の「ファイル」⇒「データフォルダを開く」から

「MQL4」フォルダの中にある「Scripts」フォルダに入れます。

MT4の準備

MT4を立ち上げ「ツール」の「オプション」をクリックします。


「チャート」タブの「ヒストリー内の最大バー数」及び「チャートの最大バー数」を「999999999999」と入力し、OKを押します。
一度MT4を終了して、再度立ち上げます。

もう一度「ツール」から「オプション」をクリックし、「チャート」タブの「ヒストリー内の最大バー数」及び「チャートの最大バー数」が
「2147483647」という数字になっていればOKです。

ヒストリカルデータの導入準備

注意:画像ではチャートが開いていますが、チャートは全て閉じておいてください。(通信してデータが生成されてしまうため)
「ツール」のオプションをクリックして、「ヒストリーセンター」を開きます。

ダウンロードしたヒストリカルデータをインポートする前に、各時間足にデータが入っている場合は全て削除します。
※一番上を選択して「Shift」キーと「End」キーを押すと、すべて選択状態となり一括で削除できます。

インポートするのは1分足だけなので、1分足の画面で「インポート」を押します。

「参照」を押して事前準備のところでダウンロードした通貨の1分足データ「ドル円の場合は(USDJPY_M1.csv)」を選択して
インポートします。

1分足のデータが読み込まれていることを確認して、問題がなければMT4を閉じて、再度MT4を立ち上げます。

上位時間足へのヒストリカルデータの適用

現時点では1分足(M1)のデータしかないため、1分足のデータから上位時間足へデータを生成する必要があります。
「ファイル」の「オフラインチャート」を選択して開きます。

「オフライン・チャートリスト」を表示すると、先ほどデータを読み込んだ通貨の1分足のデータが表示されているので、これを開きます。

オフラインチャートが開かれました。

事前準備でダウンロードしていた「period converter ALL」がナビゲーターに表示されていることを確認し、
オフラインチャート上に、ドラッグ&ドロップをします。

するとオフラインチャート上部で数字が動きます。この数字が消えれば、全時間足への適用が完了しバックテストの環境が整います。

オフラインチャートを閉じてMT4を再起動します。



バックテスト

上部メニューの「ストラテジーテスター」を押すと下部にバックテストをする際の項目が現れます。

「MQL4」フォルダの「Experts」フォルダの中にEAのデータが入っていれば、コンボボックスからEAを選択することができます。

「スタート」を押すとバックテストが開始されます。

モデル

バックテストの手法を3つの中から選択します。

始値のみ」のテストはチャート生成中の動きは無視するため、チャートバーの開始にEAの取引が開始されるEA向けとなってます。バックテストは高速で終わります。

コントロールポイント」はあまり正確なテストができないためおすすめしません。

全ティック」は、チャートの動きも再現するためもっとも正確なバックテストが可能ですが、テストに時間がかかります。

期間を指定期間を指定のチェックを入れると、バックテストをしたい期間を設定することができます。チェックをしない場合は全ての期間でバックテストを行います。
ビジュアルモード過去のチャートを表示しながら、EAがどこでエントリーをして、決済を行ったかなどを画面上で確認することができます。
期間EAをテストしたい時間足を選択します。「M1」は1分足「H4」は4時間足を意味します。
スプレッド「現在値」はリアルタイムのスプレッドを利用し、バックテストを行います。※指標発表などでスプレッドが大幅に変化しているときはそのスプレッドでバックテストを行ってしまうため、注意が必要です。また、為替が動いていない土日などもスプレッドが通常時と異なる状態で固定されている場合があるので、その際は直接値を入力することをおすすめします。

エキスパート設定

エキスパート設定を開くと、EAをバックテストする際の条件を入力する画面が出てきます。

MAGIC(マジックナンバー)
EAに割り当てられる識別番号です。他のEAを稼働させている場合は、この値を重複させないようにする必要があります。(不具合が発生するため)
Lots(ロット数)証拠金を取引に使う数量を設定します。上記証券会社は、0.1なら1000通貨、1.0なら10000通貨となっていますが、MT4運用会社によって異なる場合がありますので、不明な場合は証券会社ホームページ等で確認する必要があります。
StopLoss(損切値)SLとも言います。取引中に指定の含み損が発生した場合、取引を終了し、損失を確定させます。
TakeProfit(利益確定値)TPとも言います。取引中に指定の含み益が発生した場合、取引を終了し、利益を確定させます。
Slippage(スリッページ)スリッページとは、実際に注文した際の値段と約定したときの値段の誤差を表します。いくら誤差まで許容できるかを設定できますが、

成り行き注文方式を採用している証券会社では、機能しない場合があります。

COMMENT(コメント)
EAのバックテストや運用時には全く関係のないものなので、設定不要です。

そのほかの設定項目は、EAによって異なります。(移動平均線の日数やトレーリングストップの値の設定など)

バックテスト時のエラー対処法

[order send error]134 not enough money

バックテストのEAの初期証拠金が少なすぎる、

またはロット数が初期証拠金を上回っている状態です。

初期証拠金を増やすか、ロット数を下げれば解消されます。

バックテスト結果の見方

バックテストが終了した際に「レポート」タブを押すと、バックテストの結果が表示されます。

不整合チャートエラー
全ティックでバックテストをした際に機能します。テストチャートの中にエラーがある場合(例えばそのチャートバーの30分足の価格が105.5であるのにもかかわらず、1時間足の価格が105.6となっている)はどれくらい発生しているのかが表示されます。0に近い数値が好ましいです。
純益どれくらいの益または損が出たのがを表示します。
プロフィットファクタ(PF)1.0以上であれば、プラスの利益が出ていることを意味します。この数値が大きいほど利益を上げられるEAとなりますが、過剰に高い数値(PF3以上など)のEAは過剰最適化(カーブフィッティング)の可能性があるため注意が必要です。
最大ドローダウン過去の運用で、手持ちの資金に対して何%の落ち込みがあったのかを表示します。
モデリング品質主に「全ティック」でテストしたときに参考にします。90%付近(MT4業者によって最大値が異なる可能性もあります)で表示されていればバックテストの信頼性は高いです。

バックテストレポートの出力

上図のようなEAのバックテスト結果のレポートを見ることがあるかと思いますが、

これはMT4のストラテジーテスターのレポートから出力することができます。


レポートのところで、どこでも構わないのでマウスで右クリックをすると、「レポートの保存」という項目が出てくるので、

これをクリックして好きな名前で「名前を付けて保存」をすると、ストラテジーテスターレポートをブラウザで確認することができます。

『EAつくーる』
MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる!
MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる!?|?fx-on.com

裁量・EAのポジションを監視して、有利な決済(キャンドルストップ、ブレークイーブンストップ、平均足判定など)をサポートします。複数ポジションに対して、纏めて適用することが可能です。裁量・EAのポジションを監視して、有利な決済(キャンドルストップ、ブレークイーブンストップ、平均足判定など)をサポートします。複数ポジションに対して、纏めて適用することが可能です。 | GogoJungle

 

おすすめの記事