Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 525

 
Vladislav Andruschenko:
Если вы указали rost без значения то оно по умолчанию false

Поясните, как это соотносится с моим сообщением ? А то я совсем уж ничего не понимаю.

 
novichok2018:

Поясните, как это соотносится с моим сообщением ? А то я совсем уж ничего не понимаю.

Вы спрашивали. Попадут ли все условия,  которые не равны true.  У вас только две проверки. Но если при проверке не будет true,  то проверка на false. Вторая строчка не имеет значения  потому, что у вас rost = bool и может принимать только 2 значения и по умолчанию оно равно false 
 
novichok2018:

Добрый день!

Вопрос по синтаксису мкл4: если я задаю флаг таким образом:

то условие if(!rost) поймает только условие для rost=false или все условия, не подпадающие под rost=true?

Спасибо.

только не забудьте инициализовать "rost". А то в вашем фрагменте если cl2=cl1 или cl2=op1 то "rost" фиг знает какой
 
Vladislav Andruschenko:
Вы спрашивали. Попадут ли все условия,  которые не равны true.  У вас только две проверки. Но если при проверке не будет true,  то проверка на false. Вторая строчка не имеет значения  потому, что у вас rost = bool и может принимать только 2 значения и по умолчанию оно равно false 

То есть, все условия, не подпадающие под условие true, автоматически будут false и значит,  запись if(!rost) захватит и условие (op1>cl2 && cl1<cl2) и условие (op1<cl2 && cl1>cl2).Так?

 
Maxim Kuznetsov:
только не забудьте инициализовать "rost". 

Как?

 
novichok2018:

То есть, все условия, не подпадающие под условие true, автоматически будут false и значит,  запись if(!rost) захватит и условие (op1>cl2 && cl1<cl2) и условие (op1<cl2 && cl1>cl2).Так?

Да. 
Если rost объявлен без значения, то на глобальном уровне он будет всегда равен последнему значению. 

Вы указали слишком мало данных и не полный код для того, чтобы дать конкретный ответ. 
 
novichok2018:

Как?

Bool rost=false;
 
Vladislav Andruschenko:
Bool rost=false;

Но я как раз и хочу избежать ситуации, когда !rost захватывает все условия для  rost  != true. Поэтому не стал инициировать на глобальном уровне Bool rost=false, а инициирую в OnTick() отдельно для false и отдельно для true. Возможно, для избежания путаницы, лучше задавать условия не if(rost) и if(!rost), а if(rost==true) и if(rost==false) ?

Или тогда вводить ещё один фла, ограничивающий условия !rost.

 
novichok2018:

Но я как раз и хочу избежать ситуации, когда !rost захватывает все условия для  rost  != true. Поэтому не стал инициировать на глобальном уровне Bool rost=false, а инициирую в OnTick() отдельно для false и отдельно для true. Возможно, для избежания путаницы, лучше задавать условия не if(rost) и if(!rost), а if(rost==true) и if(rost==false) ?

Абсолютно идентичные записи.

 
Artyom Trishkin:

Абсолютно идентичные записи.

Данная переписка как раз свидетельствует, что в моём случае if(!rost)  не то же самое, что if(rost==false). Потому что для false отдельное условие.

Причина обращения: