//+------------------------------------------------------------------+
//| 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;
}
}
//+------------------------------------------------------------------+
Comments