//+------------------------------------------------------------------+
//|                                                  CloseCandle.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

input int              FontSize     = 12;                   // Размер шрифта
input string           FontName     = "Arial";              // Наименование шрифта
input color            ClrDelta     = Red;                  // Цвет метки - время до закрытия свечи
input color            ClrClose     = Yellow;               // Цвет метки - время закрытия свечи
input color            ClrTime      = White;                // Цвет метки - текущее время
input int              SecondsSound = 20;                   // За сколько секунд шлем оповещение
input ENUM_BASE_CORNER Corner       = CORNER_RIGHT_UPPER;   // Угол для вывода информации
input bool             AlertOn      = false;                // Включение оповещения

bool one=true;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   EventSetTimer(1);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Comment("");
   ObjectDelete(0,"TimeLabel1");
   ObjectDelete(0,"TimeLabel2");
   ObjectDelete(0,"TimeLabel3");
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//|  Установка меток                                                 |
//+------------------------------------------------------------------+
void PutLabel(string name,string text,int x,int y,color clr)
  {
   ObjectDelete(name);
//--- создадим текстовую метку
   ObjectCreate(0,name,OBJ_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,Corner);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,FontName);
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,FontSize);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
void OnTimer()
  {
// Расчет времени до закрытия свечи в секундах
   int delta=(int)(Time[0]+PeriodSeconds()-TimeCurrent());
// Mетки в правой половине графика
   if(Corner==CORNER_RIGHT_UPPER || Corner==CORNER_RIGHT_LOWER)
     {
      PutLabel("TimeLabel1","Время до закрытия свечи: "+TimeToString(Time[0]+Period()*60-TimeCurrent(),TIME_SECONDS),350,30,ClrDelta);
      PutLabel("TimeLabel2","Время закрытия свечи: "+TimeToString(Time[0]+Period()*60,TIME_SECONDS),320,55,ClrClose);
      PutLabel("TimeLabel3","Текущее Время: "+TimeToString(TimeCurrent(),TIME_SECONDS),260,80,ClrTime);
     }
   else // Mетки в левой половине графика
     {
      PutLabel("TimeLabel1","Время до закрытия свечи: "+TimeToString(Time[0]+Period()*60-TimeCurrent(),TIME_SECONDS),20,30,ClrDelta);
      PutLabel("TimeLabel2","Время закрытия свечи: "+TimeToString(Time[0]+Period()*60,TIME_SECONDS),20,55,ClrClose);
      PutLabel("TimeLabel3","Текущее Время: "+TimeToString(TimeCurrent(),TIME_SECONDS),20,80,ClrTime);
     }

   if(delta>SecondsSound) one=true;
// Оповещения при включенной опции AlertOn
   if(delta<=SecondsSound && one && AlertOn)
     {
      PlaySound("News.wav");
      Alert("Меньше "+(string)SecondsSound+" секунд осталось до закрытия свечи!");
      SendNotification("Меньше "+(string)SecondsSound+" секунд осталось до закрытия свечи!");
      SendMail("Сигнал индикатора","Меньше "+(string)SecondsSound+" секунд осталось до закрытия свечи!");
      one=false;
     }
  }
//+------------------------------------------------------------------+
