Бары экстремумов ZigZag - страница 3

 
aleger:

пояснить некоторые моменты будет не лишним

Ладно, пошутили и хватит.

Что не правильно может быть?
Одна версия считает правильно только верх, другая версия только низ.

 //считает правильно только верх и частично низ

  if(High[j+NumBar(j,1)]>Low[j+NumBar(j,2)]){
      Pik1=High[j+NumBar(j,1)]; 
      Pik2=Low[j+NumBar(j,2)];
      Up=true;
      Dn=false;
      } else {
   if(Low[j+NumBar(j,1)]<High[j+NumBar(j,2)]){
      Pik1=Low[j+NumBar(j,1)]; 
      Pik2=High[j+NumBar(j,2)];
      Dn=true;
      Up=false;}}
//считает правильно только низ

   if(High[j+NumBar(j,1)]>Low[j+NumBar(j,2)]){
      Pik1=High[up+NumBar(up,1)]; 
      Pik2=Low[up+NumBar(up,2)];
      Up=true;
      Dn=false;
      up++;
      } else {
   if(Low[j+NumBar(j,1)]<High[j+NumBar(j,2)]){
      Pik1=Low[dn+NumBar(dn,1)]; 
      Pik2=High[dn+NumBar(dn,2)];
      Dn=true;
      Up=false;
      dn++;}}
 

Нашёл причину не верных расчётов

Дело в том что я сравнивал экстремумы по барам хай лоу чтобы определиться где ближайший пик (верх-низ)
но есть такие моменты где отрезок экстремумов маленький и получается что 2>1 вместо 1>2


В итоге я сравнил цены экстремумов а не по барам (хай-лоу) и вопрос с правильным расчётом решился

   if(ZZprice(j,1)>ZZprice(j,2)){
      Pik1=High[j+NumBar(j,1)]; 
      Pik2=Low[j+NumBar(j,2)];
      Up=true;
      Dn=false;
      } else {
   if(ZZprice(j,1)<ZZprice(j,2)){
      Pik1=Low[j+NumBar(j,1)]; 
      Pik2=High[j+NumBar(j,2)];
      Dn=true;
      Up=false;}}

//+------------------------------------------------------------------+
//|  Возвращает цену экстремума по его номеру                        |
//+------------------------------------------------------------------+
double ZZprice(int n,int NumSign=0) {
  double arrow=0.0;
  int    bar,CountBars=iBars(Symbol(),0),num=0;
 
  for (bar=0; bar<CountBars; bar++) {
    arrow=IndBuffer[n+bar];
    if (arrow!=0.0 && arrow!=EMPTY_VALUE) {
      num++;
      if (num>NumSign) return(arrow);
    }
  }
  Print("Экстремум ",NumSign," не найден");
return(0);}


 
forex2030:

Ладно, пошутили и хватит.

Что не правильно может быть?
Одна версия считает правильно только верх, другая версия только низ.

Считают они может быть и правильно, но привязка выводимых значений к графику выполнена через ... даже в этом случае!

 
aleger:

Считают они может быть и правильно, но привязка выводимых значений к графику выполнена через ... даже в этом случае!

Всё в порядке и считает и рисует))
Спасибо за уделённое время.

Так и знал что взрыв мозга таится в какой-то мелочи!!
Ну главное что пришёл к нужному исходу))

 
forex2030:

Всё в порядке и считает и рисует))
Спасибо за уделённое время.

Так и знал что взрыв мозга таится в какой-то мелочи!!
Ну главное что пришёл к нужному исходу))

Вот и ладушки

Но место вывода данных на график желательно изменить - использовать не конец, а НАЧАЛО текущего тренда!
 
aleger:

Вот и ладушки

Но место вывода данных на график желательно изменить - использовать не конец, а НАЧАЛО текущего тренда!
а если по подробнее?
 
Renat Akhtyamov:
а если по подробнее?

Что именно? Может по скайпу пояснить? Во всем этом есть интересные моменты...

 
aleger:

Что именно? Может по скайпу пояснить? Во всем этом есть интересные моменты...

у мну нет скайпа
 
Renat Akhtyamov:
у мну нет скайпа

Верится с трудом, ну да ладно, забыли (за ненадобностью). 

 
aleger:

Верится с трудом, ну да ладно, забыли (за ненадобностью). 

чем форум не устраивает?
Причина обращения: