Помогите определить вторую вершину

 

Уважаемые программисты, можете скинуть наглядный код того как узнать значение 2го хая, вершины ZigZag. Не второго пика, а 2й вершины?!

 

 
Gruler:

Уважаемые программисты, можете скинуть наглядный код того как узнать значение 2го хая, вершины ZigZag. Не второго экстремума, а 2й вершины?!

 

А вы опишите, по каким признакам идентифицируете эту вторую вершину, тогда может кто-нибудь код и подкинет.
 
khorosh:
А вы опишите, по каким признакам идентифицируете эту вторую вершину, тогда может кто-нибудь код и подкинет.
Как бы тривиально не звучало)), но вторая вершина идентифицируется тем, что она выше первой, хоть на чуток, а между ними вершины, меньше которые - пропускаем. Т.е. я думаю, что есть какой то счетчит по барам, с массивами, который сравнивает значение хаев их, на перегибах зигзага, бар первой вершины с барами последующих, и если находит подходящее  значение, что хай бара с последующей вершиной больше бара первой вершины, тогда условие выполнено, узнаем это значение.
 

 Находит хай - лоу вчера и позавчера

Файлы:
abl.mq4  6 kb
 
poruchik:

 Находит хай - лоу вчера и позавчера

 

Спасибо, но мне это не нужно для обнаружения хай и лоу. Это нужно для выставления стоп лосса за вторую вершинку или низинку зигзага(смотря какой тип ордера), возможно на М1-М5-М15 Тф.
 
.
 

92 и 93 это пики обычные,94 и 95 это вершины.

Разобратся сложно, но работает:)))))))) 

//////////////////////////////////////////////main up dot
   int find_one_up;
   bool main_dot_up;
   int bar_found;
   
   for (int y = bars_to_count; y > 0; y--) 
   {
   //
   if(buf_92[y]!=0 && find_one_up==0)
   {
   bar_found=y;
   find_one_up++;
   }
   //
   if((buf_92[y]!=0) && find_one_up==1)
   {
   if(!main_dot_up)
   {
   if(buf_92[y]>buf_92[bar_found])
   buf_94[y]=High[y]+ Dot_from_candle*point;
   }
   if(main_dot_up)
   {
   if(buf_92[y]>buf_94[bar_found])
   {
   buf_94[y]=High[y]+ Dot_from_candle*point;
   buf_94[bar_found]=0;
   buf_92[bar_found]=High[bar_found]+ Dot_from_candle*point;
   }
   }
   find_one_up=0;
   }
   
    //
   if((buf_92[y]!=0 || buf_94[y]!=0) && find_one_up==0)
   {
   if(buf_92[y]!=0) main_dot_up=false;
   if(buf_94[y]!=0) main_dot_up=true;
   bar_found=y;
   find_one_up++;
   }
   
   }//end for2
   
   for (int x = bars_to_count; x > 0; x--) 
   {
   if(buf_94[x]!=0 && buf_92[x]!=0)
   buf_92[x]=0;
   }//end for3

//////////////////////////////////////////////main down dot
   int find_one_down;
   bool main_dot_down;
   int bar_found_d;
   
   for (int y2 = bars_to_count; y2 > 0; y2--) 
   {
   //
   if(buf_93[y2]!=0 && find_one_down==0)
   {
   bar_found_d=y2;
   find_one_down++;
   }
   //
   if((buf_93[y2]!=0) && find_one_down==1)
   {
   if(!main_dot_down)
   {
   if(buf_93[y2]<buf_93[bar_found_d])
   buf_95[y2]=Low[y2]- Dot_from_candle*point;
   }
   if(main_dot_down)
   {
   if(buf_93[y2]<buf_95[bar_found_d])
   {
   buf_95[y2]=Low[y2]- Dot_from_candle*point;
   buf_95[bar_found_d]=0;
   buf_93[bar_found_d]=Low[bar_found_d]- Dot_from_candle*point;
   }
   }
   find_one_down=0;
   }
   
    //
   if((buf_93[y2]!=0 || buf_95[y2]!=0) && find_one_down==0)
   {
   if(buf_93[y2]!=0) main_dot_down=false;
   if(buf_95[y2]!=0) main_dot_down=true;
   bar_found_d=y2;
   find_one_down++;
   }
   
   }//end for4
   
   for (int x2 = bars_to_count; x2 > 0; x2--) 
   {
   if(buf_95[x2]!=0 && buf_93[x2]!=0)
   buf_93[x2]=0;
   }//end for5
 
Спасибо за индикатор, и пример с частью кода его, интересные, немного разобрался, причесал, но даже не знаю как собачить зигзаг по этому.
 
Gruler:
Спасибо за индикатор, и пример с частью кода его, интересные, немного разобрался, причесал, но даже не знаю как собачить зигзаг по этому.

92 и 93 это пики обычные

Вместо 92 и 93 буферов подставляешь пики зигзага. 

 

Кстати buf_92[y]!=0 зигзаг тоже 0 это пустое значение.

Так что просто вместо buf_92[y] надо iCustom(Symbol(),0,"ZigZag",...,1,y) 

 
Понял. А как быть с buf_92[bar_found],  buf_94[y], buf_94[bar_found] ?
 
Gruler:
Понял. А как быть с buf_92[bar_found],  buf_94[y], buf_94[bar_found] ?
bar_found это внутреняя переменная.
Причина обращения: