#property indicator_separate_window
#property indicator_buffers  7
#property indicator_color1   DimGray
#property indicator_color2   DimGray
#property indicator_color3   Red
#property indicator_color4   clrNONE
#property indicator_color5   DimGray
#property indicator_color6   DodgerBlue
#property indicator_color7   DodgerBlue
#property indicator_maximum  1
#property indicator_minimum -1

//extern string TimeFrame              = "Current time frame";
extern int    trendPeriod            = 50;
extern double TriggerUp              =  0.8; 
extern double TriggerDown            = -0.8; 
extern double SmoothLength           = 5;
extern double SmoothPhase            = 0;
extern double limit_bars             = 5000;

int  Up=0, Dn=0, Up2=0, Dn2=0;

double   B0[],B1[],B2[],B3[],B4[];

int init(){
   IndicatorBuffers(5);
   SetIndexBuffer(0,B0);
   SetIndexBuffer(1,B1);
   SetIndexBuffer(2,B2);
   SetIndexBuffer(3,B3);
   SetIndexBuffer(4,B4);
   IndicatorShortName(NULL);
   return(0);
}

int start(){int i, limit=Bars-IndicatorCounted()-1; if(limit>limit_bars){limit=limit_bars;}

    for(i=limit;i>=0;i--){B4[i]=iCustom(NULL,0,"Trend direction && force index","0",trendPeriod,TriggerUp,TriggerDown,SmoothLength,SmoothPhase,false,false,false,false,false,false,false,2,i);}

    for(i=limit;i>=0;i--){if(B4[i]<-0){Up=0;} if(B4[i]>TriggerUp)  {Up++;} if(B4[i]<TriggerUp   && Up>0){Up++;}
                          if(B4[i]> 0){Dn=0;} if(B4[i]<TriggerDown){Dn++;} if(B4[i]>TriggerDown && Dn>0){Dn++;}  B3[i]=Up+Dn;}

    for(i=limit;i>=0;i--){B2[i]=iCustom(NULL,0,"Trend direction && force index","0",trendPeriod+B3[i],TriggerUp,TriggerDown,SmoothLength,SmoothPhase,false,false,false,false,false,false,false,2,i);}

//    for(i=limit;i>=0;i--){if(B2[i]<-0.001){Up2=0;} if(B2[i]>TriggerUp)  {Up2++;} if(B2[i]<TriggerUp   && Up2>0){Up2++;}
//                          if(B2[i]> 0.001){Dn2=0;} if(B2[i]<TriggerDown){Dn2++;} if(B2[i]>TriggerDown && Dn2>0){Dn2++;}  B1[i]=Up2+Dn2;}
                          
    //for(i=limit;i>=0;i--){B0[i]=iCustom(NULL,0,"Trend direction && force index","0",trendPeriod+B3[i],TriggerUp,TriggerDown,SmoothLength,SmoothPhase,false,false,false,false,false,false,false,2,i);}

   return(0);
   
}