Предуприждения Компилятора в кодах советников после обновления терминала до версии - Build 625.

 

В новом МТ4 Version : 4,00 Build 625 программные коды сохранили свою рабочую среду, но "Компилятор" выдаёт предупреждения о некорректности некоторых строк исходного кода в советниках.

Самые часто встречающиеся предупреждения : - return value of 'OrderSelect' should be checked MACD Sample.mq4 92 7 на строку в коде -

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

-return value of 'OrderClose' should be checked MACD Sample.mq4 104 16 на строку в коде -

 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet);

-return value of 'OrderModify' should be checked MACD Sample.mq4 115 22 на строку в коде -

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

и тому подобное...

Обращаюсь к знатокам за помощью, как это можно исправить? В чём корень недоразумения? Что нужно добавить в код или изменить?

 

Добрый день!

Теперь рекомендуется возвращаемые значения данных функций проверять.

К примеру, так:

if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))

{

//действия нашего кода, если функция вернула true

}

 
svoy:

В новом МТ4 Version : 4,00 Build 625 программные коды сохранили свою рабочую среду, но "Компилятор" выдаёт предупреждения о некорректности некоторых строк исходного кода в советниках.

Самые часто встречающиеся предупреждения : - return value of 'OrderSelect' should be checked MACD Sample.mq4 92 7 на строку в коде -

-return value of 'OrderClose' should be checked MACD Sample.mq4 104 16 на строку в коде -

-return value of 'OrderModify' should be checked MACD Sample.mq4 115 22 на строку в коде -

и тому подобное...

Обращаюсь к знатокам за помощью, как это можно исправить? В чём корень недоразумения? Что нужно добавить в код или изменить?

if(!(OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES))) continue;
 
rustein:

if(OrderClose()) { // код, если ордер закрыт}

else {// код обработки ошибки закрытия}

С OrderModify() так же

 

Считаю - лишнее это делат ьв обязательном порядке.

Через какой нибудь #property активировать эти ворнинги - было бы правильней.

 
RickD:

Считаю - лишнее это делат ьв обязательном порядке.

Через какой нибудь #property активировать эти ворнинги - было бы правильней.

Это правильное решение. А то наплодили говнокода в кодобазе. А народ потом возмущается. Нужно приучать кодеров писать правильно, а не абы-как, раз сами не желают нормальные коды делать.
 
RickD:

Считаю - лишнее это делат ьв обязательном порядке.

Через какой нибудь #property активировать эти ворнинги - было бы правильней.


А #property strict разве не для этого существует?
 
artmedia70:
Это правильное решение. А то наплодили говнокода в кодобазе. А народ потом возмущается. Нужно приучать кодеров писать правильно, а не абы-как, раз сами не желают нормальные коды делать.

Нет, неправильное. Компилятор не имеет право мне указывать КАК мне распоряжаться результатами работы функции. Это не ЕГО ДЕЛО!
 
C-4:
Нет, неправильное. Компилятор не имеет право мне указывать КАК мне распоряжаться результатами работы функции. Это не ЕГО ДЕЛО!

Ну тогда просто удали всего одну строку

#property strict

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

В конце концов ещё можно найти старый компилятор, пиши и не возмущайся. В чём проблема-то. Откомпилированный код в старом МЕ отлично работает в новом МТ

О чём споришь-то?

 

Компилятор не только имеет право, а категорически обязан контролировать качество кода и прямо работать над максимально полным обучением и контролем программистов.

Сейчас 2014 год, а не 2000. Компиляторы обязаны думать в 10 раз глубже, чем это делают сейчас.

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