以下を追加してください。
int limit=Bars-counted_bars-1;
for(int i=limit; i>=0; i--)
{
ExtMapBuffer1[i]=iMA(NULL,0,ma_Period,0,MODE_SMA,PRICE_CLOSE,i);
if(ExtMapBuffer1[i]>ExtMapBuffer1[i+1]
&& ExtMapBuffer1[i+1]>ExtMapBuffer1[i+2])
{
ExtMapBuffer2[i]=ExtMapBuffer1[i];
}
else if(ExtMapBuffer1[i]<ExtMapBuffer1[i+1]
&& ExtMapBuffer1[i+1]<ExtMapBuffer1[i+2])
{
ExtMapBuffer3[i]=ExtMapBuffer1[i];
}
else
{
ExtMapBuffer2[i]=EMPTY_VALUE;
ExtMapBuffer3[i]=EMPTY_VALUE;
}
}
まず最初に、ExtMapBuffer1 で移動平均線を計算しておきます。
次に、if文で条件を設定します。
1つ目に、現在の足の ExtMapBuffer1 の値と、
1本過去の ExtMapBuffer1 の値を比べ、
現在の足の ExtMapBuffer1 の値が大きいか確認します。
同様に、1本過去の足の ExtMapBuffer1 の値と、
2本過去の ExtMapBuffer1 の値を比べ、
1本過去の足の ExtMapBuffer1 の値が大きいか確認します。
どちらの条件にも当てはまる場合、
過去2本連続して移動平均線が大きくなっていることになり、
この場合を上昇しているとみなすことにします。
この時、ExtMapBuffer2 に ExtMapBuffer1 を代入します。
下降している場合は、小さいかどうかを比べます。
過去2本連続して移動平均線が小さくなっている時に、
ExtMapBuffer3 に ExtMapBuffer1 を代入します。
それ以外の時は、
ExtMapBuffer2 と ExtMapBuffer3 にEMPTY_VALUE を代入します。
EMPTY_VALUE は数値なし、という意味です。
チャートに表示するインジケーターの場合、
0 を代入してしまうと、
画面表示範囲外の 0 の値まで垂直の線が引かれてしまいますので、
EMPTY_VALUE を使用します。
入力が終わったら、コンパイルしてチャートにセットしてみてください。
カラフルに表示されればOKです。
上昇トレンドは赤、下降トレンドは青、それ以外が黄色の表示です。
今回、if文の条件を書くのに、&& のところで改行しています。(&&の説明)
1行の長さが長くなる時に、意味がわかる区切りなら、
今回の例のように途中で改行する場合もあります。
また、説明しますので、今回はその様なこともあると覚えておいてください。
ばいちゃ~。(*゜▽゜ノノ゛☆
【送料無料】FXメタトレーダーで儲けるしろふくろうのスーパー投資術 |









