csvをhstに変換してMT4に取り込んでみたPerl
ロロマルさんが、無料配布されているユーロドルトレンド系EA Star Fleetですが、バックテストを少しだけ高速したバージョンが、ここにアップされています。テストされている人は、高速化版をお試しください。。
さて、今日もコメント対応…
Coo 2010/02/07 23:37
更新が止まったらしい他の人のサイトですが、ttp://msvc.web.fc2.com/1321.csv のような
銘柄ごと(銘柄コード1321は日経平均ETFです)の日足形式のcsvを読んで、銘柄コードをUSDJPYの
ようなシンボルとして使い、日付のセパレータが/なのをピリオドに直し、時間(00:00)を
追加してMT4形式に合わせてhstを作るというのを目指しています。
とありましたので、実際に 1321.csv を hst に変換して取り込んでみました。
CSV を hst に変換するには、Perl のようなテキスト処理特化言語?を使いこなせると楽にできます。
hst ファイルのヘッダ部分は、以下のように pack して出力します。先日の unpack の逆です。
open(WDB,">$outfile"); binmode WDB; $version = 400; $copyright= "(C)opyright 2003, MetaQuotes Software Corp."; $symbol = "1321";#銘柄名 $period = 1440;#日足なので1440 $digit = 0;#小数点以下の桁数 $timesign = time; $lastsync = 0; $unused = ""; $buf = pack("L1 a64 a12 L4 a52",$version,$copyright,$symbol,$period,$digit,$timesign,$lastsync,$unused); print WDB $buf;
データ部分の pack は、高値(high)と安値(low)の順番に注意します。
$buf = pack("L1 d5",$time, $open,$low,$high,$close,$volume); print WDB $buf;
実際のスクリプトサンプルは、ここにあります。1321.csv 専用なので、使いまわす場合はそれなりに改造してください。
1321.csv と Csv2Hst.pl を同じフォルダに入れて Csv2Hst.pl をダブルクリックすると、13211440.hst が生成されます。
「銘柄名」+「分表示」なので、ファイル名が 13211440.hst です。(1日は1440分だから..)
「銘柄名」は、hst 内部に書かれる $symbol と同一にしないとだめです。
13211440.hst を history\サーバ名 フォルダ内に置けば、オフラインチャートとして見ることができます。
チャートとして開くとこんな感じです。MetaQuotes 社は、こういう使い方を想定していなかったと思うので、MT5 からは出来なくなってしまうかもしれません。