undeclared identifier (можно поправить?)

 

Вот такая ситуация. Обычно при расчётах индикаторов.

if(use_rsi)
{
double rsi=iRSI(Symbol(),0,14,0,0);
}

if(use_rsi && rsi>50)
return;

Тоесть нельзя использовать объявленные в if переменные вне действия if. if выступает как бы функцией.

Можно переделать чтобы вот в таком случае можно было объявлять в if и использовать вне if?

Проверять что в if.

 
eevviill:

Вот такая ситуация. Обычно при расчётах индикаторов.

Тоесть нельзя использовать объявленные в if переменные вне действия if. if выступает как бы функцией.

Можно переделать чтобы вот в таком случае можно было объявлять в if и использовать вне if?

Проверять что в if.


Объявленную в блоке переменную нельзя использовать за пределами блока.

Блок, это то, что заключено в {}

 
Убери #property strict
 
eevviill:

Вот такая ситуация. Обычно при расчётах индикаторов.

Тоесть нельзя использовать объявленные в if переменные вне действия if. if выступает как бы функцией.

Можно переделать чтобы вот в таком случае можно было объявлять в if и использовать вне if?

Проверять что в if.

double rsi;
if(use_rsi)
 {
  rsi=iRSI(Symbol(),0,14,0,0);
 }

if(use_rsi && rsi>50)
 return;
 
Contender:


Объявленную в блоке переменную нельзя использовать за пределами блока.

Блок, это то, что заключено в {}


Зачем мне писать то что я написал?

Я всё понимаю. Я прошу разработчиков если это возможно сделать как я прошу.

 
eevviill:


Зачем мне писать то что я написал?

Я всё понимаю. Я прошу разработчиков если это возможно сделать как я прошу.


То, что переменная уничтожается и за пределами блока не видна - правильно.
 
Contender:

То, что переменная уничтожается и за пределами блока не видна - правильно.

А в моём примере?
 
eevviill:

А в моём примере?


В вашем примере переменная rsi объявлена в блоке, за пределами этого блока её нет. И это правильно (что её нет за пределами блока). Если вам нужна переменная вне блока, так объявите её вне бока.

 
Contender:


В вашем примере переменная rsi объявлена в блоке, за пределами этого блока её нет. И это правильно (что её нет за пределами блока). Если вам нужна переменная вне блока, так объявите её вне бока.


Неа. В моём примере как раз всё правильно. Вернее прошу чтобы так сделали для таких случаев.
 
eevviill:

Неа. В моём примере как раз всё правильно. Вернее прошу чтобы так сделали для таких случаев.


Если вы считаете, что это ошибка языка, то напишите в сервисдеск (он на форуме по MQL5).

Но это не ошибка.

 
eevviill:

Неа. В моём примере как раз всё правильно. Вернее прошу чтобы так сделали для таких случаев.
Не сделают как вам надо. До улучшения компилятора как раз и было так вам надо, но сейчас точно обратно не вернут. Новый способ даёт больше плюсов, чем минусов. Я бы наоборот голосовал за то, чтобы оставили так как сейчас. В вашем случае объявляйте переменную перед блоком. Другого выхода не вижу.