//+------------------------------------------------------------------+
//|                                           Candle_Body_Size_2.mq4 |
//|                                                           KatVar |
//|                                                   www.KatVar.com |
//+------------------------------------------------------------------+
#property indicator_chart_window
#property version   "1.01"
#property description   "Индикатор показывает тело свечи, а также расстояние,"
#property description   " которое прошла цена в противоположном направлении в течении следующего бара" 
#property strict

/* 1.01  02.05.2015  UPD   Начало работы
   
*/

extern color  ColorBull = DodgerBlue;                       // Цвет подписи бычьей свечи   
extern color  ColorBeer = Red;                              // Цвет подписи медвежьей свечи   
input  bool   ShowRast  = true;                             // Показывать расстояние
extern color  ColorRast = Yellow;                           // Цвет подписи расстояния 
extern string font_name = "Arial";                          // Шрифт
extern int    font_size = 10;                               // Размер шрифта
extern string NazvGold  = "XAUUSD";                         // Символ золота

//+------------------------------------------------------------------+
//| Главная                                                          |
//+------------------------------------------------------------------+
void start()
{
   double k = (WindowPriceMax() - WindowPriceMin()) / 20;
   double Gd = 1;                                                          // Коэффициент для золота
   if (Symbol() == NazvGold) Gd = 10;
   
   for(int i=WindowFirstVisibleBar(); i>=0; i--)
   {
      double rs = (NormalizeDouble(Open[i],Digits) - NormalizeDouble(Close[i],Digits))/Point/Gd;
      double Rast;
      
      if (rs < 0) 
         {
          Drawtext(i, High[i]+k/2, DoubleToStr(rs*(-1),0), ColorBull,"");  // бычья
          if (i >= 1)                                                      // для 0 свечи не считаем
            {
             Rast = (NormalizeDouble(Open[i-1],Digits) - NormalizeDouble(Low[i-1],Digits))/Point/Gd;
             if (ShowRast == true) Drawtext(i, High[i]+k, DoubleToStr(Rast,0), ColorRast," R");
            } 
         } 
      if (rs > 0) 
         {
          Drawtext(i, Low[i]-Point, DoubleToStr(rs,0), ColorBeer,"");      // медвежья
          if (i >= 1)                                                      // для 0 свечи не считаем
            {
             Rast = (NormalizeDouble(High[i-1],Digits) - NormalizeDouble(Open[i-1],Digits))/Point/Gd;
             if (ShowRast == true) Drawtext(i, Low[i]-k/2, DoubleToStr(Rast,0), ColorRast," R");
            } 
         } 
   }

}
//+------------------------------------------------------------------+
void deinit()
   {
     for(int i=ObjectsTotal()-1; i>-1; i--)                                // переберем все объекты 
      {   
        string Name = ObjectName(i);                                       // имя объекта
    
        if (StringSubstr(Name,0,4) == "CAN ")  ObjectDelete(Name);         // если имя содержит CAN - удаляем
      }  
   }

//+------------------------------------------------------------------+
//| Функция вывода инфы на экран                                     |
//+------------------------------------------------------------------+

void Drawtext(int n, double Y1, string l, color c, string Suff)
{
   string Name = "CAN " + TimeToStr(Time[n],TIME_DATE|TIME_MINUTES) + Suff;
   ObjectDelete (Name);
   ObjectCreate (Name, OBJ_TEXT,0,Time[n],Y1,0,0,0,0);
   ObjectSetText(Name, l,font_size,font_name);
   ObjectSet    (Name, OBJPROP_COLOR, c);
}

     