Оператор while

 

В индикаторе ищу минимум:

        FFLow=1000000; num_low=r+1;
        while (FFLow > iLow(Symbol(),0,num_low)) {FFLow = iLow(Symbol(),0,num_low); num_low++;}
        num_low--;

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

Правильнее искать так:

        FFLow=1000000; num_low=r+1;
        while (FFLow >= iLow(Symbol(),0,num_low)) {FFLow = iLow(Symbol(),0,num_low); num_low++;}
        num_low--;

- но такое выражение вешает терминал.

Может кто-нибудь что-то посоветует? Заранее спасибо!

 

Зачем вообще такая конструкция? Есть iLowest, есть ArrayMinimum.

И зачем iLow, а не просто Low, если берете текущий символ???

Сумбур какой-то.

 

Выражение:

        FFLow=1000000;
        for (num_low = r+1; FFLow >= iLow(Symbol(),0,num_low); num_low++) FFLow = iLow(Symbol(),0,num_low);
        num_low--;
тоже вешает терминал.
 
Тебе ж сказали - это все танцы с бубном. Используй iLowest.
 
Svinozavr:

Зачем вообще такая конструкция? Есть iLowest, есть ArrayMinimum.

И зачем iLow, а не просто Low, если берете текущий символ???

Сумбур какой-то.

Нужен ближайший минимум, а не минимум на интервале.

iLow используется для того, чтобы было проще в дальнейшем использовать в мультивалютниках. 

 
icas:

В индикаторе ищу минимум:

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

Правильнее искать так:

- но такое выражение вешает терминал.

Может кто-нибудь что-то посоветует? Заранее спасибо!

Правильней так:

FFLow=1000000; 
num_low=  -1;
int ib = r+1;
int barsCnt = iBars(Symbol());
while (ib < barsCnt) 
{
    double iL = iLow(Symbol(),0,ib);
    if(FFLow>iL)
    {
        FFLow =  iL;
        num_low=ib;
        break;
    }
    ib++;
}

Удачи.

ЗЫ Если нужно ближайшее минимальное значение, то под условный оператор добавьте break; Поправил код.

 
icas:

Нужен ближайший минимум, а не минимум на интервале.

Объясните отличие.
 
Roger:
Объясните отличие.
Возможно имеется ввиду значение экстремума, а не минимальное значение на отрезке? Тогда условие в цикле неверно написано .....
 
VladislavVG:

Правильней так:

Удачи.

ЗЫ Если нужно ближайшее минимальное значение, то под условный оператор добавьте break; Поправил код.



Зачем так мудрено, если можно одной строкой.
 
VladislavVG:
Возможно имеется ввиду значение экстремума, а не минимальное значение на отрезке? Тогда условие в цикле неверно написано .....


Что в цикле неверно?
 
icas:


Что в цикле неверно?
Вы не уточнили: Вам нужно значение экстремума или просто минимальное значение на отрезке.
Причина обращения: