EAを買おうとするとバックテストの結果が表示されていますが、その意味を理解しないでパラメータを変えると思わぬ損失になる事もあります。
あるいはEAを自分でテストして宣伝通りなのか確認しておくのも大切です。
EA バックテスト
EAのバックテストを行うためには、過去の取引データであるヒストリカルデータとMT4が使えるFX業者のデモ口座が必要です。
1. ヒストリカルデータの取得
2. ヒストリカルデータをMT4にインポート
2.1 ヒストリー内のチャートの最大バー数の設定
2.2 プロキシ設定
2.3 古いヒストリカルデータを削除
3. 各時間足のデータ作成
ヒストリカルデータの取得
ヒストリカルデータを入手してMT4のストラテジーテスターがバックテストできるように設定します。
ヒストリカルデータと言っても、万国共通の決まったデータがあるわけではありません。
FX業者(ブローカー)によって提示される価格が微妙に異なります。また、営業時間が少し違うケースもあります。
以下、MT4に使えるヒストリカルデータを提供しているところです。
個人的にお勧めの順番:
- 有償のデータ:ある程度のテストをしたい場合は必要
- Dukascopy:今のところ一押し
- FXTF:データ補正が面倒
- AXIORY:海外FX業者として
- MetaQuotes:あえて使いたくはない
- FXDD:使えないかも
- Alpari:昔は良かったのですが
- Tickstory
- ティックデータを扱えますが有料です。お試し期間の無料版もあります。
- TDS(Tick Data Suite)
- 買取だと$499しますが年パッケージなら安く入手可能
- AskとBidでスプレッドを考慮して限りなくリアルに近いテストが可能
- 他の無料データでの時間の補正が簡単にできデータのゴミがない
- バックテストはMT4を使いますが無料データよりもテスト時間が多少短縮
- Tickデータを使うため1分足でモデリング品質が99.9%にできる
TickでBidとAskのヒストリカルデータをありますがMT4のバックテストではBidのみです。
通常はBidとAskは固定スプレッドなのでBidデータの1分足で十分
細かい解説もありますのでこれに沿ってやれますがデモ口座登録が必要
ヒストリカルデータの取得方法
またデフォルトだとデータを調整したほうがいいでしょう。
FXTFのMT4ではEAを使えなくなりました。スプレッドが狭くEAには良かったのですが
2015年6月29日以前のデータには多少時間の調整が必要となります(簡単な導入例以下参照)
ヒストリカルデータは*.csvファイルでファイルとしては大きいです。
データ取得は無料ですが口座開設が必要です。FXTFの口座開設はこちらから↓
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/
2015年以降のデータになります。またCSVファイル形式でTickデータになり、Tickデータが欲しい場合はいいかもしれません。
例)USDJPY データ抜け
2018年4月5日 20:34 から 20:49 までのデータが抜けている
本来はこのようになる
このような事例が年間に幾つか散見されます
またヒストリカルデータを取り込もうとすると、このようにデータがMetaQuotesからのものになると表示されます。
その他の問題点として、
FX業者によっては口座にサフィックス(USDJPY.xxx)が付いているとダウンロードデータが無いとはじかれる
ダウンロードするためにはオンラインにしないといけないので直近のリアルデータが入ってきてじゃまになります
ということで、EAのロジックによっては使えないこともないですが、あえて使う必要性を感じません
2023年9月、これまでとは異なるヒストリカルデータが掲載されているようで、データの信憑性が以前より悪くなっています
Dukascopy のデータを入手したほうがいいでしょう
以下の内容はそれ以前のデータによるもので、もし元に戻ればとしてしばらく残しておきます
2002年からの海外の老舗ブローカーです。
特に口座が無くてもデータを入手できる
FXDD:1分足ヒストリカルデータ に入り通貨ペアを選択してダウンロードします。
注)同じURL↑を2回クリックです。またChromなどは安全でないとブロックしますが、セキュリティーソフトでファイルの安全性を個別に確認すると大丈夫な場合もあります。
*.hst データを取得できます。
データにはゴミがあったり抜けがありますが、入手後修正すればEAのロジックによってはあまり関係ない場合もあります。
ヒストリカルデータの問題点
今更ですが、ヒストリカルデータの問題点を理解しておいた方がいいでしょう。
- 4時間ではブローカーによっては月曜のスタート時間が異なっている影響でズレが生じています。つまりローソク足の4本値がブローカーで違うわけです。
- 日足では、1本だけ空の足が追加されることがあります。これはリアルのMT4でも起きるのでシステムのバグでしょう。直す気は無いみたいです。(例えばOANDAの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分足~月足までのデータができています。
これでバックテスト用のヒストリカルデータの作成は終了です。
[PR] 自分でEAを簡単に作成する事もできます
fx-on電子書籍お試し用・EAつくーるマニュアル
fx-onの電子書籍リーダーをお試しください!
[PR] EAつくーるとセットでインジケーターつくーるも場合によっては必要になるかもしれません
手法次第です
インジケーターつくーる【1ヶ月版】