開発:MQL開発7/デバッグ方法:Printデバッグ | シストレの現実

シストレの現実

インフラ構築のプロが、シストレをゼロから始める記録です。
リーン・スタートアップの考えを取り込み、Expert Adviser を作っていきます。

教えるような大したものではなく、ユースケースの一つになれば幸いです。

さて、EAのソースコードを修正していくわけですが、MT4自体にもデバッガがついています
しかしながら、まずはローテクに Print 関数を使ったデバッグを行っていきたいと思います。
※MetaEditorがイマイチ使いこなせていなくて。。。

まずソースコードにPrint関数を入れてみます。
static int BarBefore = 0;
int BarNow = Bars;
BarBefore = BarNow;
Print(Hour(),";",Minute(),":",Seconds(),":"," BarNow=",BarNow," BarBefore=",BarBefore);
if( (BarNow - BarBefore) != 1) {
    BarBefore = BarNow;
    return(false);
}
BarBefore = BarNow;

コンパイルした後に、バックテストを行ってみるとこんな感じで表示されます。

Printデバッグ1


H1から後の部分でPrint関数で出力しようとした内容が出力されています。
これを生ログから拾います。

Printデバッグ2


右クリックメニューから「開く」を選んでログフォルダを開きます。

Printデバッグ3

生ログを開いて、内容を Excel に貼り付けて、少し加工するとこんな感じ。

Printデバッグ4

Excelで加工して分析に使えるのはPrintデバッグの大きなメリットです。

本筋とはズレるのですが、ティック数(Volume配列)を同じ手順でExcelへコピーして集計してみました。

Printデバッグ5


たしかに時間毎に ティック数が全然バラバラ、、、これはいかん。。。
もしかすると、始値でキチンと約定できていなかったりする原因かもしれません。。。

というわけで、またデバッグには入れずに終わります