ブログトップ 記事一覧 ログイン 無料ブログ開設

とあるMetaTraderの備忘秘録 RSSフィード Twitter

忙しいです。ネタもないし・・・

2010-02-10

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 専用なので、使いまわす場合はそれなりに改造してください。




f:id:fai_fx:20100209132555p:image

1321.csv と Csv2Hst.pl を同じフォルダに入れて Csv2Hst.pl をダブルクリックすると、13211440.hst が生成されます。

「銘柄名」+「分表示」なので、ファイル名が 13211440.hst です。(1日は1440分だから..)

「銘柄名」は、hst 内部に書かれる $symbol と同一にしないとだめです。


f:id:fai_fx:20100209132554p:image

13211440.hst を history\サーバ名 フォルダ内に置けば、オフラインチャートとして見ることができます。


f:id:fai_fx:20100209132552p:image

チャートとして開くとこんな感じです。MetaQuotes 社は、こういう使い方を想定していなかったと思うので、MT5 からは出来なくなってしまうかもしれません。

CooCoo 2010/02/12 00:11 faiさん、コメントありがとうございました。
昔使ってた言語でやっていたのですが、Perlを入れて確認しました。
やってみたいことが増えればPhysonやRubyなども含めてスクリプト
言語を始めてみるのも楽しくなりそうです。完結したツールでなく、
ポイントをおさえて新しいことを始める気になる形で示してくださって
ありがとうございました。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/fai_fx/20100210/1265731370
Connection: close