EA(Expert Adviser:MT4の自動売買プログラム)の正確なバックテストをするためには、信頼性の高いヒストリカルデータが必要です。
この記事では、バックテストの下準備である、
- バックテスト専用MT4の作成方法
- ヒストリカルデータのダウンロード方法
- MT4へのインポート方法
を解説します。
専門用語も出てきますが、その都度、注意点も踏まえながら分かりやすく解説していくので安心してください。
10分もあれば、バックテストを実施できる環境が整いますよ。
では、さっそく実践していきましょう。
はじめに バックテスト・ヒストリカルデータとは?
バックテストとは、EAのシミュレーションです。
次のようなメリット・デメリットがあります。
バックテストのメリット
過去の為替相場のデータをもとにシミュレーションをして、EAに最適なパラメータ設定を導き出すことができる。
バックテストのデメリット
あくまで過去のシミュレーションなので、未来の損益を保証するものではない。
「過去の為替相場のデータ」のことをヒストリカルデータと呼びます。
データの中身は、通貨ペア・時間足ごとの始値・高値・安値・終値の4本値と日時・出来高などです。
MT4をインストールしたパソコンには、上記のようなHST形式のファイルで通貨ペアごと・時間足ごとに保存されています。
このヒストリカルデータは、一般的に他のFX業者から入手してバックテストに利用します。
ただし、全てのFX業者がヒストリカルデータを提供しているわけではなく、一部のFX業者からしかダウンロードできません。
FX業者によってデータの中身(品質・内容・信頼性)が異なるため、精度の高いバックテストをするためには、なるべく信頼性の高いヒストリカルデータを入手することが大切です。
バックテスト下準備|必要なもの・作業手順
バックテストに必要なもの
バックテストには、最低限以下のものが必要です。
すべて無料で準備できます。
バックテスト用の有料ツールもありますが、この記事では扱いません。
用意するもの
- 軽量化したバックテスト専用のMT4(Alpariを使用)
- 信頼性の高いヒストリカルデータ(Alpariを使用)
- データ変換用スクリプト(Period Converter ALLを使用)
- バックテストをするEA(任意)
バックテスト専用のMT4を用意する理由は、MT4の軽量化とオフライン化を実施するためです。
長期間のバックテストは処理に時間がかかるので、なるべくMT4を軽量化することをオススメします。
また、設定を多少いじるので、トレードとバックテストとでその都度設定を変えていては面倒です。
もちろんトレードで使っているMT4でそのままバックテストしてもOKですが、バックテスト専用MT4を用意した方が手っ取り早いと思います。
また、MT4とヒストリカルデータはなるべく同じFX業者のものを利用したほうが正確な検証が可能です。
この記事では、最も信頼性の高いAlpari(アルパリ)のヒストリカルデータとMT4をダウンロードします。
また、アカウントはAlpariデモ口座を利用するので、リアル口座開設の際の本人確認書類の提出は必要ありません。
一般的なヒストリカルデータ作成方法では、データ生成に「Period Converter」というスクリプトを使用しますが、時間足ごとに作業しなくてはいけないので少々面倒です。(最新のMT4には最初からインストール済み)
この記事では、一度に複数の時間足のヒストリカルデータを作成できる、無料の「Period Converter ALL」というスクリプトを使います。
最後に、バックテストするEAの「ex4形式」または「mq4形式」のファイルも用意してください。
当サイトで無料プレゼントをしている、「トラリピEA」を利用してもOKです。
デモ口座を開設する
step
1Alpari公式サイトでアカウントを作成する
まず、Alpari公式サイトにアクセスします。
MT4上部メニューからGETTING STARTED>Demo account
と進み、OPEN DEMO ACCOUNT
をクリックしてください。
マイページを作成するため、ユーザー情報を入力します。
氏名(英字)・メールアドレス・電話番号
を入力、チェックボックス
にレ点を入れて、CONTINUE
をクリックしてください。
次に、国名・市区町村・国名(英字)
を入力し、再度CONTINUE
をクリックしてください。
ユーザー認証を行います。
SMS
またはEmail
を選択し、GET CODE
をクリックしてください。
携帯電話のショートメールまたはEメールに、認証コードがすぐに届きます。
Confirmation code
の箇所に認証コードを入力し、チェックボックス
にレ点を入れ、COMPLETE REGISTRATION
をクリックすればマイページの作成完了です。
メールでマイページのログインIDとパスワードが届くので、大切に保管してください。
すぐに、パスワード変更を勧めるメッセージが表示されるので、こちらは任意で変更してください。(スキップも可能)
step
2デモ口座を開設する
バックテスト専用にデモ口座を開設します。
設定は任意ですが、ここではAccount Type(口座タイプ)
はdemo standard mt4、・Account Denomination(口座通貨)
はUSD、Starting Balance(口座資金)
は50,000ドルと設定しました。
「Create an MQL5 community account?」チェックボックス
はチェックなしで大丈夫です。
Open Account
をクリックすれば、デモ口座の開設完了です。
メールでデモ口座のログインID・パスワードも届くので、大切に保管してください。
MT4をダウンロード・準備する
step
1AlpariのMT4をダウンロード・インストールする
AlpariからMT4をダウンロードします。
アカウント情報の箇所に、ダウンロードリンク
が表示されるのでクリックしてください。
ダウンロードしたファイルを開き、MT4をインストールしてください。
MT4が起動すると、ログイン画面が表示されるので、メールに記載されたユーザーID・パスワード・サーバー名を入力してログインすればOKです。
step
2最大バー数を上限に設定する
バックテスト専用に、MT4を軽量化・カスタマイズします。
すべてのチャートを閉じてから、MT4上部メニューにあるツール>オプション
を選択してください。
チャートタブにあるヒストリー内の最大バー数
とチャートの最大バー数
を、デフォルト値から「99999999999」にそれぞれ変更してOKをクリックしてください。
もう一度、ツール>オプション
のチャートタブ開いて、値が「2147483647」に変更されていることを確認してください。これが上限値です。
ポイント
「ヒストリー内の最大バー」とは、MT4に保存するバーの最大本数です。
「チャートの最大バー」とは、チャートを開いた時に読み込むバーの最大表示本数です。
どちらも本数が多いほど正確なバックテストが可能ですが、その分だけパソコンのハードディスクやメモリを圧迫し、MT4のパフォーマンスが低下します。
トレード専用MT4では、チャートの最大バー数は2,000〜3,000本くらいがちょうど良いでしょう。
step
3ヒストリカルデータの上書き防止対策をする
MT4がオンラインのままだと、日々ヒストリカルデータが更新され続けてしまうので、オフラインに切り替えます。
ヒストリカルデータ は、ヒストリー内の最大バー数を超えると、古いものから順番に削除しながら新しいデータを上書きしていく仕組みです。
常に同じ期間・同じ内容のヒストリカルデータを利用しなければ、いろいろなEAの検証結果を正しく比較できないので、オフラインにしておく必要があります。
MT4上部メニューにあるツール>オプション
を選択してください。
プロキシサーバーを有効にする
にチェックを入れ、プロキシ
をクリックします。
また、ニュースを有効にする
のチェックを外しておくとMT4の軽量化ができます。
サーバーの箇所に、適当な文字列を入力しOK
をクリックします。
これでヒストリカルデータの上書き対策完了です。
step
4既存のヒストリカルデータを消去する
MT4に保存されているヒストリカルデータを初期化してスッキリさせます。
MT4を再起動して、上部メニューにあるツール>オプション
を選択してください。
history>Alpari-(口座名)
の順に進みます。
このフォルダに入っているHSTファイルをすべて削除してください。
これでヒストリカルデータが初期化されました。
ヒストリカルデータ作成Scriptをダウンロードする
step
1Period Converter ALLをダウンロードする
MQL5.community コードベース から「Period Converter ALL.mq4」
をダウンロードしてください。
step
2EAをScriptフォルダに移動する
MT4上部メニューからファイル>データフォルダ
を開くを選択します。
MQL4>Script
に、「Period Converter ALL.mq4」
を移動させ、MT4を再起動してください。
また、MQL4>Experts
には、テストをしたいEA(ex4形式またはmq4形式のファイル)を移動させて同じく再起動してください。
ヒストリカルデータをダウンロード・作成する
step
11分足のヒストリカルデータのみダウンロードする
MT4上部メニューにあるツール>ヒストリーセンター
を選択してください。
バックテストをする通貨ペアの1分足(M1)
を選択し、ダウンロード
をクリックしてください。
AlpariのMT4の場合、Alpariのヒストリーデータがダウンロードされます。
他社のMT4の場合、ダウンロード
を押すとMetaQuotes社からヒストリーデータをダウンロードする仕様になっていることが多いので、インポート
をクリックしHSTファイルやCSVファイルを直接読み込みます。
ダウンロードに成功すれば、上部のデー・ベース
の値が増えます。
step
2不要なヒストリカルデータを削除する
不要なデータが作成されているので削除します。
MT4上部メニューにあるファイル>データフォルダ
を開くをクリックしてください。
history>Alpari-(口座名)
の順に進みます。
このフォルダに入っている、通貨ペア名1.hst
以外のHSTファイルをすべて削除してください。
step
3その他の時間足のヒストリカルデータを作成する
その他の時間足のヒストリーデータを作成します。
MT4上部メニューにあるファイル>オフラインチャートを開く
をクリックしてください。
通貨ペア名,M1
を選択し、開く
をクリックしてください。
ナビゲータ>スクリプト
にあるPeriod Converter ALL
を、チャートにドラッグ&ドロップします。
その他の時間足のヒストリーデータが自動的に作成されます。
以上でバックテストの下準備は完了です。
バックテスト・最適化の具体的な方法については、以下の記事で詳しく解説しているので参考にしてください。
バックテスト・ヒストリカルデータについて よくある質問
どこの業者のヒストリカルデータの信憑性が高いの?
この記事では、一番オススメするAlpariのヒストリカルデータを使って手順を解説してきました。
しかし、ヒストリカルデータは複数のFX業者から入手して、それぞれ同じEAのバックテストを実施することをオススメします。
異なるヒストリカルデータのバックテスト結果の違いをお互い見比べることで、検証結果をさらに検証することができるからです。
主な入手方法は以下の4つ
ヒストリカルデータの主な入手先
FXTFやFXDDのヒストリカルデータがよく利用されています。
ただ、FXDDは2016年8月頃のデータが抜けているのであまりオススメしません。
また、MT4開発会社MetaQuotes社からも、MT4から直接ヒストリカルデータをダウンロードできますが、巷では精度があまり良くないと言われています。
別のFX業者のヒストリカルデータでバックテストしてもいいの?
信頼性の高い豊富なデータであれば、別の業者のヒストリカルデータでバックテストしても問題ありません。
業者ごとに配信レートは違うので心配になるとは思いますが、重要なのは「抜けのない長期間のデータ」「改ざんされていない信憑性の高いデータ」であることです。
2つの業者間で「陽線・陰線が真逆」あるいは「チャートの形状が極端に違っている」といったヒストリカルデータではダメです。
また、一定期間のデータがごっそり欠けていることもあるので注意が必要です。
そんなヒストリカルデータを使ってバックテストをしても、正確な分析はできませんね。
なぜヒストリカルデータを公表しないFX業者があるの?
可能性としては、「レート操作をしている」「後日データを改ざんしている」「システムエラー・サーバーダウンなど異常なレートがたくさん残っている」といった理由から公表できない、あるいは公表しても履歴を削除・改ざんしている可能性が考えられます。
しかし、本来は「何も他社のデータをインポートしなくても、自社の取引サーバーのデータを使ってバックテストをすれば良い」ということではないでしょうか?
しかし、これまで多くのトレーダーが、「その取引サーバーから得られるデータの信憑性が低い」という経験をしてきました。
そのため、今では「なるべく信頼性の高いヒストリカルデータを他社から入手してバックテストをする」という手法が一般化しているんですね。
コメント
コメント一覧 (1件)
このサイトの手順でヒストリーセンターから1分足のヒストリカルデータをダウンロードしても、
`通貨ペア`USDJPY‘には新しいデータはありません。
全てのタイムフレームを再計算しますか?‘と出てしまい、はいかいいえを問われたのではいを押してみてもデータベースには0レコードと記されたままでヒストリカルデータをダウンロードできません。
何が原因なのかもし知っておられましたらお力を少しして頂けないでしょうか?
今現在(2021.2.14)もアルパリのMT4のヒストリーセンターからヒストリカルデータのダウンロードは可能なのでしょうか?
いきなりで申し訳ございませんが、ご返信いただければ幸いです。