FXコラム

MT4で「信頼性の高いバックテスト」を行う正しい方法【実践編】

【解説編】を経て、いざ実践へ

MT4で「信頼性の高いバックテスト」を行う正しい方法【解説編】

「バックテスト」とは   自動売買の世界に片足でも突っ込んでいる人ならば、誰しも一度は「バックテスト」という言葉を耳にしたことがあるはずだ。 バックテストとは、広義には「 ...

続きを見る

【解説編】では、バックテストの大まかな手順と、その注意点について文字通り “解説” したが、今回の【実践編】では、いよいよ具体的かつ詳細な手順の説明に話を移したいと思う。

 

また、【解説編】の中で、「精度の高いヒストリカルデータを入手する」ことの重要性について殊更に強調したが、今回は、データの信頼性に定評のある「Alpari」の提供するMT4とヒストリカルデータを使用することにした。

他のFX会社から提供されているMT4とヒストリカルデータを利用する場合でも、基本的には本稿で紹介する手順に倣ってもらえれば、バックテスト自体は問題なく実施できるはずだ。

 

なお、本稿では、各工程の目的や意味については最低限しか触れないため、必要に応じて【解説編】を併せて参照してほしい

 

 

 

「バックテスト専用MT4」のダウンロード

step
1
Alpari.comのMT4ダウンロードページにアクセスする

Alpari.comの公式サイトにアクセスし、「GETTING STARTED」⇒「Demo account」の順でクリックし、MT4のダウンロードページに遷移する。

 

 

step
2
MT4のダウンロードボタンをクリックする

上の画像と同じように「DOWNLOAD」ボタンをクリックする。

 

 

step
3
デモ口座の開設申請を行う

デモ口座の開設に必要な情報を入力し、上の画像で赤丸で囲った箇所にチェックを入れてから、「CONTINUE」をクリックし、次の画面に進む。

 

なお、携帯の電話番号の欄には、「+81」の後に続くように「最初の0を削った残りの番号」を入力するようにしてほしい。

例)「09012345678」の場合 ⇒ 「+819012345678

 

同様に、必要な情報を入力したら「CONTINUE」をクリックして、最後の登録画面に進む。

 

 

step
4
MT4のインストーラーをダウンロードする

続いて、「SMS(登録した電話番号)」か「Email(登録したメールアドレス)」のどちらかにチェックを入れ、「GET CODE」をクリックして、本人確認用の認証コードを送信する。

「Confrimation code」の項目に受信した認証コードを入力してから、「COMPLETE REGISTRATION」をクリックする。

 

なお、Alpari社からのニュースレターを受信したい場合は、上の画像内で赤丸で囲われた箇所にチェックを入れることを忘れずに。

 

 

step
5
MT4のインストーラーをダウンロードする

認証手続きが無事に終わると、自動的にAlpari.comの会員ページに遷移。

その後、トップページ上の「MetaTrader 4」の項目内にある「Download the Platform」をクリックし、MT4のインストーラーをダウンロードする。

 

 

step
6
ダウンロードしたインストーラーを実行する

ダウンロードしたインストーラーを実行し、以下の画像と注釈を参考にして、MT4のインストール作業を完了させる。

 

「Alpari-Demo」または「Alpari-ECN-Demo」を選択して、「次へ」をクリックする。以降の解説はすべて、後者を選択したものと仮定して話を進める。

 

「新しいデモ口座」にチェックを入れ、「次へ」をクリック。

 

新規に開設したデモ口座のログイン情報が表示されたら、情報を確実に保管してから、「完了」をクリックし、インストール作業を完了させる。

 

 

 

「ヒストリカルデータ」のダウンロード

※「ヒストリカルデータの上書き防止策」について、情報を加筆(2019年3月27日)

step
1
MT4を起動し、開かれているチャートをすべて閉じる

 

 

step
2
「チャート」の表示数に関する設定を変更する

「ツール」⇒「オプション」の順にクリックし、「オプション」ウィンドウを表示させたら、「チャート」タブを選択する。

 

