//+------------------------------------------------------------------+
//|        AutoPivotIndicator.mq4              by Habeeb             |
//|                                                                  |
//+------------------------------------------------------------------+

#property indicator_chart_window
#property copyright "Habeeb"
#property link "http://forexBaron.net"


   extern bool Weekly = False;
   extern bool Daily  = True;
   
   extern color PivotLineColor = Magenta;
   extern color R1_LineColor   = Red;
   extern color R2_LineColor   = Red;
   extern color R3_LineColor   = Red;
   extern color S1_LineColor   = LimeGreen;
   extern color S2_LineColor   = LimeGreen;
   extern color S3_LineColor   = LimeGreen;
   
   extern int   PivotLineStyle = STYLE_DASH;
   extern int   R1_LineStyle   = STYLE_DASHDOTDOT;
   extern int   R2_LineStyle   = STYLE_DASHDOTDOT;
   extern int   R3_LineStyle   = STYLE_DASHDOTDOT;
   extern int   S1_LineStyle   = STYLE_DASHDOTDOT;
   extern int   S2_LineStyle   = STYLE_DASHDOTDOT;
   extern int   S3_LineStyle   = STYLE_DASHDOTDOT;
   
   extern int   PivotLineWidth = 1;
   extern int   R1_LineWidth   = 1;
   extern int   R2_LineWidth   = 1;
   extern int   R3_LineWidth   = 1;
   extern int   S1_LineWidth   = 1;
   extern int   S2_LineWidth   = 1;
   extern int   S3_LineWidth   = 1;
   
   //---
   
   extern color WeekPivotColor     = Aqua;
   extern color WR1_LineColor      = Yellow;
   extern color WR2_LineColor      = Yellow;
   extern color WR3_LineColor      = Yellow;
   extern color WS1_LineColor      = SteelBlue;
   extern color WS2_LineColor      = SteelBlue;
   extern color WS3_LineColor      = SteelBlue;
   
   extern int   WeekPivotLineStyle = STYLE_DASH;
   extern int   WR1_LineStyle      = STYLE_DASHDOTDOT;
   extern int   WR2_LineStyle      = STYLE_DASHDOTDOT;
   extern int   WR3_LineStyle      = STYLE_DASHDOTDOT;
   extern int   WS1_LineStyle      = STYLE_DASHDOTDOT;
   extern int   WS2_LineStyle      = STYLE_DASHDOTDOT;
   extern int   WS3_LineStyle      = STYLE_DASHDOTDOT;
   
   extern int   WeekPivotLineWidth = 1;
   extern int   WR1_LineWidth      = 1;
   extern int   WR2_LineWidth      = 1;
   extern int   WR3_LineWidth      = 1;
   extern int   WS1_LineWidth      = 1;
   extern int   WS2_LineWidth      = 1;
   extern int   WS3_LineWidth      = 1;
   
   

   double YesterdayHigh;
   double YesterdayLow;
   double YesterdayClose;
   double Day_Price[][6];
   double Pivot,S1,S2,S3,R1,R2,R3;
   
   double WeekHigh;
   double WeekLow;
   double WeekClose;
   double Weekly_Price[][6];
   double WeekPivot,WS1,WS2,WS3,WR1,WR2,WR3;

int init()
  {
   return(0);
  }
  
//-------------------------------------------------------- 
  
int deinit()
  {
ObjectDelete("PivotLine");

ObjectDelete("R1_Line");
ObjectDelete("R2_Line");
ObjectDelete("R3_Line");

ObjectDelete("S1_Line");
ObjectDelete("S2_Line");
ObjectDelete("S3_Line");  

//--------------------------------

ObjectDelete("PivotLabel");

ObjectDelete("R1_Label");
ObjectDelete("R2_Label");
ObjectDelete("R3_Label");

ObjectDelete("S1_Label");
ObjectDelete("S2_Label");
ObjectDelete("S3_Label"); 

//--------------------------------------------------------

ObjectDelete("WeekPivotLine");

ObjectDelete("WR1_Line");
ObjectDelete("WR2_Line");
ObjectDelete("WR3_Line");

ObjectDelete("WS1_Line");
ObjectDelete("WS2_Line");
ObjectDelete("WS3_Line");  

//--------------------------------

ObjectDelete("WeekPivotLabel");

ObjectDelete("WR1_Label");
ObjectDelete("WR2_Label");
ObjectDelete("WR3_Label");

ObjectDelete("WS1_Label");
ObjectDelete("WS2_Label");
ObjectDelete("WS3_Label");  
  
  
  return(0);
  }
