EAをMT4でバックテストする手順

EAを買おうとするとバックテストの結果が表示されていますが、その意味を理解しないでパラメータを変えると思わぬ損失になる事もあります。あるいはEAを自分でテストして宣伝通りなのか確認しておくのも大切です。

EA開発ではバックテストのためにはヒストリカルデータが必要です。




EA バックテスト

 
EAのバックテストを行うためには、過去の取引データであるヒストリカルデータとMT4が使えるFX業者のデモ口座が必要です。
ここではテスト設定を準備しますので、このような内容になります。

  • ヒストリカルデータを取得
  • MT4のチャートの最大バー数を増やす
  • 古いヒストリカルデータを削除
  • ヒストリカルデータをインポート
  • 各時間足のデータ作成
 

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

 
ヒストリカルデータと言っても、万国共通の決まったデータがあるわけではありません。
FX業者(ブローカー)によって提示される価格が微妙に異なります。また、営業時間が少し違うケースもあります。(つまりデータに空白期間が生じる)

以下、MT4に使えるヒストリカルデータを提供しているところです。

  1. MetaQuotes:あえて使いたくはない
  2. FXDD:まあまあ
  3. FXTF:データ補正が面倒
  4. Alpari:昔は良かった
  5. Dukascopy:今のところ一押し
  6. AXIORY:海外FX業者として
  7. 有償のデータ:お金があればどうぞどうぞ
 

MetaQuotes

MT4の開発元「MetaQuotes社」から提供されるものは精度が低くEAのテストには向いていません。手っ取り早く取り込めますけれど…

例えばあるFX業者のデモ口座を開いてMT4をインストールし、ヒストリカルデータを取り込もうとすると、このようにデータがMetaQuotesからのものになると表示されます。
 
業者のヒストリカルデータが出るところであれば(Alpariなど)そのままでいいのですが、MetaQuotesは精度が悪いので以下のところからデータを取り込むことをお勧めします。
 

 

FXDD

2002年からの海外の老舗ブローカーですが、結構荒っぽいという噂もあります…データをもらうだけなので心配することはないですが

FXDDのデータで、hstデータです。

FXDD:1分足ヒストリカルデータ に入り通貨ペアを選択してダウンロードします。
注)同じURL↑を2回クリックです。またChromなどは安全でないとブロックしますが、セキュリティーソフトでファイルの安全性を個別に確認すると大丈夫な場合もあります。
*.hst データを取得できます。


 
データにはゴミがあったり抜けがありますが、入手後修正すればEAのロジックによってはあまり関係ない場合もあります。
 

FXDDのヒストリカルデータ   Dukascopyのヒストリカルデータを調整するやり方をこちらで紹介しました     FXD...
 

 

FXTF

日本法人もあり、その点は安心です。スキャルピングが禁止されているのでそういったデータになっているかもしれません。

FXTF(FXトレード・フィナンシャル)のヒストリカルデータです。尚こちらは*.csvファイルでファイルとしては大きいです。
無料ですが口座が必要です。FXTFの口座開設はこちらから↓
 

日本のFX業者によってトレードツールは異なります。インジケータを使いたい場合はMT4が圧倒的にたくさんあります。またEAなどをやる場合は...
 

MT4への簡単な導入例:
FXTFにログインしてマイページに入り、チャートデータを選択クリック

例えばここではEURJPYのデータをダウンロードします。
(EAにより対象通貨ペアが限定されていると思いますのでその通貨ペアを選びます)

EURJPY_M1.zip というファイルがダウンロードできました。
このzipファイルを解凍すると EURJPY_M1.csv が出てきます。

尚、以下の文言のように2015年6月29日前と後では時間のズレが発生するので補正が必要になります。
あるいは2015年6月29日は使わないという選択肢もありかもしれません

2015年6月29日よりGMT+3(夏時間)/GMT+2(冬時間)で提供しています。2015年6月29日以前のチャートデータの時間および取引履歴、口座明細書の約定時間等に関しては、日本時間表示となりますのでご注意ください。
https://www.fxtrade.co.jp/guide/

 

Alpari

Alpari UK でデモ口座を開いてAlpariのMT4でヒストリカルデータが簡単に取得できます(でいました)。

私はこれをメインに使っていましたが、オリジナルのデータがダウンロードできなくなったようです。MetaQuotesのデータになってしまいます。長い間デモ口座だったからでしょうか…

 

Dukascopy

こちらは元々こういうデータを集めていたところなのでしょうか、それなりのデータがそろっています。

TickでBidとAskのヒストリカルデータをあります。
通常はBidとAskは固定スプレッドなのでBidデータの1分足で十分ですが

細かい解説もありますのでこれに沿ってやれます
ヒストリカルデータの取得方法(少し情報が古いですが)
 
またデフォルトだとデータを調整したほうがいいでしょう。
 

Dukascopyのヒストリカルデータ   いくつかのEAのバックテストをしていた時に、ヒストリカルデータでEAによる結果の違いが大きい...
 

 

AXIORY

正確なバックテストを実施できるよう、「MT4 スタンダード口座」「MT4 ナノスプレッド口座」の過去のヒストリカルデータ(ティックデータ)を提供しているそうです

MT4/各通貨ペアのヒストリカルデータ(ティックデータ)

2015年以降のデータになります。またCSVファイル形式でTickデータになり、Tickデータが欲しい場合はいいかもしれません。

 

有償データ

いくつかのブローカーからデータが有償で提供されています。

  • Tickstory
    • ティックデータを扱えますが有料です。期間が短い無料版もありますが、実はDukascopyのデータだったりします。
  • TDS(Tick Data Suite)
    • 買取だと$499しますが年パッケージなら安く入手できます
    • AskとBidでスプレッドを考慮して限りなくリアルに近いテストが可能です

