Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Andrey Chernous
272
Andrey Chernous  

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

 

khorosh
8597
khorosh  
Gruler:

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

 

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

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

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

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

 

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

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
Andrey Chernous
272
Andrey Chernous  
Спасибо за индикатор, и пример с частью кода его, интересные, немного разобрался, причесал, но даже не знаю как собачить зигзаг по этому.
Vasyl Nosal
18756
Vasyl Nosal  
Gruler:
Спасибо за индикатор, и пример с частью кода его, интересные, немного разобрался, причесал, но даже не знаю как собачить зигзаг по этому.

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

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

 

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

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

Andrey Chernous
272
Andrey Chernous  
Понял. А как быть с buf_92[bar_found],  buf_94[y], buf_94[bar_found] ?
Vasyl Nosal
18756
Vasyl Nosal  
Gruler:
Понял. А как быть с buf_92[bar_found],  buf_94[y], buf_94[bar_found] ?
bar_found это внутреняя переменная.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий