Глюки в MQL ?

 

Кто-нибудь сможет объяснить странно различный результат двух простых операций?

1.

for(int i = limit; i >= 2; i--)
{
Alert("Close [ ",i+1," ] = ",Close[i+1]," Close [ ",i+2," ] = ", Close[i+2],"Delta = ", Close[i+1] - Close[i+2]);
}

Это работает, как и должно.


2.

for(int i = limit; i >= 2; i--)
{
Alert("Close [ ",i+1," ] = ",Close[i+1]," Close [ ",i+2," ] = ", Close[i+2],"Delta = ", Close[i+1]/Close[i+2]);
}
Вообще не работает!
 
paralocus >>:

2.

for(int i = limit; i >= 2; i--)
{
Alert("Close [ ",i+1," ] = ",Close[i+1]," Close [ ",i+2," ] = ", Close[i+2],"Delta = ", Close[i+1]/Close[i+2]);
}
Вообще не работает!

Одно предположение деление на нуль. Смотрите логи.

 
paralocus >>:
Вообще не работает!

И в логе ругается "Division by zero"?

 
TheXpert >>:

И в логе ругается "Division by zero"?

Да, нашел там ругательство. Но откуда 0 в клозах?

 
paralocus >>:

Да, нашел там ругательство. Но откуда 0 в клозах?

ERR_HISTORY_WILL_UPDATED -- возможно, необходимо обрабатывать эту ошибку.

 
TheXpert >>:

ERR_HISTORY_WILL_UPDATED -- возможно, необходимо обрабатывать эту ошибку.

Можно об этом чуть подробнее?

 
paralocus >>:

Можно об этом чуть подробнее?

Тут

 

а чему равен limit?

если limit>Bars-2, то в первом же цикле Close[i+2] Вам отдаст 0. Вот оттуда и "0 в клозах", что Вы вышли за пределы массива

 
TheXpert >>:

Тут

Спасибо, читаю, однако вот свежие глюки:

это работает без ошибок!

Ind1[i] = (Close[i] - Close[i+1])/Close[i+1];


А это не работает:

Ind1[i] = (Close[i+1] - Close[i+2])/Close[i+2]);
 
stringo >>:

а чему равен limit?

если limit>Bars-2, то в первом же цикле Close[i+2] Вам отдаст 0. Вот оттуда и "0 в клозах", что Вы вышли за пределы массива

А так надо limit сместить вправо? Сейчас попробую.

 
stringo >>:

а чему равен limit?

если limit>Bars-2, то в первом же цикле Close[i+2] Вам отдаст 0. Вот оттуда и "0 в клозах", что Вы вышли за пределы массива

Ошибку понял, спасибо!

Причина обращения: