Как в одном операторе if объединить "И" и "ИЛИ"?

 
Например, нужно чтобы действие выполнялось и в 7 часов и в 8 и в 9.

Что-то типа этого, но это не работает
  if  (Hour()==7 && Minute()==0 && Seconds()==0   ||    Hour()==8 && Minute()==0 && Seconds()==0  ||  Hour()==9 && Minute()==0 && Seconds()==0)   
    
       {       
       

       } 

Может взять в скобки каждую часть.
  if  ( (Hour()==7 && Minute()==0 && Seconds()==0)   ||    (Hour()==8 && Minute()==0 && Seconds()==0)  ||  (Hour()==9 && Minute()==0 && Seconds()==0) )   
    
       {       
       

       } 
Так тоже не катит.

Как его правильно прописать?

(про то, что действие будет выполняться пару раз на протяжении одной секунды, или вообще может не выполнится, если на протяжении этой секунды не будет тика - не писать. я это знаю) )
 
Максим Дмитриев:
Например, нужно чтобы действие выполнялось и в 7 часов и в 8 и в 9.

Что-то типа этого, но это не работает

Может взять в скобки каждую часть.
Так тоже не катит.

Как его правильно прописать?

(про то, что действие будет выполняться пару раз на протяжении одной секунды, или вообще может не выполнится, если на протяжении этой секунды не будет тика - не писать. я это знаю) )
if(Minute()==0 && Seconds()==0 && (Hour()==7 || Hour()==8 || Hour()==9))   
  {      
  }  
Так пробовали?
 
Artyom Trishkin:
Так пробовали?

спасибо. значит я правильно догадался что нужно взять в скобки.

прикол. алерты вылазят с задержкой в 10 секунд, хоть время в алертах пишет то, что нужно)

 

Так не будет работать. Не дождетесь, что бы и минуты и секунды равнялись 0.

Вот здесь функция. 

 

Artyom Trishkin:
Так пробовали?

if(Minute()==0 && Seconds()==0 && (Hour()==7 || Hour()==8 || Hour()==9))   
  {      
  }  



если работать по тикам, то такая ситуация никогда не наступит или наступит с ничтожной вероятностью


Максим Дмитриев:
Например, нужно чтобы действие выполнялось и в 7 часов и в 8 и в 9.
какую задачу вы решаете? надо отталкиваться от решаемой задачи
 
Dmitry Fedoseev:
Andrey F. Zelinsky:
уже сделал вот так:
int b=-1;


void OnTick()
{


   if  (  b==Minute() )
   return;
   b=Minute();


  if  ( (Hour()==7 && Minute()==0 )   ||    (Hour()==8 && Minute()==0 )  ||  (Hour()==9 && Minute()==0)  )   
    
       {

       } 



}
короче, задача была, чтобы код выполнился один раз в 7 часов, в 8 часов и в 9 часов.
 
Максим Дмитриев:
уже сделал вот так:
короче, задача была, чтобы код выполнился один раз в 7 часов, в 8 часов и в 9 часов.

что секунды убрали -- это правильно.

но если отработка нужна по тикам, то такое условие будет пропускать время -- не всегда тик приходит в 0 минут.

даже в тестере не всегда -- а уж на реальном потоке и подавно.

 
Andrey F. Zelinsky:

но если отработка нужна по тикам, то такое условие будет пропускать время -- не всегда тик приходит в 0 минут.


лучше юзать OnTimer() ?

 
Максим Дмитриев:
Например, нужно чтобы действие выполнялось и в 7 часов и в 8 и в 9.

Что-то типа этого, но это не работает

Может взять в скобки каждую часть.
Так тоже не катит.

Как его правильно прописать?

(про то, что действие будет выполняться пару раз на протяжении одной секунды, или вообще может не выполнится, если на протяжении этой секунды не будет тика - не писать. я это знаю) )

каждое ИЛИ надо брать в скобки

if ( (Bid>Open[1]) || (Bid>Close[1]) )

 
Максим Дмитриев:

лучше юзать OnTimer() ?


зачем? долбать терминал каждую секунду? если нужна отработка по тикам?

всё надо делать в меру и сообразно решаемой задаче.

в вашем случае -- надо знать для чего эта конструкция -- тогда можно будет понимать в какую сторону эту конструкцию изменить, чтобы работало как надо по задаче.

 
Ramiz Mavludov:

каждое ИЛИ надо брать в скобки

if ( (Bid>Open[1]) || (Bid>Close[1]) )


нет

см. https://www.mql5.com/ru/docs/basis/operations/rules

Документация по MQL5: Основы языка / Операции и выражения / Приоритеты и порядок операций
Документация по MQL5: Основы языка / Операции и выражения / Приоритеты и порядок операций
  • www.mql5.com
Основы языка / Операции и выражения / Приоритеты и порядок операций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Причина обращения: