AvalsLevels_v1

Author: Copyright � 2006, �������� �������
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
AvalsLevels_v1
//+------------------------------------------------------------------+
//|                                                  AvalsLevels.mq4 |
//|                               Copyright © 2006, Âÿ÷åñëàâ Ñóâîðîâ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Âÿ÷åñëàâ Ñóâîðîâ"

#property indicator_chart_window
#property indicator_buffers 2

#property indicator_color1 Blue 
#property indicator_style2 STYLE_DASH
#property indicator_color3 Red
#property indicator_style4 STYLE_DASH

double topband2[];
double botband2[];
double pogreha=5;

//---- input parameters
extern int       SpeedLineMin=5;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(2);

   SetIndexBuffer(0,topband2);
   SetIndexStyle(0,DRAW_LINE,STYLE_DASH,1,Blue);
   SetIndexDrawBegin(0,3);
   SetIndexLabel(0,"SPEEDUP");

   SetIndexBuffer(1,botband2);
   SetIndexStyle(1,DRAW_LINE,STYLE_DASH,1,Red);
   SetIndexDrawBegin(1,3);
   SetIndexLabel(1,"SPEEDDOWN");

//---- indicators
//----
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double Max=High[Highest(NULL,0,MODE_HIGH,Bars-1,0)];
   int Basis,sh;
   bool sign;
   double d1,Dist;
   int i=iBars(NULL,PERIOD_D1);
   double Maxx=High[iHighest(NULL,PERIOD_D1,MODE_HIGH,i,0)];
   double tops[];
   double bots[];
   int   counted_bars=IndicatorCounted();
   double lasttop=High[counted_bars];
   double lastbot=Low[counted_bars];
   ArrayResize(tops,0);
   ArrayResize(bots,0);

   lasttop=High[counted_bars];
   lastbot=Low[counted_bars];

   i=Bars-IndicatorCounted();
   if(counted_bars==0)
      i-=3;
   while(i>=0)
     {
      Basis=i;
      if(Close[i]>=Open[i])
        {         //UP
         sign=false;
         while((i>=0) && (!sign))
           {
            while((ArraySize(tops)>0) &&(High[i]>=tops[ArraySize(tops)-1])) ArrayResize(tops,ArraySize(tops)-1);
            while((ArraySize(bots)>0) && (Low[i]<=bots[ArraySize(bots)-1])) ArrayResize(bots,ArraySize(bots)-1);
            if(ArraySize(tops)>0)
               topband2[i]=tops[ArraySize(tops)-1];
            if(topband2[i]==0)
               topband2[i]=Max;
            if(ArraySize(bots)>0)
               botband2[i]=bots[ArraySize(bots)-1];
            i--;
            if((High[i]>High[i+1]) && (Low[i]>Low[i+1]) && (Close[i]>Open[i])) sign=false; else sign=true;
           }//while
         d1= MathMin(High[Basis+1],High[Basis+2]);
         d1= MathMin(d1,High[Basis]);
         Dist=(High[i+1]-d1)/Point;
         if(Dist>=SpeedLineMin)
           {
            ArrayResize(bots,ArraySize(bots)+1);
            bots[ArraySize(bots)-1]=d1;
           }//if       
           } else {
         sign=false;
         while((i>=0) && (!sign))
           {
            while((ArraySize(tops)>0) &&(High[i]>=tops[ArraySize(tops)-1])) ArrayResize(tops,ArraySize(tops)-1);
            while((ArraySize(bots)>0) && (Low[i]<=bots[ArraySize(bots)-1])) ArrayResize(bots,ArraySize(bots)-1);
            if(ArraySize(tops)>0)
               topband2[i]=tops[ArraySize(tops)-1];
            if(topband2[i]==0) topband2[i]=Max;
            if(ArraySize(bots)>0)
               botband2[i]=bots[ArraySize(bots)-1];
            i--;
            if(i>0&&(Low[i]<Low[i+1]) && (High[i]<High[i+1]) && (Close[i]<Open[i])) sign=false; else sign=true;
           }//while
         d1=0;
         d1= MathMax(Low[Basis+1],Low[Basis+2]);
         d1= MathMax(d1,Low[Basis]);
         Dist=(d1-Low[i+1])/Point;
         if(Dist>=SpeedLineMin)
           {
            ArrayResize(tops,ArraySize(tops)+1);
            tops[ArraySize(tops)-1]=d1;
           }//if            
        }
     }//while   
   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
  {
   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 ---