MT4の1分足ヒストリカルデータをForexTester2(FT2)に追加する
ForexTester2(FT2)のBasicサービス(無料)では前月分までのデータしかダウンロードできませんが、MT4で1分足ヒストリカルデータをcsvに出力してForexTesterに取り込んでしまえば擬似的なStandardサービスを実現できます。
誰かやっていそうだけど見つけられなかったので自分で作りました。
おおまかな手順としては以下のとおり。
1)MT4用のスクリプトを使ってcsvデータを書き出す
2)FT2のダウンロードデータ(csv)と、1で作ったMT4のcsvデータをマージ
3)FT2のデータセンターで、2で作ったcsvを取り込んでティック変換
FT2のティック変換に時間が掛かるので、週1回の実行が妥当なところ。毎日やるのはさすがに面倒くさい。
具体的な手順は以下のとおり
1)MT4用のスクリプトを使ってcsvデータを書き出す
以下のサイトからヒストリカルデータをcsvに出力するスクリプトExportChart.mq4をダウンロードする。
便利なスクリプトを公開してくれたcrz33氏に感謝したい。
(他にMT4のヒストリーセンターでエクスポートしたcsvをPythonで加工する手もあるが、こちらのスクリプトを利用する方が手軽にできる。)
ExportChart.mq4のcsv出力の部分をForexTester用のフォーマットに合わせるため以下のように書き換える。通貨ペア名の追加と日付、時刻のフォーマットを変更する。
//出力
FileWrite(
handle,
//IntegerToString(Time[i]),
Symbol(),
DoubleToStr(TimeYear(Time[i]),0) + IntegerToString(TimeMonth(Time[i]),2,'0') + IntegerToString(TimeDay(Time[i]),2,'0'),
IntegerToString(TimeHour(Time[i]),2,'0') + IntegerToString(TimeMinute(Time[i]),2,'0') + "00",
//Time[i],
Open[i],
High[i],
Low[i],
Close[i],
"5" //VolumeはFT2の4と区別するため5にした
C:\MT4にインストールしたMT4を/portableオプションで起動した場合、csvはC:\MT4\MQL4\Filesフォルダに出力される。他のフォルダを指定してもFileOpenがエラーになる。この制限は以下のようにFileOpenのヘルプに記載がある。なんでこんな制限つけるのか訳が分からないよ。
注意:ファイルは terminal_directory\experts\files フォルダ(テストの場合は terminal_directory\tester\files)または、そのサブフォルダにあるものだけ、開くことができます。
2)FT2のダウンロードデータ(csv)と、1で作ったMT4のcsvデータをマージ
PythonでFT2のダウンロードデータ(csv)とMT4から作成したcsvデータを行ごとに読み込んで、先頭の22文字(通貨ペア名+日付+時刻)を比較してマージする。両方のファイルに重複するデータがある場合は、MT4のデータを残して新たなcsvファイルを出力する。
結果として古いFT2のデータの後ろに新しいMT4のデータを付け足したcsvファイルができあがる(本記事公開時点で1ファイルあたり、330MB、642万行のcsvファイルになる)。
MT4のcsvの時差の計算(FT2のデータはGMTなので、MT4がGMT以外なら時差を揃える)もPythonなら楽にできる。
3)FT2のデータセンターで、2で作ったcsvを取り込んでティック変換
これ以降はFT2の通常の操作なので説明は不要。