//---------------------------------------------------------  

int start()
  {
    

//ArrayInitialize(Day_Price,0);
ArrayCopyRates(Day_Price,(Symbol()), 1440);

YesterdayHigh  = Day_Price[1][3];
YesterdayLow   = Day_Price[1][2];
YesterdayClose = Day_Price[1][4];

Pivot = ((YesterdayHigh + YesterdayLow + YesterdayClose)/3);

   R1 = (2*Pivot)-YesterdayLow;
   S1 = (2*Pivot)-YesterdayHigh;

   R2 = Pivot+(R1-S1);
   S2 = Pivot-(R1-S1);

   S3 = (YesterdayLow - (2*(YesterdayHigh-Pivot)));
   R3 = (YesterdayHigh + (2*(Pivot-YesterdayLow)));

//--------------------------------------------------------
//--------------------------------------------------------

//ArrayInitialize(Weekly_Price, 0);
ArrayCopyRates(Weekly_Price, Symbol(), 10080);

WeekHigh  = Weekly_Price[1][3];
WeekLow   = Weekly_Price[1][2];
WeekClose = Weekly_Price[1][4];

WeekPivot = ((WeekHigh + WeekLow + WeekClose)/3);

      WR1 = (2*WeekPivot)-WeekLow;
      WS1 = (2*WeekPivot)-WeekHigh;

      WR2 = WeekPivot+(WR1-WS1);
      WS2 = WeekPivot-(WR1-WS1);

      WS3 = (WeekLow - (2*(WeekHigh-WeekPivot)));
      WR3 = (WeekHigh + (2*(WeekPivot-WeekLow)));

//--------------------------------------------------------

if (Daily==true)
{

ObjectCreate("PivotLine", OBJ_HLINE,0, TimeCurrent(),Pivot);
ObjectSet("PivotLine", OBJPROP_COLOR, PivotLineColor);
ObjectSet("PivotLine", OBJPROP_WIDTH, PivotLineWidth);
ObjectSet("PivotLine", OBJPROP_STYLE, STYLE_DASH);

if(ObjectFind("PivotLabel") != 0)
{
ObjectCreate("PivotLabel", OBJ_TEXT, 0, Time[20], Pivot);
ObjectSetText("PivotLabel", "Daily Pivot", 8, "Arial", PivotLineColor);
}
else
{
ObjectMove("PivotLabel", 0, Time[20], Pivot);
}

//--------------------------------------------------------

ObjectCreate("R1_Line", OBJ_HLINE,0, TimeCurrent(),R1);
ObjectSet("R1_Line", OBJPROP_COLOR, R1_LineColor);
ObjectSet("R1_Line", OBJPROP_WIDTH, R1_LineWidth);
ObjectSet("R1_Line", OBJPROP_STYLE, R1_LineStyle);

if(ObjectFind("R1_Label") != 0)
{
ObjectCreate("R1_Label", OBJ_TEXT, 0, Time[20], R1);
ObjectSetText("R1_Label", "Daily R1", 8, "Arial", R1_LineColor);
}
else
{
ObjectMove("R1_Label", 0, Time[20], R1);
}

//--------------------------------------------------------

ObjectCreate("R2_Line", OBJ_HLINE,0, TimeCurrent(),R2);
ObjectSet("R2_Line", OBJPROP_COLOR, R2_LineColor);
ObjectSet("R2_Line", OBJPROP_WIDTH, R2_LineWidth);
ObjectSet("R2_Line", OBJPROP_STYLE, R2_LineStyle);

if(ObjectFind("R2_Label") != 0)
{
ObjectCreate("R2_Label", OBJ_TEXT, 0, Time[20], R2);
ObjectSetText("R2_Label", "Daily R2", 8, "Arial", R2_LineColor);
}
else
{
ObjectMove("R2_Label", 0, Time[20], R2);
}

//---------------------------------------------------------

ObjectCreate("R3_Line", OBJ_HLINE,0, TimeCurrent(),R3);
ObjectSet("R3_Line", OBJPROP_COLOR, R3_LineColor);
ObjectSet("R3_Line", OBJPROP_WIDTH, R3_LineWidth);
ObjectSet("R3_Line", OBJPROP_STYLE, R3_LineStyle);

if(ObjectFind("R3_Label") != 0)
{
ObjectCreate("R3_Label", OBJ_TEXT, 0, Time[20], R3);
ObjectSetText("R3_Label", "Daily R3", 8, "Arial", R3_LineColor);
}
else
{
ObjectMove("R3_Label", 0, Time[20], R3);
}

//---------------------------------------------------------

ObjectCreate("S1_Line", OBJ_HLINE,0, TimeCurrent(),S1);
ObjectSet("S1_Line", OBJPROP_COLOR, S1_LineColor);
ObjectSet("S1_Line", OBJPROP_WIDTH, S1_LineWidth);
ObjectSet("S1_Line", OBJPROP_STYLE, S1_LineStyle);

if(ObjectFind("S1_Label") != 0)
{
ObjectCreate("S1_Label", OBJ_TEXT, 0, Time[20], S1);
ObjectSetText("S1_Label", "Daily S1", 8, "Arial", S1_LineColor);
}
else
{
ObjectMove("S1_Label", 0, Time[20], S1);
}

//---------------------------------------------------------

ObjectCreate("S2_Line", OBJ_HLINE,0, TimeCurrent(),S2);
ObjectSet("S2_Line", OBJPROP_COLOR, S2_LineColor);
ObjectSet("S2_Line", OBJPROP_WIDTH, S2_LineWidth);
ObjectSet("S2_Line", OBJPROP_STYLE, S2_LineStyle);

if(ObjectFind("S2_Label") != 0)
{
ObjectCreate("S2_Label", OBJ_TEXT, 0, Time[20], S2);
ObjectSetText("S2_Label", "Daily S2", 8, "Arial", S2_LineColor);
}
else
{
ObjectMove("S2_Label", 0, Time[20], S2);
}
//---------------------------------------------------------

ObjectCreate("S3_Line", OBJ_HLINE,0, TimeCurrent(),S3);
ObjectSet("S3_Line", OBJPROP_COLOR, S3_LineColor);
ObjectSet("S3_Line", OBJPROP_WIDTH, S3_LineWidth);
ObjectSet("S3_Line", OBJPROP_STYLE, S3_LineStyle);

if(ObjectFind("S3_Label") != 0)
{
ObjectCreate("S3_Label", OBJ_TEXT, 0, Time[20], S3);
ObjectSetText("S3_Label", "Daily S3", 8, "Arial", S3_LineColor);
}
else
{
ObjectMove("S3_Label", 0, Time[20], S3);
}
}
//---------------------------------------------------------
//---------------------------------------------------------
//---------------------------------------------------------
if (Weekly==true)
{
ObjectCreate("WeekPivotLine", OBJ_HLINE,0, TimeCurrent(),WeekPivot);
ObjectSet("WeekPivotLine", OBJPROP_COLOR, WeekPivotColor);
ObjectSet("WeekPivotLine", OBJPROP_STYLE, WeekPivotLineStyle);
ObjectSet("WeekPivotLine", OBJPROP_WIDTH, WeekPivotLineWidth);

if(ObjectFind("WeekPivotLabel") != 0)
{
ObjectCreate("WeekPivotLabel", OBJ_TEXT, 0, Time[30], WeekPivot);
ObjectSetText("WeekPivotLabel", "WeeklyPivot", 8, "Arial", WeekPivotColor);
}
else
{
ObjectMove("WeekPivotLabel", 0, Time[30], WeekPivot);
}

//--------------------------------------------------------

ObjectCreate("WR1_Line", OBJ_HLINE,0, TimeCurrent(),WR1);
ObjectSet("WR1_Line", OBJPROP_COLOR, WR1_LineColor);
ObjectSet("WR1_Line", OBJPROP_WIDTH, WR1_LineWidth);
ObjectSet("WR1_Line", OBJPROP_STYLE, WR1_LineStyle);

if(ObjectFind("WR1_Label") != 0)
{
ObjectCreate("WR1_Label", OBJ_TEXT, 0, Time[30], WR1);
ObjectSetText("WR1_Label", " Weekly R1", 8, "Arial", WR1_LineColor);
}
else
{
ObjectMove("WR1_Label", 0, Time[30], WR1);
}

//--------------------------------------------------------

ObjectCreate("WR2_Line", OBJ_HLINE,0, TimeCurrent(),WR2);
ObjectSet("WR2_Line", OBJPROP_COLOR, WR2_LineColor);
ObjectSet("WR2_Line", OBJPROP_WIDTH, WR2_LineWidth);
ObjectSet("WR2_Line", OBJPROP_STYLE, WR2_LineStyle);

if(ObjectFind("WR2_Label") != 0)
{
ObjectCreate("WR2_Label", OBJ_TEXT, 0, Time[30], WR2);
ObjectSetText("WR2_Label", " Weekly R2", 8, "Arial", WR2_LineColor);
}
else
{
ObjectMove("WR2_Label", 0, Time[30], WR2);
}

//---------------------------------------------------------

ObjectCreate("WR3_Line", OBJ_HLINE,0, TimeCurrent(),WR3);
ObjectSet("WR3_Line", OBJPROP_COLOR, WR3_LineColor);
ObjectSet("WR3_Line", OBJPROP_WIDTH, WR3_LineWidth);
ObjectSet("WR3_Line", OBJPROP_STYLE, WR3_LineStyle);

if(ObjectFind("WR3_Label") != 0)
{
ObjectCreate("WR3_Label", OBJ_TEXT, 0, Time[30], WR3);
ObjectSetText("WR3_Label", " Weekly R3", 8, "Arial", WR3_LineColor);
}
else
{
ObjectMove("WR3_Label", 0, Time[30], WR3);
}

//---------------------------------------------------------

ObjectCreate("WS1_Line", OBJ_HLINE,0, TimeCurrent(),WS1);
ObjectSet("WS1_Line", OBJPROP_COLOR, WS1_LineColor);
ObjectSet("WS1_Line", OBJPROP_WIDTH, WS1_LineWidth);
ObjectSet("WS1_Line", OBJPROP_STYLE, WS1_LineStyle);

if(ObjectFind("WS1_Label") != 0)
{
ObjectCreate("WS1_Label", OBJ_TEXT, 0, Time[30], WS1);
ObjectSetText("WS1_Label", "Weekly S1", 8, "Arial", WS1_LineColor);
}
else
{
ObjectMove("WS1_Label", 0, Time[30], WS1);
}

//---------------------------------------------------------

ObjectCreate("WS2_Line", OBJ_HLINE,0, TimeCurrent(),WS2);
ObjectSet("WS2_Line", OBJPROP_COLOR, WS2_LineColor);
ObjectSet("WS2_Line", OBJPROP_WIDTH, WS2_LineWidth);
ObjectSet("WS2_Line", OBJPROP_STYLE, WS2_LineStyle);

if(ObjectFind("WS2_Label") != 0)
{
ObjectCreate("WS2_Label", OBJ_TEXT, 0, Time[30], WS2);
ObjectSetText("WS2_Label", "Weekly S2", 8, "Arial", WS2_LineColor);
}
else
{
ObjectMove("WS2_Label", 0, Time[30], WS2);
}
//---------------------------------------------------------

ObjectCreate("WS3_Line", OBJ_HLINE,0, TimeCurrent(),WS3);
ObjectSet("WS3_Line", OBJPROP_COLOR, WS3_LineColor);
ObjectSet("WS3_Line", OBJPROP_WIDTH, WS3_LineWidth);
ObjectSet("WS3_Line", OBJPROP_STYLE, WS3_LineStyle);

if(ObjectFind("WS3_Label") != 0)
{
ObjectCreate("WS3_Label", OBJ_TEXT, 0, Time[30], WS3);
ObjectSetText("WS3_Label", "Weekly S3", 8, "Arial", WS3_LineColor);
}
else
{
ObjectMove("WS3_Label", 0, Time[30], WS3);
}
}
//---------------------------------------------------------

ObjectsRedraw();

   return(0);
  }
  
//---------------------------------------------------------