Navigation´╝ÜHome > Content >

Pivot_Range~.mq4

Time: 2018-09-22 | Download file:Pivot_Range~.mq4

/**
* ACD_2.mq4
* Pivot Range and Previous High/Low
**/

#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Magenta 
#property indicator_color2 DarkSlateGray
#property indicator_color3 DarkSlateGray
#property indicator_color4 Blue
#property indicator_color5 Red
#property indicator_color6 Red
#property indicator_color7 Blue
#property indicator_color8 Orchid

//Input Params
extern string PivotRangeStart = "21:00";
extern string PivotRangeEnd = "21:00";
extern bool DisplayPivotPoint = true;
extern bool DisplayPreviousHighLow = true;
extern bool DisplayMAs = false;

double Buffer1[];
double Buffer2[];
double Buffer3[];
double Buffer4[];
double Buffer5[];
double Buffer6[];
double Buffer7[];
double Buffer8[];

double pivots[50];

double pivotRangeHigh;
double pivotRangeLow;
double pivotRangeClose;
double pivotPoint;
double pivotDiff;

double pivotTop=0;
double pivotBottom=0;

double pivot14MA;
double pivot30MA;
double pivot50MA;

int openBar;
    
int init()
{
   SetIndexStyle(0,DRAW_LINE, STYLE_DOT, 1);
   SetIndexBuffer(0,Buffer1);
   SetIndexLabel(0,"Pivot Point");

   SetIndexStyle(1,DRAW_LINE, STYLE_DASHDOT, 1);
   SetIndexBuffer(1,Buffer2);
   SetIndexLabel(1,"Pivot Range Top");

   SetIndexStyle(2,DRAW_LINE, STYLE_DASHDOT, 1);
   SetIndexBuffer(2,Buffer3);
   SetIndexLabel(2,"Pivot Range Bottom");
   
   SetIndexStyle(3,DRAW_LINE, STYLE_DOT, 1);
   SetIndexBuffer(3,Buffer4);
   SetIndexLabel(3,"Previous Day High");
   
   SetIndexStyle(4,DRAW_LINE, STYLE_DOT, 1);
   SetIndexBuffer(4,Buffer5);
   SetIndexLabel(4,"Previous Day Low");
   
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,Buffer6);
   SetIndexLabel(5,"14 MA");
   
   SetIndexStyle(6,DRAW_LINE);
   SetIndexBuffer(6,Buffer7);
   SetIndexLabel(6,"30 MA");
   
   SetIndexStyle(7,DRAW_LINE);
   SetIndexBuffer(7,Buffer8);
   SetIndexLabel(7,"50 MA");

   return(0);
}

int deinit()
{
   return(0);
}

int start()
{   
   string barTime="", lastBarTime="";         
   string barDay="", lastBarDay="";
   int closeBar;
          
   for(int i=Bars; i>=0; i--)
   {  
      barTime = TimeToStr(Time[i], TIME_MINUTES);
      lastBarTime = TimeToStr(Time[i+1], TIME_MINUTES);
      barDay = TimeToStr(Time[i],TIME_DATE);
      lastBarDay = TimeToStr(Time[i+1],TIME_DATE); 
      
      //need to handle if pivotrangestart/end is 00:00
      if ((PivotRangeEnd == "00:00" && barTime>=PivotRangeEnd && barDay>lastBarDay) || (barTime>=PivotRangeEnd && lastBarTime0)
         {
            calculatePivotRangeValues(openBar, closeBar);
         }
      }
      
      if ((PivotRangeStart == "00:00" && barTime>=PivotRangeStart && barDay>lastBarDay) || (barTime>=PivotRangeStart && lastBarTime0)
      {
          drawIndicators(i);
      }     
   }
   return(0);
}

void calculatePivotRangeValues(int openBar, int closeBar)
{
   pivotRangeHigh = High[Highest(NULL, 0, MODE_HIGH, (openBar - closeBar + 1), closeBar)];
   pivotRangeLow = Low[Lowest(NULL, 0, MODE_LOW, (openBar - closeBar + 1), closeBar)];
   pivotRangeClose = Close[closeBar];
   pivotPoint = (pivotRangeHigh + pivotRangeLow + pivotRangeClose)/3;
   pivotDiff = MathAbs(((pivotRangeHigh + pivotRangeLow)/2) - pivotPoint);
   pivotTop = pivotPoint + pivotDiff;
   pivotBottom = pivotPoint - pivotDiff;
   
   if (DisplayMAs) calcPivotMA();
}

void calcPivotMA()
{
   //create temp array
   double pivs[50];
   
   //load new pivot
   ArrayCopy(pivs,pivots,1,0,49);
   pivs[0] = pivotPoint;
   ArrayCopy(pivots, pivs, 0, 0, WHOLE_ARRAY);
   
   //calcMA
   double pivSum = 0;
   int count = ArraySize(pivots);
   if (count>=14)
   {
      for (int p=0; p        

Recommend