「ヒストリー内の最大バー数」と「チャートの最大バー数」のそれぞれの値に、「999999999……」のように入力上限の限界まで「9」を入力してから、「OK」をクリックする。

 

再び、「オプション」ウィンドウを表示させ、二つの「最大バー数」の値が、どちらも上の画像と同じように「2147483647」という上限値となっていることを確認したら、「OK」をクリックしてウィンドウを閉じる。

無論、最初から両方に「2147483647」と入力しても構わないが、こちらの方法の方が手間がないだろう。

 

次の作業に進む前にMT4を再起動させ、環境設定の変更を反映させる。

 

 

step
3
保存されているヒストリカルデータを消去する

「ファイル」⇒「データフォルダを開く」の順で選択し、MT4のデータフォルダを開く。エクスプローラーが起動し、データフォルダが開かれたことを確認したら、MT4を閉じる

 

データフォルダ内の「history」⇒「Alpari-ECN-Demo」の順でクリックし、フォルダ内に格納されているデータを表示させる。

 

ファイル名に「.hst」という拡張子が含まれているファイルをすべて消去したら、MT4を再び起動する。

 

 

step
4
ヒストリーセンターからヒストリカルデータを取得する

「ツール」⇒「ヒストリーセンター」の順番でクリックし、ヒストリーセンターを開く。

以下、「ユーロ/米ドル(EURUSD)」を例にとって、ヒストリカルデータを取得する手順を解説する。

 

「FX Majors(主要な通貨ペア)」⇒「EURUSD」⇒「1分足(M1)」の順で選択し、「1分足(M1)」をダブルクリックする。

 

上の画像のように右ウィンドウにデータが表示されたら、左下にある「ダウンロード」をクリックして、ヒストリカルデータの取得を開始する。

 

ダウンロードが完了し、右ウィンドウの左上部にある「デー・ベース」の値が増加していることを確認したら、右下の「閉じる」をクリックしてウィンドウを閉じる。

ここまでの作業で、ヒストリカルデータの取得は完了。

 

 

step
5
ヒストリカルデータが上書きされないように設定を変更する

MT4のメニューバーから「ツール」⇒「オプション」の順番で操作し、「オプション」ウィンドウを開いたら、「サーバー」タブを選択。

「プロキシサーバーを有効にする」の項目にチェックを入れてから、「プロキシ...(P)」と書かれたボタンをクリックする。

 

 

新たなウィンドウが表示されたら、上掲の図のように「サーバー」の項目に「適当な文字列」を入力し、「OK」を押す

その後、「オプション」タブの下部にある「OK」をクリックしてウィンドウを閉じたら、MT4を再起動させる。

 

MT4の再起動後、操作画面の右下部に「回線不通!」と表示されていれば、操作は成功

 

「プロキシサーバーを有効にする」操作について

MT4がサーバーと接続された状態のままだと、せっかくダウンロードしたヒストリカルデータが、再起動の度に上書きされてしまい、バックテストの結果にも影響が及ぶ恐れがある。

そこで、サーバーとの接続情報に「適当な文字列」を入力した上で、プロキシサーバーを有効にすることによって、MT4を常に「サーバーと接続が切れた状態」にできるため、上述の「上書き」を未然に防ぐことが可能となる。

ただし、この接続が切れた状態においては、EAに取引を行わせたりすることは不可能となるため、そのMT4は、完全に「バックテスト専用」の環境となる点には注意してほしい。

 

スクリプトを利用して各時間足のデータを生成する

step
1
不要なヒストリカルデータを削除する

ヒストリカルデータの取得を完了したら、再び「history」⇒「Alpari-ECN-Demo」の順でフォルダを開く。今回は、「1分足のヒストリカルデータ」のみを残し、他の時間足のデータを削除する。

なお、先ほどと同じく、エクスプローラーの起動を確認してからMT4を閉じることを忘れずに。

「EURUSD1.hst」以外の「.hst」ファイルをすべて削除する。

 

 

step
2
MT4に「Period Converter ALL」をインストールする

こちらからMQL5にアクセスし、「Period Converter ALL」というMT4用のスクリプトをダウンロードする。

 

MT4を立ち上げ、「ファイル」⇒「データフォルダ」の順で選択し、エクスプローラーの起動を見届けたらすぐにMT4を終了。

その後、「MQL4」⇒「Scripts」の順でクリックし、表示された「Scripts」フォルダ内に、一つ前の工程でダウンロードした「period_converter_ALL.mq4」をドラッグ&ドロップで格納する。

 

再びMT4を起動し、「ナビゲーター」ウィンドウ内の「スクリプト」の項目を開く。

上の画像と同じように、「スクリプト」内に「period_converter_ALL」の項目が追加されていれば、必要なスクリプトのインストールは完了

 

 

step
3
スクリプトを実行して、ヒストリカルデータを生成する

「ファイル」⇒「オフラインチャート」の順にクリックし、「オフライン・チャートリスト」を表示させる。

 

この時点では、1分足のヒストリカルデータ(EURUSD,M1)のみが表示されているはずなので、それを選択してからウィンドウ右上の「開く」をクリックし、オフラインチャートを表示させる。

 

新たにオフラインチャートが表示されたことを確認したら、一つ前の工程で「スクリプト」内にインストールした「period_converter_ALL」を、そのチャート上にドラッグ&ドロップし、スクリプトを実行させる。

なお、スクリプトの実行中にチャート左上部に表示される「Converting to Period (xxxxx), bars to end : xxxxx」ステータス表示が消えたら、スクリプトの実行が完了した合図

 

再び「ファイル」⇒「オフラインチャート」の順でクリックしてリストを開き、上の画像のように他の時間足のヒストリカルデータが生成されていれば成功。

成功を確認したらウィンドウを閉じ、表示させていたオフラインチャートを閉じ、MT4を再起動する。

 

 

「Period Converter ALL」の特性について

「Period Converter ALL」も含まれる「Period Converter」シリーズは、本来はオフラインのチャートに適用するものではなく、「オンラインのチャートに設置して、指定した倍率の上位足をリアルタイムで生成させる」ものとして開発されているため、今回のような使用方法は、本来の目的や用法から見れば、「間違い」だと言える。

その “間違った用法” の悪影響として、「週足(Weekly)」と「月足(Monthly)」の開始日時(差出人)が正しく設定されないという現象が発生してしまう。

そのため、「週足」や「月足」を使用する一部のEAやインジケーターのバックテストを行う場合、本稿で紹介するバックテストの方法では、あまり精確な結果が得られないことに注意してほしい。

 

 

 

バックテストを実施する

step
1
ストラテジーテスターを表示させる

「表示」⇒「ストラテジーテスター」の順に選択し、MT4の操作画面上に「テスター」ウィンドウを表示させる。

 

 

step
2
バックテストを実行する

「テスター」ウィンドウ内の各項目に任意のパラメーターを設定し、右下の「スタート」をクリックすると、バックテストが実行される

それぞれの設定項目に関する概要は、以下の通り。

 

各設定項目の概要

  • エキスパートアドバイザ : 「バックテストで検証するEA」を選択する
  • 通貨ペア :「取引する通貨ペア」を選択する
  • モデル:「バックテストの実行精度」を選択する
  • 期間:「検証に使用する時間足」を選択する
  • スプレッド:「スプレッド幅」を選択する
  • 期間を指定:「バックテストで検証する期間」を任意で指定する
  • エキスパート設定:「バックテストに適用するEAのパラメーター」を設定する

 

「エキスパートアドバイザ」には何を選択しても構わないが、「通貨ペア」については、上記の手順でヒストリカルデータを取得および生成した通貨ペアを選ぶようにしてほしい。

そのほか、「モデル」の項目に関しては、何らかの意図や事情がない限りは、基本的に最も正確な検証結果を得られる「全ティック」を選択することが推奨される

 

また、「期間を指定」にチェックを入れることで、バックテストで検証する期間を任意で設定できるほか、「エキスパート設定」のパラメーターを適切に変更することで、より実運用に近い条件でバックテストを実施することが可能となるだろう。

 

なお、今回は、通貨ペアの項目には、先ほどヒストリカルデータを用意した「EURUSD(ユーロ/米ドル)」を指定して、バックテストを実行する。

 

step
3
バックテストの結果を確認する

上の画像は、MT4に最初からインストールされている「Moving Average」を利用して、「1分足(M1)」に設定した「EURUSD(ユーロ/米ドル)」を、「全ティック」で運用した場合のバックテストの結果。

なお、検証期間については、「2014年1月1日から2016年1月1日まで」の2年間に設定した。

 

バックテスト結果の検証について

バックテストの結果を検証する際に、何をおいても確認してほしいのは、「不整合チャートエラー」と「モデリング品質」の項目だ。

不整合チャートエラーの値は、原則として「0」か、最低でも「0」に限りなく近い数字であることが望ましい。詳しい話は割愛するが、とにかく「この値が大きければ大きいほど、バックテストの信憑性は下がる」と認識していれば問題だろう。

流石に暴論かもしれないが、「不整合チャートエラーの値が0ではないバックテストの結果は、信用するに値しない」くらいに、この項目についてはシビアに考えておいても良いかもしれない。

そして、「モデリング品質」とは、一言で言ってしまえば「バックテストの精度をパーセンテージで表した指標」だ。そのため、当然、不整合チャートエラーの多発したバックテストのモデリング品質は下がることとなる。

ちなみに、1分足の場合は、原則としてモデリング品質の最高値は「25.00%」となり、その他の時間足については「90.00%」が最高値となる。

なお、「Dukascopy」など一部のFX会社では、通常は含まれていない細かなティックデータまでを含むヒストリカルデータを提供している場合があり、そういった “特殊なデータ” を使用した場合、モデリング品質の値は「90.00%」を上回ることもある

 

step
3
バックテストの結果データを保存する

「レポート」タブを選択した状態で「テスター」ウィンドウ上で右クリックして、「レポートの保存」を選択

エクスプローラーが立ち上がるので、任意の保存場所をしていしてから「保存」を実行すれば、バックテスト結果のデータを保存することができる。

 

 

まとめ

【解説編】と【実践編】の二回に渡り、「正しいバックテスト」の実施方法について解説したてきたが、結論として述べたいことは、「バックテストの結果をあまり妄信してはいけない」ということだ。

 

もちろん、EAの素性や挙動を確認したり、より良い運用を実現させる探るために、EAの秘めた様々な可能性を検証したりするための手段として、バックテストの有用性を疑う余地はない。積極的に活用していくべきだろう。

また、その検証作業をより実りあるものとする上で、検証結果の精度や信頼性を高めることも、間違いなく大いに意味のある行為だと言える。

 

ただし、どこまで行こうとも、バックテストは「過去の相場に当て嵌めたらどうなるか」を確認するものでしかなく、未来の成績を保証してくれる “予言書” のような類のものではないことを、どうか忘れないでほしい。

それを忘れて、過度な最適化など、バックテストの “負の側面” にのめり込んでしまうと、実際にリアル口座で運用を開始した時に悲惨な目に遭うことになりかねないだろう。

 

最後の最後で脅しめいたことを言うのも、薬と毒とが紙一重の存在であるように、どんなに有用なツールも正しく使わないと、かえって身を滅ぼす “猛毒” となってしまうからにほかならないのだが、正しい理解と認識の下に用いれば、EAによる自動売買において、バックテストは “特効薬” ともなり得ることだろう。

 

 

ランキングに参加しています。応援よろしくお願いします。

⇒ にほんブログ村 為替ブログへ  ⇒ 

 

-FXコラム
-, ,

© 2024 FXEA.JP-海外製自動売買情報局- Powered by AFFINGER5