//+------------------------------------------------------------------+
//| EventofTime.mq4 |
//| Kuraev |
//| |
//| Ôóíêöèÿ äîðàáîòàíà äëÿ êîððåêòíîé ðàáîòû â òåñòåðå ñòðàòåãèé |
//+------------------------------------------------------------------+
#property copyright "Kuraev"
#property link "delfik71091@hotmail.com"
#property version "2.00"
#property strict
input int hh = 12; // ÷àñ ñîáûòèÿ Õ
input int mm = 0; // ìèíóòà ñîáûòèÿ Õ
input int ss = 0; // ñåêóíäà ñîáûòèÿ x
input int timeout = 60; // òàéìàóò äëÿ ïðåäâàðèòåëüíîãî âõîäà, â ñåê.
//+------------------------------------------------------------------+
void OnTick()
{
if(_SignalofTime(hh,mm,ss,timeout))
{
RefreshRates();
Alert(TimeToString(TimeCurrent(),TIME_DATE|TIME_MINUTES|TIME_SECONDS)," Òâîé ÷àñ íàñòàë! Ïåñåíêà ñïåòà!");
// çäåñü áëîê ñîáûòèÿ õ
}
}
//+------------------------------------------------------------------+
//| ÔÓÍÊÖÈß ÏÎËÓ×ÅÍÈß ÑÈÃÍÀËÀ  ÇÀÄÀÍÍÎÅ ÂÐÅÌß |
//+------------------------------------------------------------------+
bool _SignalofTime(int HH,int MM,int SS,int TIMEOUT)
{
if(HH>23 || HH<0 || MM>59 || MM<0 || SS>59 || SS<0 || TIMEOUT<0)
{
Print("Íåêîððåêòíûå ïàðàìåòðû âðåìåíè. Ðàáîòà ôóíêöèè ïðèîñòàíîâëåíà.");
return(false);
}
datetime timeX=iTime(Symbol(),PERIOD_D1,0)+HH*3600+MM*60+SS; // âðåìÿ X (ê òåêóùåé äàòå ïðèáàâëÿåì ÷àñû è ìèíóòû (ïåðåâîäÿ âñå â ñåêóíäû))
if(IsTesting())
{
static datetime t=0;
if(TimeCurrent()>=timeX && t<timeX)
{
if(t==0) { t=TimeCurrent(); return(false); }
else { t=TimeCurrent(); return(true); }
}
return(false);
}
if(TimeCurrent()>timeX || TimeCurrent()<timeX-TIMEOUT) return(false);
while(TimeCurrent()<timeX) // ... âõîäèì â öèêë, ÷òîáû íå ïðîïóñòèòü çàäàííîå âðåìÿ
Sleep(500); // çàñûïàåì íà 0,5 ñåêóíäû äî òåõ ïîð, ïîêà íå ñòóêíåò ðîâíî çàäàííîå âðåìÿ
return(true);
}
//+------------------------------------------------------------------+
Comments