//+------------------------------------------------------------------+
//|                                                        inBar.mq4 | the Bullish and Bearish Divergent Bars
//|                                                Copyright © 2010. |
//|                                                http://mql4you.ru |
//+------------------------------------------------------------------+
//Cтатьи  Возможности  Язык MQL4 для "чайников". Пользовательские индикаторы (часть 1) 
#property copyright "Copyright © 2010."
#property link      "http://mql4you.ru"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Aqua //RoyalBlue
#property indicator_color2 OrangeRed //Crimson

//---- input parameters
extern int       barsToProcess=10000;
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];

//+-----------------------------------------------------------------------------------------------------------------------------+
extern string  ПАРАМЕТРЫ..ИНДИКАТОРОВ  = "#############################";
extern string tx7="Настройки индикатора Stochastic";
extern int StochTime=5;
extern int per_K=5;
extern int per_D=3;
extern int slow=3;
extern int S_Mode=0;
extern int S_Price=0;
extern int zoneBUY=15;
extern int zoneSELL=85;

extern int     DeltaSig                = 5;    //--0/1/10-- Сдвиг символа сигнала от High/Low в пунктах
//+-----------------------------------------------------------------------------------------------------------------------------+
int      mper[10] = {0,1,5,15,30,60,240,1440,10080,43200};


//+------------------------------------------------------------------+
int init()
   {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW,EMPTY,1);
   SetIndexArrow(0,233);                     //стрелка вверх 225 233 236 241 коды Wingdings 33-255
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW,EMPTY,1);
   SetIndexArrow(1,234);                     //стрелка вниз  226 234 238 242 коды Wingdings 33-255
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
/*
   if(_Symbol == "") _Symbol = Symbol();
   //
   _Digits    = MarketInfo(_Symbol, MODE_DIGITS);
   _Point     = MarketInfo(_Symbol, MODE_POINT);
   //
   if(_Timeframe == 0) _Timeframe = Period();
*/   
//----
   return(0);
   }
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int cu;
if (Digits==4 || Digits==2) cu=1; else cu=10;   // множитель для разных типов счетов 4/2 и 5/3
DeltaSig=DeltaSig*cu;

 int limit;
 int counted_bars=IndicatorCounted();
 if(counted_bars>0) counted_bars--;
 limit=Bars-counted_bars-1;
    if(limit>barsToProcess)
      limit=barsToProcess;

 for(int i = limit; i >= 1; i--)

{
   double sM0 = iStochastic(Symbol(),StochTime,per_K,per_D,slow,S_Mode,S_Price,MODE_MAIN,i);
   double sM1 = iStochastic(Symbol(),StochTime,per_K,per_D,slow,S_Mode,S_Price,MODE_MAIN,i+1);
   double sS0 = iStochastic(Symbol(),StochTime,per_K,per_D,slow,S_Mode,S_Price,MODE_SIGNAL,i);
   double sS1 = iStochastic(Symbol(),StochTime,per_K,per_D,slow,S_Mode,S_Price,MODE_SIGNAL,i+1);
      //сигнал вверх
   if (sS0<zoneBUY && sM0<zoneBUY && sM1<sS1 && sM0>=sS0) ExtMapBuffer1[i]=High[i]+DeltaSig*Point;
   else ExtMapBuffer1[i]=0.0;
      //сигнал вниз  
   if (sS0>zoneSELL && sM0>zoneSELL && sM1>sS1 && sM0<=sS0) ExtMapBuffer2[i]=Low[i]-DeltaSig*Point;
   else ExtMapBuffer2[i]=0.0;
}

return(0);}
//+------------------------------------------------------------------+ObjectSetText