Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Управляй агентами в профиле. Это просто!
svoy
203
svoy 2014.04.29 16:44 

В новом МТ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
4191
Sergey Eremin 2014.04.29 17:14  

Добрый день!

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

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

if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES))

{

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

}

Warstein
803
Warstein 2014.04.29 20:01  
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
69078
Artyom Trishkin 2014.04.29 23:44  
rustein:

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

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

С OrderModify() так же

. ... Rick D. ... .
1078
. ... Rick D. ... . 2014.04.30 01:47  

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

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

Artyom Trishkin
69078
Artyom Trishkin 2014.04.30 03:47  
RickD:

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

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

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

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

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


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

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

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

#property strict

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

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

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

MetaQuotes
Админ
24412
Renat Fatkhullin 2014.05.01 09:21  

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

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

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