初心者でも勝てる?FX自動売買の記録

MT4を使ったEAのバックテスト手順

今回はMT4を使った無料で出来るEAのバックテスト手順を解説します!( ・`ω・´)

 

バックテストとは

バックテストとは、過去のデータ(ヒストリカルデータ)を使用してEAをその期間に動かした場合どうなるかを検証をすることです。

過去のデータを使って検証するだけなので、今後も同じように推移する保障など無いわけですが、そのEAの優位性や特徴を把握する意味でバックテストは参考になります。
設定箇所が多めのEAでパラメーターを変更して自分だけの設定を探すのも面白いかと思います!

では早速バックテストに必要なヒストリカルデータの取得から始めていきます!

 
 

ヒストリカルデータの取得

バックテストを行うにはヒストリカルデータという過去の価格情報が必要になります。
ヒストリカルデータを提供しているところはFXTF、FXDD、アルパリ等いろいろあるのですが、ここでは高品質なヒストリカルデータを提供していると評判のデューカスコピーのヒストリカルデータを使用していきます。

 

デモ口座の開設

ヒストリカルデータをダウンロードするためにデューカスコピーでデモ口座を開設します。

デューカスコピー公式サイトへ行きます!

 

デモ口座開設」という部分をクリックします。

 

利用規約等を確認してチェックボックスをチェックします。
必要事項の入力を終えたら「デモ口座を開設する」をクリックします。

 

登録したメールアドレス宛に「口座番号」「ログインID」「パスワード」が送られてきます。

 
 

JForexをインストールする

デモ口座の開設が終わりましたので、ヒストリカルデータを取得するためにデューカスコピーの取引プラットフォームであるJForexをダウンロードします。

JForexダウンロードページへ行きます!

 

インストール版とダウンロード版の2種類がありますが、ここではインストール版で解説します。

Win 32-bit / 64-bit
Mac OS X
Linux 32-bit / 64-bit

上記OSからご自身の環境にあったものをクリックします。
僕の場合はWindows 10 64bitのPCを使っていますので「Win 64-bit」を選択。

 

ダウンロードされたインストーラーをダブルクリックして、JForexをインストールします。
手順に従ってインストールして「JForex Platformを実行する」のチェックを入れたまま「終了」をクリックすると、そのままJForexが立ち上がります。

 
 

JForexにログインして、ヒストリカルデータを取得する

先ほど「JForex Platformを実行する」のチェックを入れたまま終了した方は、JForexのログイン画面が立ち上がっているかと思います。
立ち上がっていない方はスタートメニューもしくはデスクトップに出来たショートカットからJForexを立ち上げます。

 

デモ口座を作成した時のメールに記載してある「ログインID」「パスワード」を入力して「ログイン」をクリック

 

JForexメニューの「表示」→「ヒストリカルデータ取得」をクリック

 

ヒストリカルデータ取得のウィンドウが開きます。

今回は2009年4月1日00:00から2019年3月31日23:59までの10年間分のUSD/JPYデータを取得します。

通貨ペア:「USD/JPY」をチェックします

通貨ペアの右側の方にある「ビッド」のみチェックを入れます
アスク」のチェックは外します。

期間:「1分」を選択します

時間範囲」→「カスタム」を選択して取得する期間を設定します

 

開始日時:「00:00 01.04.2009」を入力
終了日時:「23:59 31.03.2019」を入力

入力完了後に「OK」をクリックします

次にヒストリカルデータ取得のウィンドウで「設定」をクリックします

 

形式:「HST」に変更

データ出力先を決めて「OK」をクリック

最後にヒストリカルデータ取得のウィンドウで「ダウンロード」をクリックします。
これで指定した出力先にヒストリカルデータがダウンロードされます!

 
 

ヒストリカルデータのGMTを変更する

デューカスコピーからダウンロードしたヒストリカルデータはGMT+0(UTC+0)になっています。
バックテストに使用するXMはGMT+2(夏時間+3)を採用しているので、ヒストリカルデータをGMT+2(夏時間+3)に変換します。

nekonoteさんという方が便利なVBスクリプトを公開してくれているので、それを利用させていただきました。
http://nya0nekonote.blog.fc2.com/blog-entry-306.html

上記アドレスのページから「UTC+0のhstファイルをUTC+2夏時間有に変換.vbs」部分を右クリックして「名前を付けてリンク先を保存」を選択します。
ファイル名の部分に「UTC+0のhstファイルをUTC+2夏時間有に変換.vbs」とコピペして「保存」します。

 

ダウンロードしたVBスクリプトのアイコンに、デューカスコピーから入手したヒストリカルデータを「ドラッグ&ドロップ」すると変換が始まります。

 

VBスクリプトと同じ場所に「work」というフォルダが自動的に作成されますが、変換中は進行状況などを教えてくれませんのでしばらく待ちます。

 

しばらくすると「出力しました。workフォルダを確認して下さい」と表示されます。

 

workフォルダを確認すると、変換する前のデータと同じファイル名で、変換されたヒストリカルデータが作成されています。
この変換されたヒストリカルデータをバックテストに使用します。

 
 

MT4でバックテストの準備

バックテストに使うMT4は普段使っているMT4とは別で管理したかったので、XMでデモ口座の開設とXMのMT4をダウンロードします。

 
XMデモ口座の開設はこちらから

XM MT4のダウンロードはこちらから

 
口座の開設方法とMT4のインストール方法はここでは割愛します。
口座の開設やMT4のインストール方法等に関しては別で記事にしてありますのでこちらからどうぞ↓

 
では、インストールしたMT4の準備をしていきます!
MT4を立ち上げて、表示されているチャートは閉じます。

 
 

XMのヒストリカルデータを削除する

まず元々MT4をインストールした時に入っているヒストリカルデータを削除します。

メニュー「ファイル」→「データフォルダを開く」を選びます。

 

開いたフォルダの「history」を開きます

 

XMTrading-Demo 3」フォルダを開きます。
※「XMTrading-Demo 3」は今回使用しているデモ口座のサーバーなので、他のサーバーの場合はそのサーバーのフォルダを開いてください。

 

XMTrading-Demo 3」フォルダの「.hst」ファイルをすべて削除します。

 
 

ヒストリー内の最大バー数とチャートの最大バー数を変更する

メニュー「ツール」→「オプション」を選びます。

 

チャート」タブを表示します。
ヒストリー内の最大バー数」と「チャートの最大バー数」の部分に「9」を入れられるだけ入れて「OK」を押します。

 

再度、メニュー「ツール」→「オプション」→「チャート」タブを表示します。
ヒストリー内の最大バー数」と「チャートの最大バー数」の部分が「2147483647」になっていれば「OK」を押します。

 
 

ヒストリカルデータをMT4にインポートします

メニュー「ツール」→「ヒストリーセンター」を選びます。

 

ヒストリーセンター」の対象の通貨ペア(今回はUSD/JPY)をダブルクリックします。
USD/JPYの「1分足(M1)」をダブルクリックして、「インポート」をクリックします。
※デー・ベースの部分にレコードが残っている場合はレコードをすべて削除します。

 

インポート」の「参照部分」をクリックします。

 

ファイルの選択画面で右下のファイルタイプの部分を「MetaQuotes files(*.hst)」に変更します。
デューカスコピーの変換したヒストリカルデータを選択して「開く」をクリックします。

 

OK」をクリックして読み込みが完了します。
ヒストリーセンター」の「閉じる」をクリックして、MT4を一度終了して立ち上げなおします
※ここでMT4を立ち上げなおさないと、インポートしたヒストリカルデータがオフラインチャートに表示されません。

 
 

各時間足のオフラインチャートを作成する

インポートした1分足のヒストリカルデータをもとに他の時間足のヒストリカルデータを作成していきます。
period converter ALL」というスクリプトを利用しますので、あらかじめダウンロードしてMT4に入れておきます。

「period converter ALL」ダウンロード

 

ダウンロード先のページの「period_converter_ALL.mq4」を右クリックして「名前を付けてリンク先を保存」をします。
保存先はご自身で分かるところでひとまずは大丈夫です。

 

MT4に戻ってメニュー「ファイル」→「データフォルダを開く」を選びます。

 

開いたフォルダの「MQL4」を開きます。

 

開いたフォルダの「Scripts」を開きます

 

開いたフォルダに先ほどダウンロードした「period_converter_ALL.mq4」をコピーします

 

MT4に戻り「ナビゲーター」部分の「スクリプト」部分を右クリックして「更新」をクリックします
これで、MT4に「period_converter_ALL.mq4」が読み込まれました。

 

メニュー「ファイル」→「オフラインチャート」をクリックします。

 

先ほど読み込んだヒストリカルデータを選択して「開く」をクリックします。

 

オフラインのチャートが表示されますので、「ナビゲーター」→「スクリプト」→「period_converter_ALL」をチャートにドラッグ&ドロップします。

 

チャート上に「Converting to Period…」と表示されるので、終了するまで待ちます。

 

メニュー「ファイル」→「オフラインチャート」をクリックして各時間足が作成されていれば完了です!

 
 

バックテスト開始

MT4のストラテジーテスターを開きます。

上部アイコンが並ぶ赤い枠の部分をクリック。
もしくは、メニュー「表示」→「ストラテジーテスター」を選んで、ストラテジーテスターを表示させます。

 

 

(1) 「エキスパートアドバイザー」と「インディケータ」が選択できます
(2) バックテストするEAを選択します
(3)通貨ペア EAの通貨ペアを選択します
(4)モデル 精度を求める場合は「全ティック」を選択します
他にも「コントロールポイント」「始値のみ」が選択できますが、「全ティック」が一番精度が高いです
精度は落ちますが他のモデルの方がテスト時間は短くて済みます
(5)期間を指定 バックテストをする期間を指定します
(6)ビジュアルモード EAの動作をチャート上で視覚的に確認することが出来ます
(7)期間 EAの時間足を選択します
(8)スプレッド バックテストするスプレッドを入力します
(9)最適化 パラメーターを変更して各パラメーターごとの検証をすることが出来ます
(10)エキスパート設定 初期証拠金・通貨・検証するパラメーターの変更などが出来ます

 
今回は試しにデフォルトLonoのバックテストを2018年4月1日から2019年3月31日までの1年間行うので、各項目をLonoに合うように設定していきます。

 
(1)「エキスパートアドバイザー」を選択します

(2)バックテストするEAを選択します
Angel_Heart_Lono_05B.ex4

(3)通貨ペアを選択します。
USDJPY,US Dollar vs Japanise Yen

(4)モデルを選択します
全ティック

(5)バックテストの期間を設定します
期間を指定にチェックを入れて、開始日「2018.04.01」終了日「2019.03.31」と入力します。

(6)ビジュアルモード
今回はチャート上での確認は必要ないのでチェックを外します

(7)期間を選択します
Lonoの時間足は15分足なので「M15」を選択します。

(8)スプレッドを入力します。
テストしたいスプレッドを選択します。もしくは数値を直接入力します。
今回は少し広めのスプレッド「15(1.5pips)」でテストするため「15」を入力します。
「10」は1pips、「3」は0.3pipsになります。

(9)最適化
チェックを外します
最適化の方法は後ほど簡単に解説します。

(10)エキスパート設定を行います。

テスト設定」タブの初期証拠金の部分は今回10万円でスタートしてみますので、「100000」と入力
通貨のプルダウン部分に日本円がありませんので直接半角英数で「JPY」と入力します。

 

パラメーターの入力」タブでLonoのパラメーターが表示されますので、「Lots」や「StopLoss」等のパラメーターを変更してバックテストできます。
今回はデフォルトでバックテストしますので変更はしません。

設定出来たら「スタート」をクリックしてバックテスト開始です!

 
 

バックテストのレポートを保存

レポートタブを開いたらレポートの詳細が書かれている部分で右クリックして「レポートの保存」をします。

 

 
 

最適化する

試しに最適化もしてみます。
今回はLonoのバックテストを2019年1月1日から2019年3月31日までの3か月間でWave_Levelの値を変更してみます。

最適化のチェックボックスをチェックします。

 

エキスパート設定」→「パラメーターの入力」タブを開きます。
検証するパラメーターのチェックボックスをチェックします

スタート:検証する最初の値
ステップ:スタートの値にステップ値ごとに加算していく
ストップ:検証を終了する値

今回はWave_Levelを変更した場合を検証するので、以下数値を設定
スタート:5
ステップ:-1
ストップ:0

この設定でWave_Levelが「5」「4」「3」「2」「1」「0」の6種類の検証が出来ます。
※検証するパラメーターの数を増やすと検証に膨大な時間がかかります。

エキスパート設定」を閉じて、「スタート」を押して最適化を実行します!

 

最適化が終了したら、「最適化結果」「最適化グラフ」の部分から結果が確認できます。
バックテスト同様に「最適化結果」の部分で右クリックして「レポートの保存」も出来ます。

最適化結果」を確認すると、Wave_Level=3の設定が一番PFが高かったようです。
その行をダブルクリックするとそのパラメーターをエキスパート設定に反映させることも出来ます。

 
以上でバックテストの解説終了です!
お疲れ様でした。

 

くらげ
バックテストお疲れ様でした!ヽ( ´∇`)ノ

 
 

毎トレードキャッシュバックがもらえる詳しい記事はこちらから↓

 

海外FX自動売買の始め方についての詳しい記事はこちらから↓

海外FXキャッシュバック口座開設ならTariTali(タリタリ)海外FXするならTariTali! やっておかないと損です!