ACD_PV_v2
Miscellaneous
Implements a curve of type %1
0 Views
0 Downloads
0 Favorites
ACD_PV_v2
//+------------------------------------------------------------------+
//|                                                                  |
//|                 Copyright © 2000-2007, MetaQuotes Software Corp. |
//|                                         http://www.metaquotes.ru |
//+------------------------------------------------------------------+
/**
* ACD_2.mq4
* Pivot Range and Previous High/Low
**/
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Aqua
#property indicator_color2 Aqua
#property indicator_color3 Aqua
#property indicator_color4 White
#property indicator_color5 White
#property indicator_color6 Red
#property indicator_color7 Green
#property indicator_color8 Orchid
//Input Params
extern string PivotRangeStart="00:30";
extern string PivotRangeEnd="00:30";
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_DASH, 1);
   SetIndexBuffer(1,Buffer2);
   SetIndexLabel(1,"Pivot Range Top");
   SetIndexStyle(2,DRAW_LINE, STYLE_DASH, 1);
   SetIndexBuffer(2,Buffer3);
   SetIndexLabel(2,"Pivot Range Bottom");
   SetIndexStyle(3,DRAW_LINE, STYLE_SOLID, 1);
   SetIndexBuffer(3,Buffer4);
   SetIndexLabel(3,"Previous Day High");
   SetIndexStyle(4,DRAW_LINE, STYLE_SOLID, 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 && lastBarTime<PivotRangeEnd))
        {
         closeBar=i + 1;
//----
         if (openBar>0)
           {
            calculatePivotRangeValues(openBar, closeBar);
           }
        }
      if ((PivotRangeStart=="00:00" && barTime>=PivotRangeStart && barDay>lastBarDay) || (barTime>=PivotRangeStart && lastBarTime<PivotRangeStart))
        {
         openBar=i;
        }
      if (openBar>0)
        {
         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<count; p++)
        {
         pivSum+=pivots[p];
//----
         if (p==13)
           {
            pivot14MA=pivSum/14;
           }
//----
         if (p==29)
         {pivot30MA=pivSum/30;}
//----
         if (p==49)
         {pivot50MA=pivSum/50;}
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void drawIndicators(int curBar)
  {
   if (DisplayPivotPoint) Buffer1[curBar]=pivotPoint;
//----
   Buffer2[curBar]=pivotTop;
   Buffer3[curBar]=pivotBottom;
//----
   if (DisplayPreviousHighLow)
     {
      Buffer4[curBar]=pivotRangeHigh;
      Buffer5[curBar]=pivotRangeLow;
     }
   if (DisplayMAs)
     {
      Buffer6[curBar]=pivot14MA;
      Buffer7[curBar]=pivot30MA;
      Buffer8[curBar]=pivot50MA;
     }
  }
//+------------------------------------------------------------------+

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 ---