Dukascopyのヒストリカルデータ
いくつかのEAのバックテストをしていた時に、ヒストリカルデータでEAによる結果の違いが大きいということに気が付き、調べておこうと思ったのがきっかけです。
ヒストリカルデータを取得するには2種類の方法があります
- トレードツールのiForexから取得
- Webから取得
また、デモ口座を開設する必要があり
データの取得方法は公式のpdfに記載されています。
ヒストリカルデータの取得方法
尚、Dukascopyは比較的データの抜けがないのですが、時差の補正が必要です
補正スクリプトが上手く動作しない場合の対処方法もあります
UTC+0
デフォルトではUTC+0(≒ GMT+0)の時間になっています。
MT4 と日本時間の差は GMT+2/+3 の理由
MT4はGMT+2/+3なので時間のずれが生じます。
このズレを回避するには、NweYorkが
- 標準(冬時間)ESTではGMTから2時間プラス
- 夏時間、EDTの期間ではGMTから3時間プラス
Dukascopy の無料データには夏時間の補正がありません
(有料のTDSは補正されていますが)
補正スクリプト
ずれを補正するために、UTC+0のCSVをエクセルで日付けを探して修正していくことも可能ですが、CSVファイルは重いので長期間の1分足では開けないため分割することになります
なんやかやで、このUTCの時間のずれを補正してくれるスクリプトがnekonoteさんから提供されています
UTC+0のヒストリカルデータを、UTC+2/+3や日本時間(UTC+9)にするVBスクリプト
上記URLにあるテキストをコピペ
ファイル拡張子.vbsとしてHSTファイルにドロップする
EURJPY_1 Min_Bid_2003.08.03_2023.09.04.hst ファイルを
dukascopy-converter.vbs
にドロップすると
work ファルダが作成され
変換したファイルがworkフォルダに出力されます
「出力しました」のダイアログが出れば終了です
work フォルダには変換ファイルができています
複数個をドロップすることも可能です
但し、結構忘れたころに出力されたりします
タスクマネージャーでみるとVB Script がたらたら作業をしているのがわかります
補正スクリプトがうまく変換できない
いつまで経っても、うまく変換できない場合は、
セキュリティソフトが邪魔をしている可能性が大です
一時的に停止するなりすれば数分で変換が終了します
以下の対策で2~3分で変換ができていることがわかります
- ネットワークを切断してオフライン
- セキュリティソフトをオフにしてやってみました
尚、この作業は通常レベルのPCでやりました
Windows11
i7-8565U CPU @ 1.80GHz 1.99 GHz
RAM 8GB
セキュリティソフトをONにしていると確かにいくら待っても変換されないことがありました
タスクマネージャーでは、確かに作業をしているのがわかります
2.7% → 30% に上昇
例えば、トレンドマイクロを一時停止する場合
ただセキュリティの関連で、他のソフトを止めたり、ネットのやり取りはやらないように
無防備な状態を理解してやらないといけませんが
Power Shell を使えますが、スクリプトを修正すれば途中経過を表示することもできるかもしれません
1 2 |
PS C:\Dukascopy\2003-2023.09.04> .\converter.vbs '.\GBPNZD_1 Min_Bid_2006.01.02_2023.09.04.hst' PS C:\Dukascopy\2003-2023.09.04> |
尚、文字コードは試したところあまり関係ありませんでした
Shift-JIS
Unicode
UTF8
…
等で変換できています
CSVファイルのデータシフト
以上はHSTファイル形式の場合で、CSVのファイルをダウンロードすることも可能です
問題点は、ヘッダーの文字列を削除しないといけないのですが
CSVだとエクセルで開こうとすると大きすぎるというエラーになる
20年分のデータだと厳しくなります
これは、シンプルなエディタを使えば何とかなります
ヒストリカルデータの取得方法
1、インストール版JForexを起動します。
2、JForex画面上部で、「設定」->「オプション設定」->「一般」を選択します。
3、オプション設定の一般欄で、「プラットフォームの時間」->「EDT(UTC – 5時間)」を選択し、「OK」をクリックします。
4、JForex画面上部で、「表示」->「ヒストリカルデータ取得」を選択します。
5、ヒストリカルデータ取得で、「銘柄(例、USD/JPY)」と「期間(例、1分)」を選択し、「ダウンロード」をクリックします。
データのMT4への取り込み
1、MT4を起動します。
2、MT4画面上部で、「ツール」->「ヒストリーセンター」を選択します。
3、ヒストリーセンターで、「インポート」を選択します。
4、インポートで、「参照:ヒストリカルデータのファイル」と
「スキップ:1行」と「表示移動:+7時間」を選択し、「OK」をクリックします。
このスキップ1行はヘッダーの1行を削除することと同じです
以上で取り込み完了
XM用にはEETを使用
あまり気づいていない人もいるかもしれませんが、XMは他のMT4とは時間が若干異なります
XMのサーバーは地中海のキプロス島にあり、キプロスは東ヨーロッパ時間
EETで、GMT+2/+3 となっています
EETなのでほぼMT4と同じなのですが、夏時間の開始と終了のタイミングは英国式になっています
XMの夏時間・冬時間の切り替え時期
よってXM用のヒストリカルデータはEETを使うことで補正無しで間に合います
以下、MT4の時間とXMの差異を比較してみます
夏時間では1時間早める
英国式 | 3月 最終日曜日 午前1時 | → | 3月 最終日曜日 午前2時 |
米国式 | 3月 第2日曜日 午前1時 | → | 3月 第2日曜日 午前2時 |
夏時間から冬時間に戻すタイミング
英国式 | 10月 最終日曜日 午前2時 | → | 10月 最終日曜日 午前1時 |
米国式 | 11月 第1日曜日 午前2時 | → | 11月 第1日曜日 午前1時 |
2024年の英国式では10月の最終日曜日は10月27日
米国式では11月3日で夏時間の終了
この中間期間が時間のズレが生じる
3月の夏時間の始まりではズレの期間が2~3週間になる
日 | 月 | 火 | 水 | 木 | 金 | 土 |
10/1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 11/1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
楽天FXは通常のMT4でNY17:00で日足終りのタイミング
XMはEET
この両者で比較してみると
XM: 2024/10/02 15:00(夏時間)
楽天: 2024/10/02 15:00(夏時間)
XMが先に冬時間になっている
XM: 2024/10/30 15:00 (冬時間)
楽天: 2024/10/30 16:00 (夏時間)
XM: 2024/11/19 11:00(冬時間)
楽天: 2024/11/19 11:00(冬時間)
ヒストリカルデータはHST形式とCSV形式があります
Dukascopyで以上の日付確認をしたところEETではCSVが正しいようです
(HSTはずれているのではないかと思います)
ファイル形式でCSVを指定しダウンロードすればXM用のヒストリカルデータとして使えます
尚、CSVファイルはヘッダーを削除するか、「スキップ1行」をしないとうまく取り込めないようです
また、CSVなのでエクセルが起動するとファイルが大きすぎて扱えない場合があります
期間が20年とか
その場合は、Tera Padなどのちょっとしたエディターを使うと大丈夫です