ATR Levels2





//+------------------------------------------------------------------+
//|                                                  ATR Levels2.mq4 |
//|                                                  Sergey Iljukhin |
//|                                                  sergey@tibet.ru |
//+------------------------------------------------------------------+
#property copyright "Sergey Iljukhin"
#property link      "mailto:sergey@tibet.ru"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Magenta 
#property indicator_color2 IndianRed 
#property indicator_color3 Magenta 
#property indicator_color4 IndianRed 

#define   LevelMaxDeep  2000 //



extern int ATRPeriod = 10;         

datetime PrevTime;              
string ShortName="ATR Levels";  

double OHLC_D1[][6];  

//---- buffers
double UpLine1[],UpLine2[],DnLine1[],DnLine2[];

ArraySetAsSeries(UpLine1,true);
ArraySetAsSeries(UpLine2,true);
ArraySetAsSeries(DnLine1,true);
ArraySetAsSeries(DnLine2,true);

//+------------------------------------------------------------------+
//| Èíèöèàëèçàöèÿ ìàññèâîâ                                           |
//+------------------------------------------------------------------+

int InitChart()
{
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE,2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexStyle(3,DRAW_LINE,2);
   SetIndexBuffer(0,UpLine1);
   SetIndexBuffer(1,UpLine2);
   SetIndexBuffer(2,DnLine1);
   SetIndexBuffer(3,DnLine2);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName(ShortName+" ("+ATRPeriod+")");
   SetIndexLabel(0,"Up Channel 1");
   SetIndexLabel(1,"Up Channel 2");
   SetIndexLabel(2,"Down Channel 1");
   SetIndexLabel(3,"Down Channel 2");
//----
   SetIndexEmptyValue(0,0);
   SetIndexEmptyValue(1,0);
   SetIndexEmptyValue(2,0);
   SetIndexEmptyValue(3,0);

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


int init()
  {
   InitChart();
   return(0);
  }

int deinit()
  {
   InitChart();
   return(0);
  }

int start()
  {
   int  counted_bars=IndicatorCounted();
   int  lastday=0, i, j, daybar=0, chartbar=0;  
   double LowYesterday, HighYesterday, LowToday, HighToday, fullatr;
   
   
   if (PrevTime==Time[0]) return(-1);
   
   
   if(Period() > PERIOD_H4)
      {
         Comment("ATR Levels - îøèáêà: ïåðèîä ãðàôèêà áîëåå Í4 !");
         return(-1); // then exit
      }

   
   ArrayCopyRates(OHLC_D1, Symbol(), PERIOD_D1);

   lastday=TimeDay(Time[0]);
   
   for (i=0; i<Bars; i++) {
    if (lastday!=TimeDay(Time[i])) {

     // Âû÷èñëÿåì çíà÷åíèå ATR ïðåäûäóùåãî áàðà
     fullatr = iATR(Symbol(), PERIOD_D1, ATRPeriod, daybar+1);
             
     LowYesterday  = OHLC_D1[daybar+1][3] - fullatr;   
     HighYesterday = OHLC_D1[daybar+1][2] + fullatr;
     LowToday  = OHLC_D1[daybar][3] - fullatr;   
     HighToday = OHLC_D1[daybar][2] + fullatr;

     
     
     for (j=chartbar; j<i; j++) { 
       UpLine1[j]=HighToday;
       UpLine2[j]=HighYesterday;
       DnLine1[j]=LowToday;
       DnLine2[j]=LowYesterday;
     }  

    lastday=TimeDay(Time[i]);
    daybar++;
    chartbar=i;
    }
   }
   
   
   PrevTime=Time[0];
   return(0);

  }
//+------------------------------------------------------------------+



Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:

Implements a curve of type DRAW_LINE


Indicators Used:

Indicator of the average true range


Custom Indicators Used:

Order Management characteristics:

Other Features: