Любые вопросы от ПРОФИ к СУПЕРПРОФИ - 1. - страница 31

 
valenok2003:

развейте сомнения

идентично следующему

или всё-таки правильно сначала выбрать ордер ?

Грамотнее 2-ой вариант.
 
спасибо
 
valenok2003:

развейте сомнения
идентично следующему
или всё-таки правильно сначала выбрать ордер ?

В С/С++ && = short-circuite and.
А это означает, что если первое условие не выполняется-
то во втором не должен запуститься ни один оператор.

Если бы в Mql были нормальные формулировки в учебнике,
а не вот такой огрызок https://book.mql4.com/ru/basics/expressions#Log
c чудной формулировкой "ИСТИНА(1), если истинны все значения",
то специфика была бы более выразительной.

Так что... если && работает правильно- то оба варианта совершенно идентичны.

 
jartmailru:


Так что... если && работает правильно- то оба варианта совершенно идентичны.


Если бы, да ка бы.

В MQL Логические выражения вычисляются полностью, т.е., к ним не применяется схема так называемой "короткой оценки".

 
Тогда 2й вариант не то что грамотнее, он единственно верный :-).
А документация... несколько странная.
 

В данном примере если ордер не выбран, то и нет смысла проверять время его закрытия. Таким образом первый случай тоже отработает правильно. Или ордер может"не выбраться" по каким-то другим причинам кроме его несуществования?

Однако в какой последовательности вычисляются логические выражения. То есть если мы всё втискиваем в одно выражение, то будет ли сначала выбран ордер, а уже потом проверено время его закрытия?

например так написать можно

if(OrderSelect(Ticket, SELECT_BY_TICKET) && OrderCloseTime() > 0){

а так нельзя

if(OrderCloseTime() > 0 && OrderSelect(Ticket, SELECT_BY_TICKET)){
 

И так нельзя и так нельзя. На С++ это UB, здесь -- крайне нежелательно по принципам нормального программирования.

Если раньше у меня были сомнения, то сейчас я БлюДримом пользоваться не буду точно на 100%. И другим не советую.

 
TheXpert:
И так нельзя и так нельзя. На С++ это UB, здесь -- крайне нежелательно по принципам нормального программирования.

спасибо сомнения развеяны
 
TheXpert:

Если раньше у меня были сомнения, то сейчас я БлюДримом пользоваться не буду точно на 100%. И другим не советую.

вот дался он тебе, завидуешь что ли?

можно подумать у тебя клинов не бывает

 

кстати уточню - это только для MQL4. в MQL5 работает короткая оценка
Причина обращения: