Search code examples
mql4mql5

with using a timefilter, i get the following error: '}' - not all control paths return a value


I get the error: '}' - not all control paths return a value. I am using:

 int StartHour = 8;
 int EndHour = 20;

And this is the code I am using:

bool TimeFilter()
    {
    EndHour1=EndHour+GMTOffset;
    StartHour1=StartHour+GMTOffset;
    if ((StartHour+GMTOffset)<0)  {StartHour1=StartHour+GMTOffset+24;} 
    if ((EndHour+GMTOffset)<0)    {EndHour1=EndHour+GMTOffset+24;}     
    if ((StartHour+GMTOffset)>24) {StartHour1=StartHour+GMTOffset-24;} 
    if ((EndHour+GMTOffset)>24)   {EndHour1=EndHour+GMTOffset-24;}    
    

if (Use_TimeFilter==false) {comment1=""; return (true);}
      else 

if (StartHour1<EndHour1)
       {
         if (Hour()>=StartHour1 && Hour()<EndHour1)
         {
         comment1=""; 
         return (true);
         } 
         
         comment1="WARNING: Trading diluar Time Filter, No Open Position\n"; 
         return (false);
       }
 
     else
     
if (StartHour1>EndHour1)

       {
         if (Hour()>=StartHour1 || Hour()<EndHour1)
         {
         comment1=""; 
         return (true);
         } 
         comment1="WARNING: Trading diluar Time Filter, No Open Position\n"; 
         return (false);
       }

}

What is wrong and how to fix this so i don't receive this error anymore. Thanks in advance


Solution

  • You are using multiple nested if else statements and there exists a possible scenario which would result in all the if statements not being fulfilled (ie Use_TimeFilter=True and StartHour1==EndHour1). You therefore need to simply add a final return(false) statement in your code.

    bool TimeFilter()
    {
       EndHour1=EndHour+GMTOffset;
       StartHour1=StartHour+GMTOffset;
       if((StartHour+GMTOffset)<0)  {StartHour1=StartHour+GMTOffset+24;} 
       if((EndHour+GMTOffset)<0)    {EndHour1=EndHour+GMTOffset+24;}     
       if((StartHour+GMTOffset)>24) {StartHour1=StartHour+GMTOffset-24;} 
       if((EndHour+GMTOffset)>24)   {EndHour1=EndHour+GMTOffset-24;}    
    
       if(!Use_TimeFilter) {comment1=""; return (true);}
       else if(StartHour1<EndHour1)
       {
          if(Hour()>=StartHour1 && Hour()<EndHour1)
          {
             comment1=""; 
          return(true);
          }
          comment1="WARNING: Trading diluar Time Filter, No Open Position\n"; 
       return(false);
       }
       else if(StartHour1>EndHour1)
       {
          if (Hour()>=StartHour1 || Hour()<EndHour1)
          {
             comment1=""; 
          return (true);
          } 
          comment1="WARNING: Trading diluar Time Filter, No Open Position\n"; 
       return (false);
       }
    return(false);
    }