//+------------------------------------------------------------------+ //| _test.mq5 | //+------------------------------------------------------------------+ #property indicator_chart_window #property indicator_buffers 0 #property indicator_plots 0 input uint StartHour = 0; // Start hour input uint StartMinute = 0; // Start minute input uint StartSecond = 0; // Start second input uint EndHour = 24; // Ending hour input uint EndMinute = 0; // Ending minute input uint EndSecond = 0; // Ending second //------------------------------------------------------------------ // //------------------------------------------------------------------ // // // // // int OnInit() { return(0); } // // // // // 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[]) { // // // // // Comment(checkTimeLimits(StartHour,StartMinute,StartSecond,EndHour,EndMinute,EndSecond,TimeCurrent())); return(rates_total); } 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)); }