今回やりたいことは、
2本前のローソク足がバンドの内側で、
1本前のローソク足の終値がバンドの外側なら、
現在の足に矢印を出します。
文章で書くとなんだかわかりにくくてサッパリ星人が出てきそうですね。(;^_^A
しかしながら、文章にできないものはロジックとして表現できませんので、
文章に書き表わしてみるのも大切な作業です。
それでは、以下の分を追加してください。
int limit=Bars-counted_bars-1;
for(int i=0; i<limit; i++)
{
ExtMapBuffer1[i]=iBands(NULL,0,Band_Period,Deviation,0,PRICE_CLOSE,MODE_UPPER,i);
ExtMapBuffer2[i]=iMA(NULL,0,Band_Period,0,MODE_SMA,PRICE_CLOSE,i);
ExtMapBuffer3[i]=iBands(NULL,0,Band_Period,Deviation,0,PRICE_CLOSE,MODE_LOWER,i);
double band_Upper1=iBands(NULL,0,Band_Period,Deviation,0,PRICE_CLOSE,MODE_UPPER,i+1);
double band_Upper2=iBands(NULL,0,Band_Period,Deviation,0,PRICE_CLOSE,MODE_UPPER,i+2);
double band_Lower1=iBands(NULL,0,Band_Period,Deviation,0,PRICE_CLOSE,MODE_LOWER,i+1);
double band_Lower2=iBands(NULL,0,Band_Period,Deviation,0,PRICE_CLOSE,MODE_LOWER,i+2);
if(band_Lower1>Close[i+1] && band_Lower2<Low[i+2])
{
ExtMapBuffer4[i]=Close[i];
ExtMapBuffer5[i]=0;
}
else if(band_Upper1<Close[i+1] && band_Upper2>High[i+2])
{
ExtMapBuffer4[i]=0;
ExtMapBuffer5[i]=Close[i];
}
else
{
ExtMapBuffer4[i]=0;
ExtMapBuffer5[i]=0;
}
}
ボリンジャーバンドのインジケーターを作った時(こちら)と、
移動平均線のクロスで矢印を出した時(こちら)のをミックスした感じです。
今回は2本前と1本前を使って作りましたが、
2本前を1本前にして、1本前を現在の足に変更すれば、
バンドを突破したらすぐ矢印が出るようになります。
コンパイルしてチャートにセットしてみてください。
以下のように表示されれます。
ラインをわざわざ設定しなくていいのは楽でいいですね~


