Historyファイルのマージをバッチ処理化して@がんばらない

今回のものはここにあります。
DLPASS himerge

MT4のStrategyTesterでシミュレーションを行って検証しては・・・・とやっている時いつも困るのがHistoryデータの管理です。

Historyデータについては、いっきに大昔まで! ってデータを作って、常に新しいデータをリアルに追加!ってやっていてもいいのですが、どうしてもHistoryデータが大きくなりすぎて色々処理が重くなったりメモリが大量消費したりと効率が悪くなってしまいます。

今回は分割して保存しているHistoryデータ+最新データのマージが手作業を必要のないようにバッチ処理できるようにしてみました。(各々のデータでかぶり等があっても構いません)
#注意 Cygwinかそれと同様な環境が必要です。
#またUnixのコマンドの知識が少しあれば、カスタマイズ可能です。

簡単に、処理の説明を書くと

(1)オリジナルのhst(binary)ファイルをcsv(text)ファイルにします。(by MT4 EA)
(2)追加するhst(binary)ファイルをcsv(text)ファイルにします。(by MT4 EA)
(3)上記2つcsvファイルを結合して ソートしてだぶりを削除します。(by Cygwin sort -u)
(4)(3)で作成したcsv(text)ファイルをhst(ファイル)にします。(by MT4 EA)
(5)(4)のファイルから他の全periodを変換したものを作成します。(by MT4 EA)

以下が、バッチの中身と実行例です。
#------------------------実行バッチ bat(例)--------------------------


#!/bin/tcsh
# mt4 original directry and work directry
setenv mt4path_o "/cygdrive/Z/FXCM MetaTrader 4_DEV2/"
setenv libpath_o "history/FXCM-JPYReal01"
# mt4 add history file
setenv mt4path_a "/cygdrive/Z/FXCM MetaTrader 4_DEV/"
setenv libpath_a "history/FXCM-JPYReal01"
./merge.tcsh GBPJPY M1 yes
./merge.tcsh EURJPY M1 yes
./merge.tcsh EURUSD M1 yes

#----------------実行結果-------------------


~/tcsh[187]>./bat
Making original GBPJPY csv file ...
Done
Making add GBPJPY csv file ...
Done
Start merge & uniqfy
Done
Start making final hst file
Done
Converting period
Done
Making original EURJPY csv file ...
Done
[途中略]
Converting period
Done


**ちょこっと参考コメント ・・・になっているかなぁ?

最初に全部を行うアプリでも作ろうかと思ったのですが・・・。毎回この手のツールを作る時、順番の並べ替えとだぶりデータの削除で少し悩んでしまいます。せっかくCygwinの環境でsort,uniqfyが使えるのでそれでやってしまえ!と思ったので今回のような事をしています。

処理の中の(1),(2),(4)の処理はHistory Centerでも出来る事ですが(今回の中間ファイルのcsvHistoryセンターのcsvと互換フォーマットですw)EA化する事によりバッチ処理化出来るようにしました。(今回のdlファイルにそれぞれのEAが入っています)

後(5)の処理も通常Scriptで手作業が入るのでEA化しています(といってもちょこっとですが。ちなみに標準のperiod_convertをフォルダを変えただけではEAとして上手く終了しない場合があるので注意です。今回のdlファイルに修正してちゃんと終了するものを入れてます。)これでバッチ処理を可能にしています。

途中はcsv(text)データになっているので、分離なんかも簡単に出来るようになります。
データを一気に修正する場合なんか、テキストデータなのでawk等のスクリプトでフィルター処理なんかをする事が出来るようになりHistoryデータの取り扱いが楽になるかも。