変数を使用してソースコードの見栄えを少しすっきりしましょう。
前回のはこれです。
今回は以下のように修正してください。
int limit=Bars-counted_bars-1;
for(int i=0; i<limit; i++)
{
ExtMapBuffer4[i]=iMACD(NULL,0,FastEMA,SlowEMA,Signal,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer3[i]=iMACD(NULL,0,FastEMA,SlowEMA,Signal,PRICE_CLOSE,MODE_SIGNAL,i);
double value = ExtMapBuffer4[i]-ExtMapBuffer3[i];
if(value>=0)
{
ExtMapBuffer1[i]=value;
}
else
{
ExtMapBuffer2[i]=value;
}
}
ExtMapBuffer4[i]-ExtMapBuffer3[i] と計算しているところが3か所あるので、
それを変数に入れるようにして、変数を使うように変更しています。
かなり見た目がすっきりしました。
ついでに以下の文を付け足します。
ExtMapBuffer1[i]=0;
ExtMapBuffer2[i]=0;
なぜこのようなことをするかというと、
もしバッファ1に何か値が入っていた時、
次のティックで value の値がマイナスになると、バッファ2の処理になります。
この時、バッファ1には何の処理も行われないので値が入ったままになっていて、
Gold と Silver の両方のヒストグラムが描写されることになります。
その状態は良くないので、判断の前に一旦両方に0を代入しておけば、
どちらの処理の状態になっても悩むことはありません。
こちらのようにプログラムすることもできます。
このように、同じ処理をやるのに異なる書き方があります。
どの書き方が好みかは個人個人で違うと思いますので、
色々やりながら自分にわかりやすい書き方を見つけてくださいね。☆-( ^-゚)v