ヒストリカルデータの問題点

今更ですが、ヒストリカルデータの問題点を理解しておいた方がいいでしょう。

  • 4時間ではブローカーによって月曜のスタート時間が異なっている影響でズレが生じています。つまりローソク足の4本値がブローカーで違うわけです。
  • 日足では、1本だけ空の足が追加されることがあります。これはリアルのMT4でも起きるのでシステムのバグでしょう。直す気は無いみたいです。(そこはNweYorkサーバーがダメダメですが東京サーバーは修正されているのでやろうと思えばできるはず…)
  • 日足が5本、6本という問題があり、6本を5本に変更しただろうあたりでデータの不整合がおきているのではというものがあります。2013年以前あたりで。いまだに6本でやっているブローカーもありますが、デイトレやスキャルのトレーダーには関係ないという理由のようです。
  • 5分足などの短い足でもスプレッドの変動があります。例えば各ブローカーのスプレッドは一定ではありません、また朝方はスプレッドがほとんどのブローカーで広がります。そこまでヒストリカルデータで取り込まれていないでしょう。
    また暴落、高騰時のスプレッドの動きまでデータに反映されているとは思えません。そういった時もバックテストでOKだと謳うEAでひどい目にあったことがあります。
     

     
    スプレッドが隠れてしまうのはヒストリカルデータが売値(Bid)のみだからです。より正確にやろうとすると、売値+スプレッドとして買値(Ask)もデータとしてあることが前提で(Dukascopyとか)それを扱えるツールも必要です。

では全く意味が無いかというと、個人的には最低限のロジックのテストができるという点で有効だと思います。
このヒストリカルデータを使っても利益にならないEAはそもそもダメダメということでしょう。

 

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

 
ヒストリー内の最大バー数の設定:

MT4を起動して「ツール」「オプション」を開きます。

「チャート」タブを開き、ヒストリー内の最大バー数と
チャートの最大バー数を2146483647まで最大値に設定します。
(実際はこの数字以上を入力すればこの値で頭切りされます。例:12345678901)

プロキシ設定:
アカウントにログインしてFX業者からの配信データを受信していると、テストとデータが混同します。それを回避するために、プロキシ設定を使ってオフライン状態(回線不通)にします。
「ツール」「オプション」から「サーバー」タグを選択します。


「プロキシサーバーを有効にする」にチェックを入れて、その右にある「プロキシ…」ボタンをクリック
サーバーに適当な入力をしてOKです。

古いヒストリカルデータの削除:

MT4を起動して表示しているチャートをクローズしておきます。

「ファイル」「データフォルダを開く」
データフォルダーを開いた後はMT4は終了します。

「history」をクリック

「FXTrade-Demo FXTF」を開きます。(フォルダー名は場合によって異なります)

フォルダ内にあるhstデータを消去します(実際は*.hstファイルが古いデータなのでこれらを消去)

再度MT4を起動します。チャートは表示させないでそのままです
「ヒストリーセンター」をクリック

テストしたい通貨ペアのフォルダを開き、各時間足にデータが無いことを確認します。もしもデータがあれば削除します。
「インポート」ボタンをクリック

データ取り込み画面で参照ボタンから、前に取り込んだヒストリカルデータ
EURJPY_M1.csv を指定します

データがある程度大量に取り込まれますが、2012年1月3日からのデータが揃っているのを確認して「OK」

ここは取り込みに時間が相当かかったり、いつまでたっても表示されないこともありますのでそのつもりで確認してください(ロード中のような表示がない)

ヒストリカルデータがインポートされました。ただしこれは1分足だけなのであとで他の時間足の作成が必要です。

MT4のチャートで確認するために、該当通貨ペアのチャートを開き、「チャート」「自動スクロール」をオフにします。

オフラインチャート:
メニューの「ファイル」「オフラインチャート」を開くとEURJPYの1分足チャートがありますので「開く」

チャートの左下でエンターキーを打つと日付へ飛べるダイアログが開きますので
「2012.01.03」と入力します

チャートが2012年のデータに飛んでいるのがわかります。

 

各時間足のデータ作成

 
1分足チャートを開いた状態でPeriodConverterがナビゲータウィンドウにデフォルトであり、それを起動します。

パラメータの値に時間を入力します。例えば5分足ならば「5」です
15分=15
30分=30
1時間=60
4時間=240
日足=1440
週足=10080
月足=43200

ただこのPeriodConverterはいつ終わったのか進捗状況が分からないことがありますので、period_converter_ALL.mq4というのを使うと全部いっぺんに作成してくれ進捗が分かります。

実行した後で、データフォルダを開き、ヒストリカルデータを確認すると1分足~月足までのデータができています。

これでバックテスト用のヒストリカルデータの作成は終了です。
 
 


自分でEAを簡単に作成する事もできます

EAつくーる【1ヶ月版】
MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる!
MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる!?|?fx-on.com

『EAつくーる』
MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる!
MQL言語の学習ができ、裁量トレーダーもEA開発が可能になる!?|?fx-on.com

fx-on電子書籍お試し用・EAつくーるマニュアル
fx-onの電子書籍リーダーをお試しください!

解説ページ

公式ページ


EAつくーるとセットでインジケーターつくーるも場合によっては必要になるかもしれません
手法次第です
インジケーターつくーる【1ヶ月版】
インジケーターつくーる
インジケーターつくーる?|?fx-on.com

インジケーターつくーる
MQL言語の学習ができ、裁量トレーダーもインジケーター開発が可能に
MQL言語の学習ができ、裁量トレーダーもインジケーター開発が可能に?|?fx-on.com


シェアする

  • このエントリーをはてなブックマークに追加

フォローする