FXDDから落としてきたヒストリカルデータを他のプログラムに食わせたくなって、.hstファイルの構造を調べてみた。
先に書いておくと、versionによって構造が違うようだ。現時点でFXDDが配布してくれている.hstファイルはversion=400で、これはググって見つけたところに書いてある通りっぽいので省略。普通にインポートできるので、別に古い形式でも使えないわけではない。
もう1つ。MT4同梱のPeriodConverter.mq4を読んでみると、version=401から構造が変わっているみたい。C風に書くとこんな感じ。
struct Header { uint32_t file_version; // 401 char copyright[64]; char symbol[12]; uint32_t period; // Period() uint32_t digits; // Digits uint32_t _zero1; // PeriodConverter.mql4ではゼロ固定 uint32_t _zero2; // PeriodConverter.mql4ではゼロ固定 uint32_t _unused[13]; // PeriodConverter.mql4ではゼロ固定 }; struct MqlRates { uint64_t time; // 1970 1/1からの経過秒数 double open; double high; double low; double close; uint64_t tick_volume; uint32_t spread; uint64_t real_volume; };ファイルの先頭に1つHeaderがあって、その後ろにMqlRatesが並んでいる。構造体のフィールド長に満たない文字列の後ろはゼロ埋め。エンディアンはリトル。2038年問題にも対応してるようだ。
0 件のコメント:
コメントを投稿