![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
У вас "possible use of uninitialized variable 'local_low' "
А что выдаётся если
Перечитайте мои ответы с точки зрения руководителя софтверной компании, который довел до рынка много программных проектов.
Иначе, оставшись на уровне "любого программиста", так и не поймете в чем ошибка.
:) Поскольку я никогда не стану руководителем софтверной компании, то навсегда останусь на уровне "любого программиста" (т.е. программиста-любителя, в моём понимании).
...А поскольку программист-любитель так и не получил логичного описания ошибки, то он приходит к выводу, что либо в его кусочке кода попросту нет ошибки, либо ошибка настолько мудрённая, что никто не может её описать языком логики. На этом можно считать, что обе стороны друг друга поняли, вопрос исчерпан.
Если переменная инициализирована хоть чем-нибудь, то предупреждение исчезает. Но, как Вы сами можете видеть, в данном куске кода инициализация переменной local_low является излишней. Поэтому предупреждение совершенно не мешает жить.
... компилатор надо будеть максимално "дуракоустойчивы".
... не пишите if (a==true) ...
Но из-за использования bool-переменной interrupcion в строке 9 сразу после инициализации переменной local_low в строке 8 получается, что в строке 15 переменная local_low будет гарантированно инициализированной. Поэтому на текущий момент предупреждение "possible use of uninitialized variable 'local_low' " означает не "гарантированное", а всего лишь возможное наличие ветки прохода, при котором переменная не инициализирована.
Если отправить запрос на модификацию позиции с прежними стопами, то получим ошибку. А если отправить запрос на модификацию отложенного ордера с прежними параметрами, то запрос будет выполнен. Это так задумано и параметры не надо проверять на изменение ?
Зачем забивать сервер лишними запросами, например, в случае ошибке в эксперте или неправильной логики его работы ?
В Вашем примере, если Ac-k=0 , то оператор for не выполнится ни разу и local_low окажется гарантировано неинициализированной. Или не так ?
Совершенно верно. Если Ac-k<=1, то оператор for не должен выполниться ни разу, и переменная local_low останется гарантированно неинициализированной. Но так как при этом bool-переменная interrupcion останется со значением false (строка 3), то в силу условия из строки 13 неинициализированная переменная local_low никогда не будет (не должна) использоваться при расчётах. В частности, не должно вычисляться выражение с переменной local_low из строки 15 [если же, конечно, оператор if будет работать именно так, как указано в справке:) ].
Иными словами, если переменная local_low и окажется гарантированно неинициализированной, то она также гарантированно не будет (не должна) использоваться при расчётах.