Не одинаково компилятся старые совы в 4хх и в 6хх терминале

dzennn2

Новичок форума
Всем известный сов паук.
Исходник откомпиленный в 646 работает не так, как тот же исходник откомпиленный в 451.

строка в 451
if (OrderType() == OP_BUY && Bid - OrderOpenPrice() >= MaxTP * gdBeN248 || Bid - OrderOpenPrice() <= (-MaxSL) * gdBeN248) return (1);


должна быть с приоритетными скобками вот так
if (OrderType() == OP_BUY && (Bid - OrderOpenPrice() >= MaxTP * gd_248 || Bid - OrderOpenPrice() <= (-MaxSL) * gd_248) ) return (1);

иначе пипец.

Вывод старые совы нельзя перекомпиливать новым терминалом.
 

AlexeyVik

Программист mql4 mql5
Вывод старые совы нельзя перекомпиливать новым терминалом.
НЕПРАВИЛЬНЫЙ вывод.
Надо чуток побольше читать об изменениях языка. В mql4 старых билдов условие проверялось полностью, а в новых были внесены изменения и при первом не выполненном условии проверка прекращается. Поэтому все условия имеющие || надо переписывать с учётом этих изменений, что ты и сделал. Но это не значит что нельзя перекомпиливать новым терминалом.
 
Последнее редактирование:

dzennn2

Новичок форума
НЕПРАВИЛЬНЫЙ вывод.
Надо чуток побольше читать об изменениях языка. В mql4 старых билдов условие проверялось полностью, а в новых были внесены изменения и при первом не выполненном условии проверка прекращается. Поэтому все условия имеющие || надо переписывать с учётом этих изменений, что ты и сделал. Но это не значит что нельзя перекомпиливать новым терминалом.

Вывод правильный для тех, кто не может сам исправить сову. Т.е. старую сову нельзя копировать только как исходник mq4. Надо копировать и ex4.

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