Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
svoy
203
svoy  

В новом МТ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);

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

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

Sergey Eremin
4448
Sergey Eremin  

Добрый день!

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

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

if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))

{

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

}

Warstein
799
Warstein  
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;
Artyom Trishkin
Модератор
81448
Artyom Trishkin  
rustein:

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

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

С OrderModify() так же

. ... Rick D. ... .
1181
. ... Rick D. ... .  

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

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

Artyom Trishkin
Модератор
81448
Artyom Trishkin  
RickD:

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

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

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

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

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


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

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

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

#property strict

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

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

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

MetaQuotes
Админ
25284
Renat Fatkhullin  

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

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий