Советники: Flat Channel - страница 2

 
refounder83:

Подскажите, а временной контроль, в данном советнике, не работает? в процедуре  TimeControl  есть строчки

т.е. если значение InpTimeControl равно false, то возвращает, процедуре  TimeControl,  все равно true?

Рекомендую использовать более продвинутую процедуру временного контроля:

Входные параметры для нее:

input bool     InpTimeControl    = true;     // Use time control
input uchar    InpStartHour      = 10;       // Start hour
input uchar    InpEndHour        = 15;       // End hour

Сама процедура (можно задавать как с утра до вечера, так и с вечера до утра - то есть с переходом через сутки)

//+------------------------------------------------------------------+
//| TimeControl                                                      |
//+------------------------------------------------------------------+
bool TimeControl(void)
  {
   if(!InpTimeControl)
      return(true);
   MqlDateTime STimeCurrent;
   datetime time_current=TimeCurrent();
   if(time_current==D'1970.01.01 00:00')
      return(false);
   TimeToStruct(time_current,STimeCurrent);
   if(InpStartHour<InpEndHour) // intraday time interval
     {
/*
Example:
input uchar    InpStartHour      = 5;        // Start hour
input uchar    InpEndHour        = 10;       // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  _  +  +  +  +  +  _  _  _  _  _  _
*/
      if(STimeCurrent.hour>=InpStartHour && STimeCurrent.hour<InpEndHour)
         return(true);
     }
   else if(InpStartHour>InpEndHour) // time interval with the transition in a day
     {
/*
Example:
input uchar    InpStartHour      = 10;       // Start hour
input uchar    InpEndHour        = 5;        // End hour
0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 18 19 20 21 22 23 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
_  _  _  _  _  _  _  _  _  _  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  _  _  _  _  _  +  +  +  +  +  +
*/
      if(STimeCurrent.hour>=InpStartHour || STimeCurrent.hour<InpEndHour)
         return(true);
     }
   else
      return(false);
//---
   return(false);
  }
 
И таки да, если параметр "Use time control" задан как "false" - то есть временной интервал вообще отключён, то процедура bool TimeControl(void) будет возвращать всегда "true". То есть просто не участвовать и не мешать процессу получения сигналов.