Скачать MetaTrader 5

Оператор while

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Igor Chemodanov
782
Igor Chemodanov 2010.11.21 20:21 

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

        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--;

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

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

Петр
6084
Петр 2010.11.21 20:30  

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

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

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

Igor Chemodanov
782
Igor Chemodanov 2010.11.21 20:34  

Выражение:

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

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

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

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

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

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

Vladyslav Goshkov
2153
Vladyslav Goshkov 2010.11.21 20:43  
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; Поправил код.

Alexander
2441
Alexander 2010.11.21 20:47  
icas:

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

Объясните отличие.
Vladyslav Goshkov
2153
Vladyslav Goshkov 2010.11.21 20:52  
Roger:
Объясните отличие.
Возможно имеется ввиду значение экстремума, а не минимальное значение на отрезке? Тогда условие в цикле неверно написано .....
Igor Chemodanov
782
Igor Chemodanov 2010.11.21 20:57  
VladislavVG:

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

Удачи.

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



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


Что в цикле неверно?
Vladyslav Goshkov
2153
Vladyslav Goshkov 2010.11.21 20:59  
icas:


Что в цикле неверно?
Вы не уточнили: Вам нужно значение экстремума или просто минимальное значение на отрезке.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий