//====================================================================//
//|                                                                  |//
//====================================================================// 
#property copyright "Copyright 2013, www.trading-go.ru Project."
#property link      "http://www.trading-go.ru"
#property version   "2.00"
#property description "Индикатор отрисовывает три уровня  верхний , нижний, и временной."
#property description "Уровни редактируются на графике в ручном режиме."
#property description "В случае пересечения уровней ценой, терминал выводит сообщение на экран, и издает звуковой сигнал (Alert)."

#property description "Indicator draws three levels of upper, lower, and the time."
#property description "Levels are edited on the chart manually."
#property description "In the case of the level-crossing costs, terminal displays a message on screen and beep (Alert)."
//====================================================================//
//|                                                                  |//
//====================================================================// 
#property strict
#property indicator_chart_window
//====================================================================//
//|                                                                  |//
//====================================================================// 
enum fn{Off,On};
extern fn    LinesUR = true   ;  // Включение горизонтальных уровней
extern fn    LinesTM = true   ;  // Включение уровня времени
extern int   widch   = 2      ;  // Ширина линий
extern color LineUP  = clrBlue;  // Цвет верхнего уровня
extern color LineDW  = clrRed ;  // Цвет Нижнего  уровня
extern color LineTM  = clrGreen; // Цвет уровня времени
extern int   intervalSEK=10   ;  // Интервал звукового сигнала в секундах
//====================================================================//
//|                                                                  |//
//====================================================================// 
datetime tim=0; string typ="";
//====================================================================//
//|                                                                  |//
//====================================================================// 
int OnInit()
  {
   Comment("");
   return(INIT_SUCCEEDED);
  }
//====================================================================//
//|                                                                  |//
//====================================================================//   
void deinit()
  {
   ObjectDelete("up");
   ObjectDelete("dw");
   ObjectDelete("tm");
  }
//====================================================================//
//|                                                                  |//
//====================================================================// 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if (WindowExpertName()!="VR---ALERT"){Comment("Not the correct name of the system VR---ALERT");return 0;}
   if(LinesUR==true)
     {
      if(ObjectFind("up")==-1)
        {
         ObjectCreate("up",OBJ_HLINE,0,0,Close[1]+NormalizeDouble(300*Point,Digits));
         ObjectSet("up",OBJPROP_WIDTH,widch);
         ObjectSet("up",OBJPROP_COLOR,LineUP);
        }
      if(ObjectFind("dw")==-1)
        {
         ObjectCreate("dw",OBJ_HLINE,0,0,Close[1]-NormalizeDouble(300*Point,Digits));
         ObjectSet("dw",OBJPROP_WIDTH,widch);
         ObjectSet("dw",OBJPROP_COLOR,LineDW);
        }
     }
   if(LinesTM==true)
     {
      if(ObjectFind("tm")==-1)
        {
         ObjectCreate("tm",OBJ_VLINE,0,Time[0]+Period()*60*5,0);
         ObjectSet("tm",OBJPROP_WIDTH,widch);
         ObjectSet("tm",OBJPROP_COLOR,LineTM);
        }
     }
   if(Ask>ObjectGet("up",OBJPROP_PRICE1) && ObjectFind("up")==0)
     {
      typ=StringConcatenate(Symbol(),"   ","Цена выше заданного уровня !!! ",DoubleToStr(Ask,_Digits));
      alert(typ);
     }
   if(Bid<ObjectGet("dw",OBJPROP_PRICE1) && ObjectFind("dw")==0)
     {
      typ=StringConcatenate(Symbol(),"   ","Цена ниже заданного уровня !!! ",DoubleToStr(Bid,_Digits));
      alert(typ);
     }
   if(TimeCurrent()>=ObjectGet("tm",OBJPROP_TIME1) && ObjectFind("tm")==0)
     {
      typ=StringConcatenate(Symbol(),"   ","Текущее время больше заданного !!!");
      alert(typ);
     }
   return 0;
  }
//====================================================================//
//|                                                                  |//
//====================================================================// 
void alert(string txt)
  {
   if(TimeCurrent()>(tim+intervalSEK))
     {
      tim=TimeCurrent();
      Alert(txt);
     }
  }
//====================================================================//
//|                                                                  |//
//====================================================================// 

