//+------------------------------------------------------------------+ //| High_Low v2 (ZigZag).mq4 | //| //| Conversion only | //+------------------------------------------------------------------+ #property copyright "" #property link "" #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Red //---- input parameters extern int barn=500; extern int Length=6; //---- buffers double ExtMapBuffer1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexEmptyValue(0,0.0); //SetIndexDrawBegin(0, barn); SetIndexStyle(0,DRAW_SECTION); SetIndexBuffer(0,ExtMapBuffer1); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int counted_bars=IndicatorCounted(); int shift,Swing,Swing_n,uzl,i,zu,zd,mv; double LL,HH,BH,BL,NH,NL; double Uzel[10000][3]; string text; // loop from first bar to current bar (with shift=0) Swing_n=0;Swing=0;uzl=0; BH =High[barn];BL=Low[barn];zu=barn;zd=barn; for (shift=barn;shift>=0;shift--) { LL=10000000;HH=-100000000; for (i=shift+Length;i>=shift+1;i--) { if (Low[i]< LL) {LL=Low[i];} if (High[i]>HH) {HH=High[i];} } if (Low[shift]HH){ Swing=2; if (Swing_n==1) {zu=shift+1;} if (Swing_n==-1) {zd=shift+1;} } else { if (Low[shift]HH) {Swing=1;} } if (Swing!=Swing_n && Swing_n!=0) { if (Swing==2) { Swing=-Swing_n;BH = High[shift];BL = Low[shift]; } uzl=uzl+1; if (Swing==1) { Uzel[uzl][1]=zd; Uzel[uzl][2]=BL; } if (Swing==-1) { Uzel[uzl][1]=zu; Uzel[uzl][2]=BH; } BH = High[shift]; BL = Low[shift]; } if (Swing==1) { if (High[shift]>=BH) {BH=High[shift];zu=shift;}} if (Swing==-1) { if (Low[shift]<=BL) {BL=Low[shift]; zd=shift;}} Swing_n=Swing; } for (i=1;i<=uzl;i++) { //text=DoubleToStr(Uzel[i][1],0); //text=; mv=StrToInteger(DoubleToStr(Uzel[i][1],0)); ExtMapBuffer1[mv]=Uzel[i][2]; } return(0); } //+------------------------------------------------------------------+