Code: Select all
bool checkTimeLimits(uint startHour, uint endHour, datetime timeToCheck) { return(checkTimeLimits(startHour,0,0,endHour,0,0,timeToCheck)); }
bool checkTimeLimits(uint startHour, uint startMinute, uint endHour, uint endMinute, datetime timeToCheck) { return(checkTimeLimits(startHour,startMinute,0,endHour,endMinute,0,timeToCheck)); }
bool checkTimeLimits(uint startHour, uint startMinute, uint startSecond, uint endHour, uint endMinute, uint endSecond, datetime timeToCheck)
{
bool answer = false;
MqlDateTime tempTime; TimeToStruct(timeToCheck,tempTime);
datetime startTime,endTime,checkTime;
startTime = _ctMinMax(startHour,0,24) *3600+_ctMinMax(startMinute,0,60) *60+_ctMinMax(startSecond,0,60);
endTime = _ctMinMax(endHour,0,24) *3600+_ctMinMax(endMinute,0,60) *60+_ctMinMax(endSecond,0,60);
checkTime = _ctMinMax(tempTime.hour,0,24)*3600+_ctMinMax(tempTime.min,0,60)*60+_ctMinMax(tempTime.sec,0,60);
if (startTime>endTime)
answer = (checkTime>=startTime || checkTime<=endTime);
else answer = (checkTime>=startTime && checkTime<=endTime);
return(answer);
}
uint _ctMinMax(uint value, uint min, uint max) { return((uint)MathMax(MathMin(value,max),min)); }