Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Не сделают как вам надо. До улучшения компилятора как раз и было так вам надо, но сейчас точно обратно не вернут. Новый способ даёт больше плюсов, чем минусов. Я бы наоборот голосовал за то, чтобы оставили так как сейчас. В вашем случае объявляйте переменную перед блоком. Другого выхода не вижу.
Я сам за то чтобы было как сейчас.
Но вот в таких слачаях не вижу смысла объявлять выше if
Вот такая ситуация. Обычно при расчётах индикаторов.
Тоесть нельзя использовать объявленные в if переменные вне действия if. if выступает как бы функцией.
Можно переделать чтобы вот в таком случае можно было объявлять в if и использовать вне if?
Проверять что в if.
А что мешает объявить переменную вне блока {...}, а присвоить значение переменной уже в блоке {...}?
Или проверку значения переменной RSI в том же блоке делать (и проверка if (UseRSI) уже сделана) ?
Типа if (UseRSI) { double RSI=iRSI(...); if (RSI>50) return; }
А если там в {...} другого кода нет, то вообще всё превращается if (UseRSI && iRSI(...)>50) return;
Оптимизатор кода проверяет условия слева направо и если UseRSI==false, то вызова iRSI() уже не присходит
(единственная адекватная причина такого упрямого цепляния за такой корявый код - съэкономить время на вызове функции)
PS: ну, или как подсказывают камрады - в начале кода убрать строчку #property strict, тогда компилятор будет работать в старом режиме (и 2 раза проверять if (UseRSI) )
А что мешает объявить переменную вне блока {...}, а присвоить значение переменной уже в блоке {...}?
Или проверку значения переменной RSI в том же блоке делать (и проверка if (UseRSI) уже сделана) ?
Типа if (UseRSI) { double RSI=iRSI(...); if (RSI>50) return; }
А если там в {...} другого кода нет, то вообще всё превращается if (UseRSI && iRSI(...)>50) return;
Оптимизатор кода проверяет условия слева направо и если UseRSI==false, то вызова iRSI() уже не присходит
(единственная адекватная причина такого упрямого цепляния за такой корявый код - съэкономить время на вызове функции)
PS: ну, или как подсказывают камрады - в начале кода убрать строчку #property strict, тогда компилятор будет работать в старом режиме (и 2 раза проверять if (UseRSI) )
А что мешает вдуматся про что я пишу?
Да уже все вдумались и даже ответили.
Теперь ваша очередь вдуматься в ответы.
А что мешает вдуматся про что я пишу?
Я вдумался и ответил.
Теперь Ваша очередь вдумываться.