High_Low_v2

Author: rewritten by CrazyChart
High_Low_v2
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
High_Low_v2
//+------------------------------------------------------------------+
//|                                         High_Low v2 (ZigZag).mq4 |
//|                                          rewritten by CrazyChart |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "rewritten by CrazyChart"
#property link      ""

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 White
//---- input parameters
extern int       barn=300;
extern int       Length=6;
//---- buffers
double ExtMapBuffer1[];
//double ExtMapBuffer2[];
//+------------------------------------------------------------------+
//| 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;
   double Uzel[10000][3];
   string text;
// loop from first bar to current bar (with shift=0) 
   Swing_n=0;Swing=0;uzl=0;
   if(Bars<barn) return(-1);
   if (barn>=ArraySize(Uzel)/3) return(-1);

   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]<LL && High[shift]>HH)
        {
         Swing=2;
         if(Swing_n==1) {zu=shift+1;}
         if(Swing_n==-1) {zd=shift+1;}
           } else {
         if(Low[shift]<LL) {Swing=-1;}
         if(High[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];

      Comment("\n","\n","\n","\n","\n","\n","\n","\n",ExtMapBuffer1[mv]);
     }


   return(0);
  }
//+------------------------------------------------------------------+

Comments

Markdown supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---