今回は、音だけではなく矢印を表示するのも1回だけにしてみます。
start を以下のように修正してください。
if(oldtime!=Time[i])
{
if(ExtMapBuffer1[i+1]<Lower_Alert && ExtMapBuffer1[i+2]>=Lower_Alert)
{
ExtMapBuffer2[i]=ExtMapBuffer1[i];
ExtMapBuffer3[i]=0;
if(oldtime!=0) Alert("Upper");
}
else if(ExtMapBuffer1[i+1]>Upper_Alert && ExtMapBuffer1[i+2]<=Upper_Alert)
{
ExtMapBuffer2[i]=0;
ExtMapBuffer3[i]=ExtMapBuffer1[i];
if(oldtime!=0) Alert("Lower");
}
}
今回の修正では、矢印の判断全体の部分を、
if(oldtime!=Time[i])
の { } で囲っています。
これにより、判断そのものを足が変わった時にだけ行います。
しかし、チャートにセットした時に、
音は鳴らしたくないけど、矢印の描写はしたいので、
oldtime!=0
は、削除しています。
そして、Alert の処理の時に、
oldtime!=0
の条件をつけて、音だけ鳴らさないようにしています。
前回までは矢印を同じ足で書き直していましたが、
今回ように、矢印の描写と音の処理部分を
if(oldtime!=Time[i])
で判断することにより、書き直しの処理を減らしています。
そうして余計な処理が減ったぶん、メタトレーダーの動きが軽くなります。
今回の例ですと大した違いはありませんが、
これが大きなプログラムや、複数のチャートで動作させる場合は、
効果がある場合がありますので、頭の隅の方に覚えておくと、
得する時があるかもしれません。
まあ、ないかもしれませんが・・・
【送料無料】iCustomで変幻自在のメタトレーダー |