カブトムシの飼育に2年連続で失敗しているセレブパンダだお。

今日は、MQL4のデバック方法の話だお。

ご自身が作成したインジやEAの細かい確認方法を知らない人が意外にいます。
今日は、そんな人に読んでほしい記事です。

MQL4でインジケーターやEAを作っていて、正しく動かない時って、よくありますよね?
セレブパンダは、一発でうまくいくことは、ほぼ0です。

そんな時に、どこが悪かったかを知るやり方を知らないといけません。

セレブパンダがよく使っているのは、Print関数です。printf関数もありますが、Print関数が使い勝手がよいのでこちらをおすすめします。

理由は2つあります。

・型変換をしなくてよい。

・型変換をしなくよい

printf関数は、文字列に変換しないとコンパイルで警告が発生します。
例えば、double型の変数の値を確認したい場合、printfでは、DoubleToStr関数を使い文字列に変換しないといけません。

void OnStart()
{
    
    double high = iHigh(NULL, PERIOD_M1, 1);
    double low  = iLow(NULL, PERIOD_M1, 1);
    datetime time = iTime(NULL, PERIOD_M1, 1);
    
    printf("high =" + high + " low =" + low + " time=" + time);
   
}

コンパイルすると・・・

このように警告がでます。
警告がでないようにするには、以下のように変換関数を使う必要があります。

void OnStart()
{
    
    double high = iHigh(NULL, PERIOD_M1, 1);
    double low  = iLow(NULL, PERIOD_M1, 1);
    datetime time = iTime(NULL, PERIOD_M1, 1);
    
    printf("high =" + DoubleToStr(high,2) + " low =" + DoubleToStr(low,2) + " time=" + TimeToStr(time,TIME_DATE|TIME_MINUTES|TIME_SECONDS));
   
}

Print関数は、変数をそのまま渡すだけでOKです。
しかも、,で繋げてやるだけで、勝手に繋がってくれます。

void OnStart()
{
    
    double high = iHigh(NULL, PERIOD_M1, 1);
    double low  = iLow(NULL, PERIOD_M1, 1);
    datetime time = iTime(NULL, PERIOD_M1, 1);
    
    Print("high =",high," low=",low," time=",time);
   
}

実行結果は

と表示されました。

MQL4をデバックする際は、Print関数を使ってみてほしいだお。

Twitterでフォローしよう

おすすめの記事