Вопрос о ZigZag. - страница 2

 
Уважаемый Rosh (или кто еще сможет ответить)

Очень полезно было прочитать Ваши объяснения индикатора ZigZag по ссылке. И сейчас бы я уже успокоился, если бы у меня получилось правильно перевести код этого индикатора из MQL в WealthLab, однако, работа еще не завершена.

При попытке уловить алгоритм ЗигЗага, как раз ту часть, которую Вы объясняли на форуме, появился следующий вопрос.

 //--- low
    val=Low[Lowest(MODE_LOW,shift+depth-1,depth)];
    if val==lastlow then val=0  // Нового Low нет, поэтому val = 0
    else 
      Begin                             //Появилось новое Low, открытие цикла *1*
       lastlow=val; 
       if (Low[shift]-val)>(deviation*Point) then val=0 //Если текущее Low выше val больше, чем на Deviation, тогда val = 0
       else
         Begin                           //Если текущее Low в пределах Deviation от val, то открытие цикла *2*
          for back=1 to backstep
            Begin                        //Убираем Low на предыдущих back барах, выше val, открытие цикла *3*
             res=GetIndexValue(shift+back);
             if res!=0 and res>val then SetIndexValue(shift+back,0); 
            end;                        //Закрытие цикла *3*
         end;                           //Закрытие цикла *2*
      end;                              //Закрытие цикла *1*
    SetIndexValue(shift,val);



Из всего этого мне непонятно, а разве внутри основного цикла *1* текущий Low и val не должны совпадать? Ведь val - это минимальное Low за depth баров назад, включая текущий.

Из Вашего объяснения на форуме:
"Третье: у нас появилось новое донышко, запомним его на будущее в lastlow
Четвертое: если текущее Low выше val (самого низкого донышка на depth последних барах) на deviation пунктов, тогда текущее Low однозначно вылетает из кандидатов на новое донышко и опять".

Вроде и новое донышко появилось (то есть, оно должно теперь совпадать с минимальным val на depth баров), и в то же самое время допускаем, что оно выше этого самого минимального val.

Плиз, объясните :)

Спасибо.

 
Вряд ли я Вам помогу, я завяз в свингах Ганна и у меня голова уже опухла :)
Попробуйте сами, и если не получится, через недельку я попробую вникнуть заново.(Я убил тогда несколько дней на отлов ошибки, а для этого мне нужно было вникнуть в алгоритм)
 
О, свинги Ганна... Как это романтично... ;)

В алгоритме я разберусь. Просто параллельно приходится вспоминать MQL, а я в его кодах уже больше года не копался :)

Вы уже мне очень помогли. Большое спасибо!
 
Так, вроде с этим вопросом разобрался.

Процитирую Rosh-а:

Третье:
 else 
      { 
       lastlow=val;  


у нас появилось новое донышко, запомним его на будущее в lastlow".



Вначале я подумал, что появление нового донышка - это обязательно установление нового лоу, но после того, как визуализировал это дело на графике, понял, что новое донышко может быть и выше предыдущего в связи с тем, что сдвигается временное окно вправо, и на растущем тренде практически с каждым баром мы будем получать новое минимальное low, расположенное выше предыдущего.

Будем копать код дальше :)
Причина обращения: