本マニュアルでは、EAのバックテスト方法について解説します。
バックテストで自動売買EAの性能が
ある程度分かりますので、是非マスターしてください。
また、バックテストを行うMT4は、
長期間の為替データを読み込ませるので、
MT4の動作が重くなりがちです
なので、バックテスト専用のMT4を新しく準備される事をお勧めします。
バックテストを行う場合、MT4にヒストリカルデータ(過去のデータ)が
インポートされていることが前提となります。
まずはヒストリカルデータのダウンロード方法および
インポート方法から解説していきます。
ヒストリカルデータはMT4の開発元である
MetaQuotes社よりデータをダウンロードすることも可能ですが、
意外にもデータに抜けが多く
精度の高いバックテストを行うには十分ではありません。
そこで無料のデータとしては長期間で、ある程度精度が高い、
AXIORY社のヒストリカルデータをご紹介しておきます。
また、AXIORY社のヒストリカルデータは
MT4のサーバータイムがGMT+2(冬)/+3(夏)のデータとなりますので、
過去検証(バックテスト)で使用するMT4は
サーバータイムが同じ業者のものとして下さい。
バックテストに必要なデータの通貨ペア名をクリックしてダウンロードします。
ヒストリカルデータは年別/月別に格納されています。
ここでは例としてUSDJPYの2024年の
ヒストリカルデータをダウンロードしますので
2024年の「USDJPY」をクリックして保存します。
圧縮ファイルを解凍してフォルダを開くと
「USDJPY_2024_○○」というファイルが確認できます。
ここでは2024年1年分のヒストリカルデータである「USDJPY_2024_all」 を使用します。
MT4の「ツール」 ⇒ 「オプション」 ⇒ 「チャート」で、
「ヒストリー内の最大バー数」「チャートの最大バー数」に
「9999999999(9を10個)」と入力して「OK」をクリックします。
先ほど開いた「チャート」をクリックして
それぞれの値が「2147483647」となっていることを確認します。
これで長期のヒストリカルデータをインポートする受け皿が完成となります。
先ほどAXIORY社よりダウンロードした
ヒストリカルデータをMT4にインポートしていきます。
「ツール」 ⇒ 「ヒストリーセンター」で、
USDJPYの「1分足(M1)」をクリックし「インポート」をクリックします。
「インポート」をクリックすると以下のウィンドウが表示されますので
「参照」ボタンで「USDJPY_2024_all」 を選択し「OK」をクリックします。
データベースのレコード数が大幅に増加していればインポート成功です。
これでUSDJPYの2024年分のヒストリカルデータをインポートすることができました。
AXIORY社ではほとんどの通貨ペアで
2015年分からのヒストリカルデータをダウンロードすることが可能です。
同じ要領で、その他の年/月のヒストリカルデータをインポート出来ます。
※最後に必ずMT4を再起動させ、インポートしたデータをMT4に反映させます。
先ほどインポートした1分足データから
他の時間足(5分足以降)を生成します。
「ファイル」 ⇒ 「オフラインチャート」で、
インポートした1分足チャートを開きます。
ナビゲータから「スクリプト」 ⇒ 「period_converter+All」を
チャートにドラッグ&ドロップします。
※「period_converter+All」は1分足データを基に
自動で全時間足を作成する便利なスクリプトです。
初期状態のMT4にはインストールされていませんので
以下のリンクより入手して下さい。
ダウンロード後は解凍して「period_converter+All.ex4」を
「MQL4フォルダ」内の「scriptsフォルダ内」に設置して使用します。
チャートにドラッグ&ドロップ後「OK」をクリックすると
5分足・15分足・30分足・・・と順に生成されます。
※ここでもMT4を再起動させ、生成したデータをMT4に反映させて下さい。
「ファイル」 ⇒ 「オフラインチャート」で、
5分足データから日足データまで生成されていることが確認できれば完了です。
これで2015年から現在までのバックテストが可能になりました。
ここから実際にMT4のストラテジーテスターを使用して、
EAのバックテストを行っていきます。
MT4を起動させ「表示」 ⇒ 「ストラテジーテスター」で、
ストラテジーテスターを起動させます。
バックテストを行うEAを選択します。
「エキスパート設定」⇒「テスト設定」で、テスト設定タブを開きます。
テスト設定タブで初期証拠金を設定します。
例えば「1000000」「JPY」と手動で入力しますと、
初期証拠金100万円を想定したバックテストが可能となります。
※初期証拠金はご自身の資金に合わせて設定されて下さい。
パラメーターの入力タブでEAのパラメーターを設定します。
設定が完了しましたら「OK」をクリックします。
※パラメーターの詳細は各EAに付属の「設定マニュアル」をご参照下さい。
バックテストを行うEAに合わせ、各項目を設定します。
各項目の解説は以下になります。
項目 | 解説 |
エキスパートアドバイザー | 過去検証(バックテスト)を行うEAを選択します。 |
通貨ペア | 過去検証(バックテスト)を行う通貨ペアを選択します。 |
モデル | 全ティックを選択することで最も精度が高いバックテストを行うことができます。 |
期間 | 過去検証(バックテスト)を行う時間足を選択します。 |
スプレッド | 通貨ペアのスプレッドを設定します。 |
期間を指定 | チェックを入れるとバックテストの「開始日」「終了日」が指定可能になります。 |
ビジュアルモード | チェックを入れると実際にEAがどのようなタイミングで取引をおこなっているのかを視覚的に確認することが可能になります。 |
最適化 | 過去検証(バックテスト)を行う際はチェックを外しておきます。 |
「スタート」をクリックするとバックテストが開始します。
緑の進捗バーが右端に到達すればバックテスト完了です。
各タブより各種データが閲覧できるようになります。
またレポートタブのレポート画面上で
「右クリック」 ⇒ 「レポートの保存」をクリックすると、
HTM形式のレポートとしてテスト結果の保存がきます。
HTM形式のレポート(ストラテジーテスターレポート)には
様々な項目・数値が表示されています。
以下は各項目の解説となります。
項目 | 解説 |
通貨ペア | 過去検証(バックテスト)を実施した通貨ペア |
期間 | 過去検証(バックテスト)実施期間 |
モデル | 過去検証(バックテスト)の実施方法・モデル |
テストバー数 | 過去検証(バックテスト)で使用した時間足のバー数 |
モデルティック数 | 過去検証(バックテスト)で使用したティック数 |
モデル品質 | 過去検証(バックテスト)の制度
基本90%が必要、1分足による過去検証(バックテスト)では25%が最高 |
不整合チャートエラー | 各時間足の不整合数 基本「0」のデータでの過去検証(バックテスト)が必要 |
初期証拠金 | 過去検証(バックテスト)スタート時の証拠金 |
総損益 | 総利益 – 総損失で算出 |
総利益 | 利益の合計 |
総損失 | 損失の合計 |
プロフィットファクター | 総利益÷総損失で算出 |
期待利益 | 総利益÷総取引数で算出 |
絶対ドローダウン | 初期証拠金から最大の資金の落ち込み額 |
最大ドローダウン | 損益ピーク時からの最大の資金の落ち込み額 |
相対ドローダウン | 損益ピーク時からの最大の資金の落ち込み率 |
総取引数 | トレードの総数 |
ショートポジション勝率(%) | ショートポジションの総数と勝率 |
ロングポジション勝率(%) | ロングポジションの総数と勝率 |
勝率(%) | トータルの勝ち数と勝率 |
負率(%) | トータルの負け数を負率 |
最大勝ちトレード | 勝ちトレードの最大勝ち金額 |
最大負けトレード | 負けトレードの最大負け金額 |
平均勝ちトレード | 勝ちトレードの平均金額 |
平均負けトレード | 負けトレードの平均金額 |
最大連勝(金額) | 連勝の最大回数と利益合計 |
最大連敗(金額) | 連敗の最大回数と損失合計 |
最大化連勝(トレード数) | 最大連勝時の利益合計と回数 |
最大化連敗(トレード数) | 最大連敗時の損失合計と回数 |
平均連勝 | 平均連勝回数 |
平均連敗 | 平均連敗回数 |
ドル円やユーロドルは、一般的にスプレッド=1.5pips~2.0pips です。
なのでバックテストをする時、スプレッド入力欄に「2」と入力してしまいがちです。
しかし、これは初心者の方にありがちなミスなので注意して下さい。
MT4のスプレッドは「ポイント」という表し方をします。
結論から言いますと、下記のような小数点以下3桁/5桁で表されるMT4業者では、
スプレッド=2pipsでバックテストしたければ、
「スプレッド=20」と入力する必要があります。
1ドル=109.882円が、109.885円にあがったら、
「0.3pips 上昇した」と言います。
また、この0.3pipsの「3」は「ポイント」と表現されます。
小数点以下2桁/4桁の証券会社では1pips=1ポイント
小数点以下3桁/5桁の証券会社では0.1pips=1ポイント
普段取引する分には1pips単位で考えれば大丈夫ですが、
自動売買ツールのバックテストという作業を行う時は、
ポイントの入力が必要になってきます。
例えば、スプレッド=2と入力して
以下の右肩上がりのバックテストになったとします。
しかし、小数点以下3桁/5桁の業者では、
スプレッド2pipsでバックテストしたいなら
「スプレッド=20」と入力してバックテストする必要があります。
上記バックテストは0.2pipsでバックテストされている事になりますので、
1トレードあたり1.8pips甘く見積もられている事になります。
例えば上記のバックテストの総取引数=15,711トレードなので、
15,711トレード×1.8pips=28,279.8pipsとなり、
約2万pips有利なバックテストという事になります。
スプレッド0.2pipsの業者があれば良いですが、
現実にそんな業者はありませんので、
0.2pipsで実施された上記バックテストは現実的ではありません
上記バックテストと同じ自動売買ツールを、
正常なスプレッドでバックテストしてみました。
正しいスプレッドでバックテストしたら、
綺麗な右肩下がりになってしまいました。
さっきのバックテストは1トレードあたり1.8pipsも有利に評価されていましたので、
この結果は当然と言えば当然です。
意図的かどうかは別として
「スプレッド=2(つまり0.2pips)」と入力して、
良いバックテストだと見せかけて販売する業者もいます。
スプレッドが甘ければ、成績が良くなるのは当たり前ですが、
実際の相場で使う事を想定していなければ何の意味もありません。
バックテストのスプレッドには特に注意をしましょう。
これはバックテストの画面枠が狭いために起こる現象です。
画面枠の縦が狭すぎて、入力欄が消えてしまっています。
以下のように、オレンジ矢印のあたりをクリックした状態で、
上方向に画面を引っ張ってみて下さい。
バックテスト期間を入力する欄や、ビジュアルモードの選択欄が出てきます。
解説は以上となります。
その他、ご不明な点がございましたら、お気軽にご質問下さい。