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は補正されていますが)
EET(UTC+2)は比較的近いデータにはなりますが多少問題点があります
EAがスキャルピングなどの短期トレードであればあまり問題はないかもしれません
完全に整合性をとるのであれば時差と夏時間を補正する必要があります
EET(UTC+2)による調整
2時間のズレは JForex Platform の設定で、
「プラットフォームの時間」を EET(UTC+2時間) にすることで多少調整できます。(EETは東ヨーロッパ時間)
それとダウンロード形式はCSVでないとHSTでは反映されません。また、CSVデータの取り込みはそこそこ時間がかかります。
このCSVに余計なヘッダーがあるので取り込めない場合があるので
xxx.csv ファイルのヘッダー部分の「Time…」の1行を削除します。
また、csvファイルは大きすぎてExcelでは開けないことがあります。そんな時はVS Codeであればパワフルなので大丈夫です
因みに、問題の箇所を見て見ると
2020/1/24 23:59:00 まで伸びて土日が無くなり 1/27 00:00:00 から始まっています。
チャートでみても調整されています。
EETの問題点
実はこれですべて解決ではありません
EETを使ったのもありますが夏時間調整が多少おかしなことになっています。
結論から言うと
- 3月 最終日曜日の前の週の金曜日が1時間足りない
3/29(金曜日)が22:59で終わっている
- 10月 最終日曜日に2時間分データが余計にある
10/27(日曜日)に22:00から23:00のデータが入っている
これは夏時間調整からきていると思われます。
あくまでMT4はNewYorkのPM5時がその日の終わりという設定なので
NewYorkの夏時間はヨーロッパの夏時間とは1~2週間ずれます。
実は私のEAの幾つかは金曜の夜には手仕舞うので、それほどこれが問題ではありません。
ただどうなっているというのを理解しておくのは必要なのと、当然スウィング系のEAの場合は問題になります。
補正スクリプト
ずれを補正するために、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
…
等で変換できています