2012/09/08

ヒストリカルデータからエクスポートしたCSVファイルのカスタマイズ

今回は、MT4からヒストリカルデータをエクスポートしたCSVファイルをExcelで加工しやすいようにするVBスクリプトを作ってみました。

【問題点】

MT4からエクスポートしたCSVファイルは、日付のフォーマットがExcelに対応していないため、日付が文字列として認識されます。その為、Excelのありがたい関数郡(例:月別計算or曜日計算or時間の抽出)がそのまま使えません。
histmae

【対応】
そこで、MT4の時間フォーマットをExcelで認識できるフォーマットに変更するスクリプトを作りました。
MT4の時間フォーマット【年.月.日,時間】をExcelフォーマット【年/月/日 時間】に変更します。
スクリプトのDLは、こちら【Time_format_conversion.vbs
Option Explicit
Dim datename,ob,reader,writer,text
Dim re,maches,name,ctext
'ファイル名を取得
If WScript.Arguments.Count = 0 Then
    WScript.Echo "ファイルをドラッグ&ドロップしてください。"
    WScript.Quit
Else
 datename = WScript.Arguments(0)
End If

'オブジェクトの設定
Set ob = CreateObject("Scripting.FileSystemObject")
Set re = New RegExp

'ファイルの読み込み
Set reader = ob.OpenTextFile(datename,1,false)

'新しいファイル名の作成
re.Pattern = "\.csv"
name = re.Replace(datename, "c.csv")

'書き込み用のファイル作成
Set writer = ob.OpenTextFile(name,2,true)

'正規表現のパターン設定
re.Pattern = "(\d{4})\.(\d{2})\.(\d{2})\,"

'書き換え
Do Until reader.AtEndOfStream
    text = reader.ReadLine
    ctext = re.Replace(text,"$1/$2/$3 ")
    writer.WriteLine ctext
Loop
'ファイルを閉じる
reader.Close()
writer.Close()

'完了メッセージ
WScript.Echo name &"を出力しました。"

【使い方】
スクリプトをDL後、ヒストリカルデータからエクスポートしたCSVファイルをスクリプトファイルの上にドラッグ&ドロップしてください。エクスポートしたCSVファイルのあるフォルダにCSVファイル名c.csvというファイルが作成されます。作成されたファイルを開くと以下の様に表示され、Execlで日付が認識されるようになります。
histato
さて、ここまで来たら完成ですが少し遊んでみます。例えば、月別に見た時間別のボラリティの計算をしてみます。
各列にラベルを付けて、月関数【MONTH(シリアル数値)】、時間関数【HOUR(シリアル値)】を追加し、高値と安値の差をHi-Lw(pips)に入れたものです。
hiskakou

これをピボットテーブルで表すと以下の様になり月間別に見た時間ボラリティの平均が出来ます。
pibo
※横軸:月 縦軸:時間です。
グラフ化すると以下の様になります。
burafu
サマータイムの影響が出ているかな(・・?

【まとめ】
VBスクリプトの勉強もかねて作成してみました。



それと。。。今年もATC2012に出場できそうです^^;

2 件のコメント :

alohafx さんのコメント...

いよいよですね!
がんばりましょう(応援を)

bighope さんのコメント...

alohafxさんへ
MQLのフォーラムでalohafxさんのご活躍をいつも拝見させて頂いております。

いよいよですね!

楽しみです。(応援が..)