以下を追加してください。
int limit=Bars-counted_bars-1;
for(int i=0; i<limit; i++)
{
double ma0=iMA(NULL,0,ma_Period,0,MODE_SMA,PRICE_CLOSE,i);
double ma1=iMA(NULL,0,ma_Period,0,MODE_SMA,PRICE_CLOSE,i+1);
if(ma0>ma1 && Close[i]>ma0)
{
ExtMapBuffer1[i]=0;
ExtMapBuffer2[i]=1;
ExtMapBuffer3[i]=0;
}
else if(ma0<ma1 && Close[i]<ma0)
{
ExtMapBuffer1[i]=0;
ExtMapBuffer2[i]=0;
ExtMapBuffer3[i]=1;
}
else
{
ExtMapBuffer1[i]=1;
ExtMapBuffer2[i]=0;
ExtMapBuffer3[i]=0;
}
}
Close は終値のことです。
ma1 で現在のもの、ma2 に1本過去のものを設定しています。
今回は移動平均線の傾きを考慮するようにしました。
移動平均線の傾きを見る場合、
現在のものが1本過去のものより大きければ傾きは上向き、
現在のものが1本過去のものより小さければ傾きは下向きです。
傾きが上向きの時に、終値が移動平均線より上にあれば上昇トレンドで上矢印、
傾きが下向きの時に、終値が移動平均線より下にあれば下降トレンドで下矢印、
それ以外の時はトレンドなしとして横向きの矢印とします。
条件を重ねる時は && を使用します。(&&の説明)
バッファ1に横向きの矢印、バッファ2に上向きの矢印、バッファ3に下向きの矢印を
それぞれ設定しています。
表示する場合は1を代入し、非表示は0を代入します。
とりあえずコンパイルしてチャートにセットしてみてください。
また、パラメーターで移動平均線の本数を設定できますので、
実際に設定した移動平均線も表示させて、矢印の向きが正しいか確認してください。
判断の条件が増えてくるとだんだん難しくなってきます。
しかし、順を追って少しずつ作っていくと何とかなると思います。(*^ー^)ノ
慣れないうちはゆっくりじっくり作成しましょう♪
千里の道も一歩からです。(* ̄Oノ ̄*)
【送料無料】FXメタトレーダー実践プログラミング |