読者です 読者をやめる 読者になる 読者になる

マネー報道 MoneyReport

マネーにまつわる報道を取り上げ、自分の切り口で切り取り、噛み砕いてお伝えします。

初めてのヒストリーデータ取得選び。MT4の1分足から全ての足へ!

FXの基礎知識 FXトレードスタイル 特集 投資
スポンサーリンク
あとで読む

MT4バックテスト

前回記事でMT4のEAのバックテストを初めて行いました!
小さいポジションだと僅かな利益の感じだったので、大きいポジションを取る様に設定してバックテストを行ってみました!

ロットを10ロット、100万通貨単位という無茶苦茶なハイリスクトレードにします(^o^;
海外口座なのでレバレッジ400倍までOKなので、こんな無茶ができます!
結果は!?
f:id:MoneyReport:20160606160001j:plain
24,548ドル超え!
利率にして半年で150%増を達成しました!!!


春はあけぼの、夏はバックテスト。MT4 EAの憂鬱。 - マネー報道 MoneyReport

「おぉ!このEAスゴイ!」

なーんて喜んでいたのですが、EA開発者のid:emijaさんから思いっきり突っ込みが入りました(^o^;

id:emijaさん
憂鬱要素がどこにあったのかわからんかった。モデリング品質低いんで、正確なデータ用意すると良いです。僕はFXDDの1分足とAxioryの1分足から生成してます。参考サイト:http://efxcursion.com/812.html

え!?
私のバックテスト結果はモデリング品質が低いんですか(>_<)
正確なデータの用意が必要とのこと(T_T)

確かにバックテストに使ったデータは「ダウンロードしますか?」で聞かれた1時間足のデータだけです(^^;
1時間足データなんかのデータではダメなんですね~(-_-;

教えて頂いたサイトは下記。

MT4でヒストリーデータを取得する方法MT4でヒストリーデータを取得する方法 

MT4でヒストリーデータを取得するには単純に行うだけではダメな様で下記の様な手順で行う必要があるようです。

【MT4でEAのバックテストをするために必要な、ヒストリーデータを取得する方法】
◆ バックテスト用とトレード用、別々のMT4をインストールしよう。
◆ 自動生成されたヒストリーデータを削除しよう。
◆ バックテスト期間を最大化しよう。
◆ 長期の1分足ヒストリーデータを取得しよう。
  信頼性は(使用FX業者)>(FXDD社)>(MetaQuotes社)
◆ ヒストリーデータの1分足データから他時間足データを作成しよう。

ではこちらのサイトの手順に沿ってMT4でバックテストを行うためのヒストリーデータ取得を行ってみましょう(^-^)/

自動生成ヒストリーデータの削除

まずはこれまでに作られたヒストリーデータの削除が必要な様です。
MT4でチャートを動作させていると、自動でヒストリーデータをローカルに保存してくれているようです。
このヒストリーデータを削除します。

まずはメニュー「ファイル」→「データフォルダを開く」をクリックし「history」→「(自分の口座フォルダ)」を開きます。
f:id:MoneyReport:20160607122900j:plain
私のフォルダはAXIORYのデータフォルダなので「AxioryAsia-01Demo」の中になります。

この中の拡張子「*.hst」がヒストリーデータのファイルになります。
「AUDJPY_ecn60.hst」などのファイルが削除対象です。

拡張子順にソートし直し、拡張子が.hstのファイルを全て削除します。
f:id:MoneyReport:20160607123537j:plain

バックテスト期間最大化

続いて、ヒストリーデータを多数反映できる様にするために、メニュー「ツール」→「オプション」を選んで、オプション画面を開きます。
f:id:MoneyReport:20160607123453j:plain
「チャート」タブの「ヒストリー内の最大バー数」と「チャートの最大バー数」に9を10個入力して「OK」ボタンを押します。

これでバックテスト期間を最大化して取りこむ事が出来る様になります。

弊害は、データ量が多くなるので動作が重くなる様です(-_-;

ヒストリーデータの取得がうまくいかず・・・

参考にさせてもらったサイトによると下記の手順でヒストリーデータの取得を行えば良いそうです。

  1. ヒストリーデータの取得(使用FX業者)
  2. ヒストリーデータの取得(MetaQuotes社)
  3. ヒストリーデータの取得(FXDD社)

一応私もその手順に沿って行ったのですが、使用FX業者の取得データとFXDD社の取得データの間に未取得の期間があるのでうまくいきませんでした(T_T)
f:id:MoneyReport:20160607124406j:plain
下記の様な範囲になっていて、「2016.04.08 23:46~2016.05.30 10:14」の間が空いちゃいます(>_<)
FXDD社 :2005.01.10 02:31~2016.04.08 23:45
AXIORY社:2016.05.30 10:15~2016.06.07 06:46

直近の4/8~5/30の期間のデータがないというのは致命的なので、このやり方ではダメな様です(T_T)

私のやったヒストリーデータの取得手順

止むを得ないので、一番データ期間が長いMetaQuotes社のデータからヒストリーデータを取得しようと思います。

【私のヒストリーデータの取得順】

  1. ヒストリーデータの取得(MetaQuotes社)
  2. ヒストリーデータの取得(FXDD社)
  3. ヒストリーデータの取得(使用FX業者)

細かく作業内容を見てみましょう。

1.ヒストリーデータの取得(MetaQuotes社)

テストデータの取得でMetaQuotes社データを取ろうとしたらAXIORYのデモ口座チャートでは取得出来なかったので、MT4にデフォルトで入っていた「AX_EURUSD」のEURUSDの1分足にMetaQuotes社のデータを入れ込みます。

メニュー「ツール」→「ヒストリーセンター」を選び、通貨ペアをダブルクリックしながら開いていきます。
そして左下の「ダウンロード」を選ぶとダウンロード・アラートが表示されます。
f:id:MoneyReport:20160607125604j:plain
「MetaQuotes社のデータで上書きされるけど、OK?」

という内容なので「OK」ボタンをクリックします。

ダウンロードが開始され、下部の緑色のバーが右端まで行くまで待ちます。
f:id:MoneyReport:20160607125712j:plain

データのダウンロード完了後に、ヒストリーデータを見ていくと、途中からおかしくなっています(>_<)
f:id:MoneyReport:20160607125938j:plain
1998年以前のデータが1分足ではなくて、1日1件しかデータがない状態です。

このままテストを行うとおかしくなるので、「1998.12.15 02:00」以前のデータを全て削除します。
「1998.12.15 02:00」のデータを選んで「Shift」キーを押したままで、後は一番下までマウスでスクロールさせて範囲選択した状態にして下部「削除」ボタンをクリックします。
こうする事でMetaQuotes社の1998年以前のデータを削除する事が出来ました!

で、ここで一度MT4を閉じて再起動します。
再起動しないとデータがうまく反映されないようです。

2.ヒストリーデータの取得(FXDD社)

次いでFXDD社のヒストリーデータを取り込みます。

下記リンクを開き、自分の取り込みたい通貨ペアをクリックしてダウンロードします。

: MT4ティックデータ

私はEURUSD(ユーロ/米ドル)をトレード対象にする予定なので、EURUSDをダウンロードしました。
「EURUSD.zip」ファイルで44MBほどあります。
f:id:MoneyReport:20160607130426j:plain

zip圧縮されているので解凍すると「EURUSD.hst」というヒストリーデータファイルが入っています。177MB程度あります。
f:id:MoneyReport:20160607130607j:plain

ヒストリーデータ画面の下部「インポート」ボタンを押します。
f:id:MoneyReport:20160607130806j:plain

するとインポート画面が表示されるので右上の「参照」ボタンを押して先ほどの「EURUSD.hst」を選びます。
f:id:MoneyReport:20160607130826j:plain
少し待つと、インポート対象データが表示されるので「OK」ボタンを押すとデータを取り込んでくれます。
これでFXDD社のデータを取り込めました(^-^)v

ここでもデータ反映のためにMT4を再起動!

3.ヒストリーデータの取得(使用FX業者)

使用FX業者(私だとAXIORY)の直近ヒストリーデータを取り込むためには、該当チャートを表示して、足を揃えます。
私だと1分足にしたいので「M1」を選んだ状態にします。
その状態でチャート上で右クリックし「更新」をクリックします。
f:id:MoneyReport:20160607131145j:plain

これで最近のデータを取り込んでくれるようです。

またもここでMT4を再起動!

ここまででようやく、ヒストリーデータの1分足版が準備出来ました(^-^)v

1分足から各足データを作る

ヒストリーデータの1分足が準備出来たら、この1分足データを元に15分足や1時間足、日足に週足まで一気にデータを作ってくれるスクリプトが公開されているのでダウンロードします。

下記リンクを開きます。

period_converter_ALL.mq4

赤丸で囲った「period_converter_ALL.mq4」をクリックしてスクリプトをダウンロードします。
f:id:MoneyReport:20160607131704j:plain

ファイルダウンロードのダイアログ(FireFoxの場合)で保存します。
f:id:MoneyReport:20160607131738j:plain
拡張子「*.mq4」はMT4で動くスクリプトファイルになります。

メニュー「ファイル」→「データフォルダを開く」でエクスプローラーが開き、フォルダを「MQL4」→「Scripts」に移動します。
そしてこの「Scripts」フォルダ内に「period_converter_ALL.mq4」ファイルをコピペします。
f:id:MoneyReport:20160607131834j:plain

「ナビゲーター」→「スクリプト」→右クリック「更新」をクリック!
f:id:MoneyReport:20160607132027j:plain

すると「スクリプト」内に「period_converter_ALL」が表示されればOKです。
f:id:MoneyReport:20160607132113j:plain

メニュー「ファイル」→「オフラインチャート」を選択します。
f:id:MoneyReport:20160607132147j:plain

オフラインチャート画面が表示されるので1分足のチャートを選択します。
f:id:MoneyReport:20160607132230j:plain
私の場合は「EURUSD,M1」を選んで「開く」ボタンを押します。

するとオフラインチャート(offline)が開かれます。
f:id:MoneyReport:20160607132435j:plain
先ほど反映した「ナビゲーター」→「スクリプト」→「period_converter_ALL」の上で右クリックします。

「チャートで実行」をクリックします。
f:id:MoneyReport:20160607132527j:plain

するとスクリプトが実行され、offlineチャートの左上の数字がドンドン増えていきます。下記赤丸部分です。
f:id:MoneyReport:20160607132551j:plain

「ターミナル」→「エキスパート」タブを表示するとScriptが正しく動いた事が表示されます。
f:id:MoneyReport:20160607132641j:plain

オフラインチャート画面に戻ると1分足データが他の足データに反映されています!
f:id:MoneyReport:20160607132750j:plain
差出人と終了の期間(?)がM1の1分足基準で表示されていればOKです(^-^)v

新しいヒストリーデータでバックテスト

今回作成したヒストリーデータを使えば、前回実行したバックテストよりも、より実際に近いテスト結果が得られるのではないかと思います。
モデリング品質が多少なりとも高くなると良いのですが(^-^)v

メニュー「ツール」→「ヒストリーセンター」を選び、実際にEAを動かす予定の足データをテスト出来る様にしましょう。
f:id:MoneyReport:20160607133358j:plain
EURUSDの「1時間足(H1)」をダブルクリックして有効にします。

メニュー「表示」→「ストラテジーテスター」を選択しテスターを下部に表示します。
そして「通貨ペア」を今回ヒストリーデータを取り込んだ通貨ペアを選びます。
f:id:MoneyReport:20160607133615j:plain
私の場合だと「EURUSD, Euro vs US Dollar」を選びます。
そしていざバックテストを「スタート」ボタンクリック!

前回よりもかなり長い時間を掛けてテストしてくれています(^^;

・・・(テスト実行中)・・・

ようやく終わりました!
「レポート」タブを開いて結果を確認。
f:id:MoneyReport:20160607142708j:plain
連勝2、連敗64となり、連敗が多めですね(^-^;
それでも純益が13801.49ドルとなっていますので、資産を増やせますね(^-^)v

「グラフ」タブを開いて結果を確認すると・・・
f:id:MoneyReport:20160607134035j:plain
ジグザグしながら若干右下に下がる時がありながらも、右肩上がりに資産が増えていくグラフが表示されました!!!

前回結果を載せると・・・
f:id:MoneyReport:20160606154432j:plain
あら、全然違うグラフに(^o^;
前回のだと下がることなく右肩上がりだったので、id:emijaさんが「モデリング品質低いよ!」と仰ってたんですね(-_-;
失礼致しましたm(_ _)m

ジグザグなグラフを描きながら、それでも右肩上がりに資産が増えていくので「ジグザグブレイクアウト」というEA名称なんですね~(^-^)v
ようやく分かりました(^o^;

id:emijaさん
前とパラメーター変わってません?(´~`?) ジグザグに資産が増えるからジグザグブレイクアウトって…全然違うw Zigzagインジでブレイクアウト狙ってます。ロジックはブログに書いてるhttp://tasfx.net/2015/05/03/post-5278

失礼しました<(_ _)>
「ジグザグに資産が増えるから」ジグザグブレイクアウトではなくて、「Zigzagインジケーターを使ってブレイクアウトを狙うから」ジグザグブレイクアウトと呼ぶそうです!
不名誉な書き方をして失礼致しましたm(_ _)m

今後は、もう少し色々とパラメータを変えてテストしてみたいと思います(^-^)v