カブトムシの飼育に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);
}
コンパイルすると・・・
![](http://celebpanda.com/wp/wp-content/uploads/2021/05/04f030da59a73635537f2eb85bce2109.png)
このように警告がでます。
警告がでないようにするには、以下のように変換関数を使う必要があります。
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);
}
実行結果は
![](http://celebpanda.com/wp/wp-content/uploads/2021/05/ccd021adbd66370f0d5852df2495ab84.png)
と表示されました。
MQL4をデバックする際は、Print関数を使ってみてほしいだお。