2012/09/29

ATC2012開催前夜

今年で3回目の出場になるATC2012が来週から始まります。
ということで、今回は、3回の大会出場のコンセプト(自分なりの。。)をまとめます。

ATC2010

初出場となったこの年は、MT5をMT4の様に扱う方法にこだわりました。MT5とMT4で大きく異なる点は、ポジション管理です。MT4では、オーダーごとの情報になっているのに対し、MT5では、通貨ごとにポジションがまとめられます。そこで仮想ポジション(オーダー単位)の履歴を把握しMT4の様に作動させることにしました。結果は、思う様に作動しませんでした。
参考:豊嶋先生のブログに仮想ポジションについての記事があります。非常に参考になります。

ATC2011

2回目の出場となったこの年は、複数ペアの取引に挑戦してみました。同一のシステムを複数ペアに取り組むものです。また、メモリの使用量削減にも挑戦しました。が結果は、散々なものとなりました。

ATC2012

3年目となる今回は、資金管理(ロット調整)にこだわって作成してみました。システムの内容は、以下のとおりです。
  • 対象通貨:EURUSD(単一ペア)
  • 対象時間軸:1H
  • システム概要:ブレイクアウト
  • 特徴:必ずBUYorSELLのポジションを持ち続ける。
資金管理なしの場合の成績(0.01lot固定)
  • 期間:2012.01.01~2012.08.01
  • 取引数:326
  • PF:1.11
  • 総損益:631.54

このような、EAに資金調整(ロット調整)を行った結果以下の様になった。
  • 期間:2012.01.01~2012.08.01
  • 取引数:466(ロット調整しかしていないのに取引数が上がっている@@;
  • PF:1.62
  • 総損益:118282.73

※資金調整(ロット調整)の方法は、利益が上がった時間帯には、多くのロットを賭け、利益の上がらない時間帯は、少ないロットで、と言う感じです。本来なら、仮想ポジションを設けて、取引をしないという選択肢もありますが、今回の大会から0.01lotが採用されたのでポジションを持ち続ける事にしました。(単なる手抜き・・

まとめ

今年も何とか、ATC2012に出場することが出来ました。あとは、変なバグや資金が吹っ飛ぶことなく大会終了時まで楽しませてもらえることを祈るばかりです。


おまけ

MQL5リファレンスの機械翻訳(今回は、埋め込み系)を作ってみましたが、9割程度完成したところで心が折れました。。orz 不完全なものですがココに置いておきます。※CHMファイルを見る場合は、ブロックの解除が必要です。

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に出場できそうです^^;