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

 
Ramiz Mavludov:

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

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


для новичка, который начал изучать программирование с mql4, это неизвестно. 
в справке такого нет)

https://docs.mql4.com/ru/basis/operators/if

Условный оператор if-else - Операторы - Основы языка - Справочник MQL4
Условный оператор if-else - Операторы - Основы языка - Справочник MQL4
  • docs.mql4.com
Условный оператор if-else - Операторы - Основы языка - Справочник MQL4
 

Я бы написал функцию, вычисляющую время в секундах от начала суток. Она бы подсчитывала и возвращала значение (int) выражения

3600*Hour()+60*Minute()+Seconds()

Например, она называется DaySek. Потом задал бы константу int MaxDelta - допустимую погрешность отличия момента в секундах от границы часа.

Еще функция, возвращает 1 только в случае, когда разница x и y меньше MaxDelta, в остальных случаях возвращает ноль:

int Near (int x, int y) {
if (MathAbs (x - y) < MaxDelta) return(1); else return(0);}

Тогда требуемая проверка с заданной точностью выглядела бы так:

int DS=DaySek();
if ((Near (DS, 7*3600)>0) || (Near (DS, 8*3600)>0) || (Near (DS, 9*3600)>0))

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