DynamicRS_3CLinesM_mtf

Author: Copyright � 2007, Nick A. Zhilin
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
DynamicRS_3CLinesM_mtf
//+------------------------------------------------------------------+
//|                                            DynamicRS_3CLines.mq4 |
//|                                 Copyright © 2007, Nick A. Zhilin |
//|  mtf: ForexTSD.com 2007                          rebus58@mail.ru |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2007, Nick A. Zhilin"
#property link      "rebus58@mail.ru"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Gold
#property indicator_color2 DodgerBlue
#property indicator_color3 Crimson
#property indicator_width1 2

//---- buffers

extern int TimeFrame = 0;
extern int DRS_Line_Shift=1;
extern string     ____ = "_____";
extern string note_TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN";
extern string  IndicatorCorrectName = "DynamicRS_3CLinesM_mtf";

double DRS_Line[];
double TopLine[];
double BottomnLine[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   IndicatorShortName("DynamicRS_3CLines");
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,DRS_Line);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,TopLine);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,BottomnLine);
   if(TimeFrame==0) TimeFrame = Period();
   SetIndexShift(0,DRS_Line_Shift*TimeFrame/Period());
   SetIndexLabel(0,"DRS_Line");
   SetIndexLabel(1,"DRS_TopLine");
   SetIndexLabel(2,"DRS_BottomLine");
   if (TimeFrame < Period()) TimeFrame = Period();

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| DynamicRS                                                        |
//+------------------------------------------------------------------+
int start()
  {
   int      limit1,i1;
   int counted_bars1 = IndicatorCounted();
   if(counted_bars1 < 0) return(-1);
   limit1 = Bars-counted_bars1;
   if (TimeFrame != Period())
      {
         limit1 = MathMax(limit1,TimeFrame/Period());
         datetime TimeArray[];
            ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame);
            for(i1=0,int y=0; i1<limit1; i1++)
            {
               if(Time[i1]<TimeArray[y]) y++;

                     DRS_Line[i1]     = iCustom(NULL,TimeFrame,IndicatorCorrectName,0,y);
                     TopLine[i1]      = iCustom(NULL,TimeFrame,IndicatorCorrectName,1,y);
                     BottomnLine[i1]  = iCustom(NULL,TimeFrame,IndicatorCorrectName,2,y);



                   
//                     DRS_Line[i1]     = iCustom(NULL,TimeFrame,IndicatorCorrectName,DRS_Line_Shift,0,y);
//                     TopLine[i1]      = iCustom(NULL,TimeFrame,IndicatorCorrectName,DRS_Line_Shift,1,y);
//                     BottomnLine[i1]  = iCustom(NULL,TimeFrame,IndicatorCorrectName,DRS_Line_Shift,2,y);
   
            }
         return(0);         
      }
   int i,counted_bars=IndicatorCounted();
   i=Bars-counted_bars-1;
   while(i>=0)
     {
      if(High[i]<High[i+1] && High[i]<DRS_Line[i+1])   
         {
          DRS_Line[i]=High[i];
          BottomnLine[i]=High[i];
          TopLine[i]=TopLine[i+1];
         }          
      else if(Low[i]>Low[i+1] && Low[i]>DRS_Line[i+1])
         {
          DRS_Line[i]=Low[i];
          TopLine[i]=Low[i];
          BottomnLine[i]=BottomnLine[i+1];
         }
      else
         {
          DRS_Line[i]=DRS_Line[i+1];
          if(DRS_Line[i+1]==TopLine[i+1]) 
             {
              TopLine[i]=DRS_Line[i+1];
              BottomnLine[i]=BottomnLine[i+1];
             }
          else if(DRS_Line[i+1]==BottomnLine[i+1]) 
             {
              BottomnLine[i]=DRS_Line[i+1];
              TopLine[i]=TopLine[i+1];
             }
         }         
      i--;
     }


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

Comments