--PivotCustomTime----_v1





//+-------------------------------------------------------------------+
//|                                               PivotCustomTime.mq4 |
//|                       Copyright © 2004, MetaQuotes Software Corp. |
//|                                         http://www.metaquotes.net |
//|                                     Modified by Alejandro Galindo |
//|                                            You are free to use it |
//|      If you want, and if this work/modification is helpful to you |
//|                      send me a PayPal donation to ag@elcactus.com |
//+-------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 EMPTY
//----
extern bool pivots = true;
extern bool camarilla = false;
extern bool midpivots = true;
extern int MyPeriod = PERIOD_D1;
/*+----------------------------------------------------+
 MyPeriod = Period in minutes to consideration, could be:
 43200 for MN1
 10080 for W1
 1440  for D1
 240   for H4
 60    for H1
 30    for M30
 15    for M15  
 5     for M5
 1     for M1
 +-------------------------------------------------------*/
double day_high = 0;
double day_low = 0;
double yesterday_high = 0;
double yesterday_open = 0;
double yesterday_low = 0;
double yesterday_close = 0;
double today_open = 0;
double today_high = 0;
double today_low = 0;
double P = 0;
double Q = 0;
double R1=0, R2=0, R3=0;
double M0=0, M1=0, M2=0, M3=0, M4=0, M5=0;
double S1=0, S2=0, S3=0;
double H4=0, H3=0, L4=0, L3=0;
double nQ = 0;
double nD = 0;
double D = 0;
double rates_d1[2][6];
//----
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0, DRAW_ARROW);
   SetIndexArrow(0, 159);
   SetIndexBuffer(0, ExtMapBuffer1);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
  {
   ObjectDelete("R1 Label");
   ObjectDelete("R1 Line");
   ObjectDelete("R2 Label");
   ObjectDelete("R2 Line");
   ObjectDelete("R3 Label");
   ObjectDelete("R3 Line");
   ObjectDelete("S1 Label");
   ObjectDelete("S1 Line");
   ObjectDelete("S2 Label");
   ObjectDelete("S2 Line");
   ObjectDelete("S3 Label");
   ObjectDelete("S3 Line");
   ObjectDelete("P Label");
   ObjectDelete("P Line");
   ObjectDelete("H4 Label");
   ObjectDelete("H4 Line");
   ObjectDelete("H3 Label");
   ObjectDelete("H3 Line");
   ObjectDelete("L3 Label");
   ObjectDelete("L3 Line");
   ObjectDelete("L4 Label");
   ObjectDelete("L4 Line");
   ObjectDelete("M5 Label");
   ObjectDelete("M5 Line");
   ObjectDelete("M4 Label");
   ObjectDelete("M4 Line");
   ObjectDelete("M3 Label");
   ObjectDelete("M3 Line");
   ObjectDelete("M2 Label");
   ObjectDelete("M2 Line");
   ObjectDelete("M1 Label");
   ObjectDelete("M1 Line");
   ObjectDelete("M0 Label");
   ObjectDelete("M0 Line");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
  {
//---- exit if period is greater than daily charts
   if(Period() > 1440)
     {
       Print("Error - Chart period is greater than 1 day.");
           return(-1); // then exit
     }
//---- Get new daily prices
   ArrayCopyRates(rates_d1, Symbol(), MyPeriod);
   yesterday_close = rates_d1[1][4];
   yesterday_open = rates_d1[1][1];
   today_open = rates_d1[0][1];
   yesterday_high = rates_d1[1][3];
   yesterday_low = rates_d1[1][2];
   day_high = rates_d1[0][3];
   day_low = rates_d1[0][2];
//---- Calculate Pivots
   D = (day_high - day_low);
   Q = (yesterday_high - yesterday_low);
   P = (yesterday_high + yesterday_low + yesterday_close) / 3;
   R1 = (2*P) - yesterday_low;
   S1 = (2*P) - yesterday_high;
   R2 = P + (yesterday_high - yesterday_low);
   S2 = P - (yesterday_high - yesterday_low);
//----
   H4 = (Q*0.55) + yesterday_close;
   H3 = (Q*0.27) + yesterday_close;
   R3 = (2*P) + (yesterday_high - (2*yesterday_low));
   M5 = (R2+R3) / 2;
   // R2 = P-S1+R1;
   M4 = (R1+R2) / 2;
   // R1 = (2*P)-yesterday_low;
   M3 = (P+R1) / 2;
   // P = (yesterday_high + yesterday_low + yesterday_close)/3;
   M2 = (P+S1) / 2;
   // S1 = (2*P)-yesterday_high;
   M1 = (S1+S2) / 2;
   // S2 = P-R1+S1;
   S3 = (2*P) - ((2* yesterday_high) - yesterday_low);
   L3 = yesterday_close - (Q*0.27);
   L4 = yesterday_close - (Q*0.55);
   M0 = (S2 + S3) / 2;
//----
   if(Q > 5)
     {
       nQ = Q;
     }
   else
     {
       nQ = Q*10000;
     }
//----
   if(D > 5)
     {
       nD = D;
     }
   else
     {
       nD = D*10000;
     }
   Comment("High= ", yesterday_high, " Previous DaysRange= ", nQ, "\nLow= ", yesterday_low, 
           " Current DaysRange= ", nD, "\nClose= ", yesterday_close);
   //---- Set line labels on chart window
   //---- Pivot Lines
   if(pivots == true)
     {
       if(ObjectFind("R1 label") != 0)
         {
           ObjectCreate("R1 label", OBJ_TEXT, 0, Time[0], R1);
           ObjectSetText("R1 label", " R1", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("R1 label", 0, Time[0], R1);
         }
       //----
       if(ObjectFind("R2 label") != 0)
         {
           ObjectCreate("R2 label", OBJ_TEXT, 0, Time[20], R2);
           ObjectSetText("R2 label", " R2", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("R2 label", 0, Time[20], R2);
         }
       //----
       if(ObjectFind("R3 label") != 0)
         {
           ObjectCreate("R3 label", OBJ_TEXT, 0, Time[20], R3);
           ObjectSetText("R3 label", " R3", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("R3 label", 0, Time[20], R3);
         }
       //----
       if(ObjectFind("P label") != 0)
         {
           ObjectCreate("P label", OBJ_TEXT, 0, Time[0], P);
           ObjectSetText("P label", "Pivot " +DoubleToStr(P,4), 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("P label", 0, Time[0], P);
         }
       //----
       if(ObjectFind("S1 label") != 0)
         {
           ObjectCreate("S1 label", OBJ_TEXT, 0, Time[0], S1);
           ObjectSetText("S1 label", "S1", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("S1 label", 0, Time[0], S1);
         }
       //----
       if(ObjectFind("S2 label") != 0)
         {
           ObjectCreate("S2 label", OBJ_TEXT, 0, Time[20], S2);
           ObjectSetText("S2 label", "S2", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("S2 label", 0, Time[20], S2);
         }
       //----
       if(ObjectFind("S3 label") != 0)
         {
           ObjectCreate("S3 label", OBJ_TEXT, 0, Time[20], S3);
           ObjectSetText("S3 label", "S3", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("S3 label", 0, Time[20], S3);
         }
       //--- Draw Pivot lines on chart
       if(ObjectFind("S1 line") != 0)
         {
           ObjectCreate("S1 line", OBJ_HLINE, 0, Time[40], S1);
           ObjectSet("S1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("S1 line", OBJPROP_COLOR, Blue);
         }
       else
         {
           ObjectMove("S1 line", 0, Time[40], S1);
         }
       //----
       if(ObjectFind("S2 line") != 0)
         {
           ObjectCreate("S2 line", OBJ_HLINE, 0, Time[40], S2);
           ObjectSet("S2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("S2 line", OBJPROP_COLOR, Blue);
         }
       else
         {
           ObjectMove("S2 line", 0, Time[40], S2);
         }
       //----
       if(ObjectFind("S3 line") != 0)
         {
           ObjectCreate("S3 line", OBJ_HLINE, 0, Time[40], S3);
           ObjectSet("S3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("S3 line", OBJPROP_COLOR, Blue);
         }
       else
         {
           ObjectMove("S3 line", 0, Time[40], S3);
         }
       //----
       if(ObjectFind("P line") != 0)
         {
           ObjectCreate("P line", OBJ_HLINE, 0, Time[40], P);
           ObjectSet("P line", OBJPROP_STYLE, STYLE_DOT);
           ObjectSet("P line", OBJPROP_COLOR, Green);
         }
       else
         {
           ObjectMove("P line", 0, Time[40], P);
         }
       if(ObjectFind("R1 line") != 0)
         {
           ObjectCreate("R1 line", OBJ_HLINE, 0, Time[40], R1);
           ObjectSet("R1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("R1 line", OBJPROP_COLOR, FireBrick);
         }
       else
         {
           ObjectMove("R1 line", 0, Time[40], R1);
         }
       //----
       if(ObjectFind("R2 line") != 0)
         {
         ObjectCreate("R2 line", OBJ_HLINE, 0, Time[40], R2);
         ObjectSet("R2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
         ObjectSet("R2 line", OBJPROP_COLOR, FireBrick);
         }
       else
         {
           ObjectMove("R2 line", 0, Time[40], R2);
         }
       //----
       if(ObjectFind("R3 line") != 0)
         {
           ObjectCreate("R3 line", OBJ_HLINE, 0, Time[40], R3);
           ObjectSet("R3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("R3 line", OBJPROP_COLOR, FireBrick);
         }
       else
         {
           ObjectMove("R3 line", 0, Time[40], R3);
         }
     }
   //---- End of Pivot Line Draw
   //----- Camarilla Lines
   if(camarilla == true)
     {
       if(ObjectFind("H4 label") != 0)
         {
           ObjectCreate("H4 label", OBJ_TEXT, 0, Time[20], H4);
           ObjectSetText("H4 label", " H4", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("H4 label", 0, Time[20], H4);
         }
       //----
       if(ObjectFind("H3 label") != 0)
         {
           ObjectCreate("H3 label", OBJ_TEXT, 0, Time[20], H3);
           ObjectSetText("H3 label", " H3", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("H3 label", 0, Time[20], H3);
         }
       //----
       if(ObjectFind("L3 label") != 0)
         {
           ObjectCreate("L3 label", OBJ_TEXT, 0, Time[20], L3);
           ObjectSetText("L3 label", " L3", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("L3 label", 0, Time[20], L3);
         }
       //----
       if(ObjectFind("L4 label") != 0)
         {
           ObjectCreate("L4 label", OBJ_TEXT, 0, Time[20], L4);
           ObjectSetText("L4 label", " L4", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("L4 label", 0, Time[20], L4);
         }
       //---- Draw Camarilla lines on Chart
       if(ObjectFind("H4 line") != 0)
         {
           ObjectCreate("H4 line", OBJ_HLINE, 0, Time[40], H4);
           ObjectSet("H4 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("H4 line", OBJPROP_COLOR, DimGray);
         }
       else
         {
           ObjectMove("H4 line", 0, Time[40], H4);
         }
       //----
       if(ObjectFind("H3 line") != 0)
         {
           ObjectCreate("H3 line", OBJ_HLINE, 0, Time[40], H3);
           ObjectSet("H3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("H3 line", OBJPROP_COLOR, DimGray);
         }
       else
         {
           ObjectMove("H3 line", 0, Time[40], H3);
         }
       //----
       if(ObjectFind("L3 line") != 0)
         {
           ObjectCreate("L3 line", OBJ_HLINE, 0, Time[40], L3);
           ObjectSet("L3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("L3 line", OBJPROP_COLOR, DimGray);
         }
       else
         {
           ObjectMove("L3 line", 0, Time[40], L3);
         }
       //----
       if(ObjectFind("L4 line") != 0)
         {
           ObjectCreate("L4 line", OBJ_HLINE, 0, Time[40], L4);
           ObjectSet("L4 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("L4 line", OBJPROP_COLOR, DimGray);
         }
       else
         {
           ObjectMove("L4 line", 0, Time[40], L4);
         }
     }
   //-------End of Draw Camarilla Lines
   //------ Midpoints Pivots
   if(midpivots == true)
     {
       if(ObjectFind("M5 label") != 0)
         {
           ObjectCreate("M5 label", OBJ_TEXT, 0, Time[20], M5);
           ObjectSetText("M5 label", " M5", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("M5 label", 0, Time[20], M5);
         }
       //----
       if(ObjectFind("M4 label") != 0)
         {
           ObjectCreate("M4 label", OBJ_TEXT, 0, Time[20], M4);
           ObjectSetText("M4 label", " M4", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("M4 label", 0, Time[20], M4);
         }
       //----
       if(ObjectFind("M3 label") != 0)
         {
           ObjectCreate("M3 label", OBJ_TEXT, 0, Time[20], M3);
           ObjectSetText("M3 label", " M3", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("M3 label", 0, Time[20], M3);
         }
       //----
       if(ObjectFind("M2 label") != 0)
         {
           ObjectCreate("M2 label", OBJ_TEXT, 0, Time[20], M2);
           ObjectSetText("M2 label", " M2", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("M2 label", 0, Time[20], M2);
         }
       //----
       if(ObjectFind("M1 label") != 0)
         {
           ObjectCreate("M1 label", OBJ_TEXT, 0, Time[20], M1);
           ObjectSetText("M1 label", " M1", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("M1 label", 0, Time[20], M1);
         }
       //----
       if(ObjectFind("M0 label") != 0)
         {
           ObjectCreate("M0 label", OBJ_TEXT, 0, Time[20], M0);
           ObjectSetText("M0 label", " M0", 8, "Arial", DimGray);
         }
       else
         {
           ObjectMove("M0 label", 0, Time[20], M0);
         }
       //---- Draw Midpoint Pivots on Chart
       if(ObjectFind("M5 line") != 0)
         {
           ObjectCreate("M5 line", OBJ_HLINE, 0, Time[40], M5);
           ObjectSet("M5 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("M5 line", OBJPROP_COLOR, DimGray);
         }
       else
         {
           ObjectMove("M5 line", 0, Time[40], M5);
         }
       //----
       if(ObjectFind("M4 line") != 0)
         {
           ObjectCreate("M4 line", OBJ_HLINE, 0, Time[40], M4);
           ObjectSet("M4 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("M4 line", OBJPROP_COLOR, DimGray);
         }
       else
         {
           ObjectMove("M4 line", 0, Time[40], M4);
         }
       //----
       if(ObjectFind("M3 line") != 0)
         {
           ObjectCreate("M3 line", OBJ_HLINE, 0, Time[40], M3);
           ObjectSet("M3 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("M3 line", OBJPROP_COLOR, DimGray);
         }
       else
         {
           ObjectMove("M3 line", 0, Time[40], M3);
         }
       //----
       if(ObjectFind("M2 line") != 0)
         {
           ObjectCreate("M2 line", OBJ_HLINE, 0, Time[40], M2);
           ObjectSet("M2 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("M2 line", OBJPROP_COLOR, DimGray);
         }
       else
         {
           ObjectMove("M2 line", 0, Time[40], M2);
         }
       //----
       if(ObjectFind("M1 line") != 0)
         {
           ObjectCreate("M1 line", OBJ_HLINE, 0, Time[40], M1);
           ObjectSet("M1 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("M1 line", OBJPROP_COLOR, DimGray);
         }
       else
         {
           ObjectMove("M1 line", 0, Time[40], M1);
         }
       //----
       if(ObjectFind("M0 line") != 0)
         {
           ObjectCreate("M0 line", OBJ_HLINE, 0, Time[40], M0);
           ObjectSet("M0 line", OBJPROP_STYLE, STYLE_DASHDOTDOT);
           ObjectSet("M0 line", OBJPROP_COLOR, DimGray);
         }
       else
         {
           ObjectMove("M0 line", 0, Time[40], M0);
         }
     }
//----End of Midpoint Pivots Draw
//---- End Of Program
   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_ARROW


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: