//+------------------------------------------------------------------+
//|                                        Bar_Tick's_Separation.mq4 |
//|                                        Copyright © 2012, FOX.RM  |
//|                                             fox.rm@mail.ru       |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, FOX.RM"
#property link      "http://www.niochem.net"
//-----
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_color2 Blue
#property indicator_width1 1
#property indicator_width2 1

extern int res_ras = 70;
extern int LimitBar = 20;

#property indicator_level1 0

extern string Shrift = "Arial Black";



double UpTicks[];
double DownTicks[];
double up=0,dn=0,delta=0,old_Bid=0;
string name_ind;
datetime ctat_SB =0;
double count_plus=0,count_minus=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   name_ind = "B_T_S > "+DoubleToStr(res_ras,0)+"  ";
   IndicatorShortName(name_ind);
  
   SetIndexBuffer(0,UpTicks);
   SetIndexBuffer(1,DownTicks);
  
   SetIndexStyle(0,DRAW_HISTOGRAM,0,1);
   SetIndexStyle(1,DRAW_HISTOGRAM,0,1);
   
   SetIndexLabel(0,"UpTicks");
   SetIndexLabel(1,"DownTicks");
   old_Bid = Bid;
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
  
   ObjectDelete("UpTicks1");
   ObjectDelete("DownTicks1");
   ObjectDelete("UpTicks2");
   ObjectDelete("DownTicks2");
  
  Comment("");
  
  return(0);
  }
//+------------------------------------------------------------------+
//| Tick's Separation Indicator                                      |
//+------------------------------------------------------------------+
int start()
  {
   
   if(ctat_SB==0)ctat_SB=Time[0];  
     if(iBarShift(Symbol(),0,ctat_SB)-iBarShift(Symbol(),0,Time[0])>=LimitBar)
      {
       ctat_SB=Time[0];
       count_plus=0;
       count_minus=0;
      }
  
   if(old_Bid == 0)old_Bid = Close[0];
   if(fNewBar_b()){up=0;dn=0;delta=0;}
   delta = (Close[0] - old_Bid)/Point;
   if(delta>0)up += delta;
   if(delta<0)dn += delta;
   UpTicks[0]   = up;
   DownTicks[0] = dn;
   old_Bid = Close[0];
   
   int delta_ik = up - MathAbs(dn);
   
   if(delta_ik>res_ras)
    {
    SetText("BTS_Bay_ "+Time[0],Time[0], up, Black);
    count_plus ++;
    } 
   if(delta_ik<-res_ras)
    {
  SetText("BTS_Sell_ "+Time[0],Time[0], dn, Black);
  count_minus ++;
    }
//----
   return(0);
  }
//+------------------------------------------------------------------+
bool fNewBar_b(int TF = 0)
  {
   static datetime NewTime=0;
   if(NewTime!=iTime(Symbol(),TF,0))
    {      
     NewTime=iTime(Symbol(),TF,0);
     return(true);
    }
   return(false);     
  }
//----+  string text
void SetText(string name,datetime t1, double p1, color c)
 {
  if (ObjectFind(name)!=-1) ObjectDelete(name);
  ObjectCreate(name,OBJ_ARROW,WindowFind(name_ind),0,0,0,0);
  ObjectSet(name, OBJPROP_ARROWCODE , 158);
  ObjectSet(name, OBJPROP_TIME1 , t1);
  ObjectSet(name, OBJPROP_PRICE1, p1);
  ObjectSet(name, OBJPROP_COLOR, 0);    
 }
//----