AvalsLevels

Author: Copyright � 2006, �������� �������
AvalsLevels
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
AvalsLevels
//+------------------------------------------------------------------+
//|                                                  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();
   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);         
         topband2[i]=tops[ArraySize(tops)-1];
         if (topband2[i]==0) topband2[i]=Max;
         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);         
         topband2[i]=tops[ArraySize(tops)-1];
         if (topband2[i]==0) topband2[i]=Max;
         botband2[i]=bots[ArraySize(bots)-1];
         i--;
         if ((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 ---