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 からは出来なくなってしまうかもしれません。