Hi Y'all,
Thank you to the coder who originally coded this.
Very keen to get a weekly pivot indicator with a time zone offset. Been manipulating someone else's indicator, but I really do not have a clue?
The indicator below needs a timezone offset so that the indicator can take its weekly close price on Monday 01:59 and 59 seconds (W_yesterday_close)
and its weekly open price at 02:00 and 00 seconds (W_today_open).
If anyone could post a coded version of a weekly pivot with timezone offset that would be highly appreciated.
Thank you
Below is where the problem is in the code.
Below is the entire code of the indicator that I have been looking at.
Thank you to the coder who originally coded this.
Very keen to get a weekly pivot indicator with a time zone offset. Been manipulating someone else's indicator, but I really do not have a clue?
The indicator below needs a timezone offset so that the indicator can take its weekly close price on Monday 01:59 and 59 seconds (W_yesterday_close)
and its weekly open price at 02:00 and 00 seconds (W_today_open).
If anyone could post a coded version of a weekly pivot with timezone offset that would be highly appreciated.
Thank you
Below is where the problem is in the code.
Inserted Code
//----------------------------------------------------------------------------- Weekly ---------------
ArrayCopyRates(W_rates_d1, Symbol(), 10080);
W_yesterday_open = W_rates_d1[1][1];
W_yesterday_high = W_rates_d1[1][3];
W_yesterday_low = W_rates_d1[1][2];
W_day_high = W_rates_d1[0][3];
W_day_low = W_rates_d1[0][2];
if(DayOfWeek()==1)
{if(Hour()==1)
{if(Minute()==59)
{if(Seconds()==59)
{ W_yesterday_close = MarketInfo(Symbol(),MODE_BID);
}}}} else W_yesterday_close = W_yesterday_close;
if(DayOfWeek()==1)
{if(Hour()==2)
{if(Minute()==0)
{if(Seconds()==0)
{ W_today_open = MarketInfo(Symbol(),MODE_BID);
}}}} else W_today_open = W_today_open;
if(DayOfWeek()>1)
{W_yesterday_close = W_yesterday_close;
W_today_open = W_today_open;
}
if(DayOfWeek()==0)
{W_yesterday_close = W_yesterday_close;
W_today_open = W_today_open;
}
//---- Calculate Pivots
W_D = (W_day_high - W_day_low);
W_Q = (W_yesterday_high - W_yesterday_low);
W_P = (W_yesterday_high + W_yesterday_low + W_yesterday_close + W_today_open)/4;
W_R1 = (2*W_P)-W_yesterday_low;
W_S1 = (2*W_P)-W_yesterday_high;
W_R2 = W_P+(W_yesterday_high - W_yesterday_low);
W_S2 = W_P-(W_yesterday_high - W_yesterday_low);
W_R3 = (2*W_P)+(W_yesterday_high-(2*W_yesterday_low));
W_M5 = (W_R2+W_R3)/2;
// W_R2 = W_P-W_S1+W_R1;
W_M4 = (W_R1+W_R2)/2;
// W_R1 = (2*W_P)-W_yesterday_low;
W_M3 = (W_P+W_R1)/2;
// W_P = (W_yesterday_high + W_yesterday_low + W_yesterday_close + W_today_open)/4;
W_M2 = (W_P+W_S1)/2;
// W_S1 = (2*W_P)-W_yesterday_high;
W_M1 = (W_S1+W_S2)/2;
// W_S2 = W_P-W_R1+W_S1;
W_S3 = (2*W_P)-((2* W_yesterday_high)-W_yesterday_low);
W_M0 = (W_S2+W_S3)/2;
if (W_Q > 5)
{
W_nQ = W_Q;
}
else
{
W_nQ = W_Q*10000;
}
if (W_D > 5)
{
W_nD = W_D;
}
else
{
W_nD = W_D*10000;
} Below is the entire code of the indicator that I have been looking at.
Inserted Code
//+------------------------------------------------------------------+
//| Weekly_Pivot_Indicator.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| [url]http://www.metaquotes.net[/url] |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 EMPTY
//extern bool pivots = true;
extern bool weekly = true;
extern bool midpivots = false;
extern int Period1 = PERIOD_W1;
//---------------------------------
double W_day_high=0;
double W_day_low=0;
double W_yesterday_high=0;
double W_yesterday_open=0;
double W_yesterday_low=0;
double W_yesterday_close=0;
double W_today_open=0;
double W_today_high=0;
double W_today_low=0;
double W_P=0;
double W_Q=0;
double W_R1,W_R2,W_R3;
double W_M0,W_M1,W_M2,W_M3,W_M4,W_M5;
double W_S1,W_S2,W_S3;
double W_nQ=0;
double W_nD=0;
double W_D=0;
double W_rates_d1[2][6];
double W_ExtMapBuffer[];
//---------------------------------
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,159);
SetIndexBuffer(2, W_ExtMapBuffer);
//---- indicators
W_R1=0; W_R2=0; W_R3=0;
W_M0=0; W_M1=0; W_M2=0; W_M3=0; W_M4=0; W_M5=0;
W_S1=0; W_S2=0; W_S3=0;
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//---- TODO: add your code here
//--------------------------------------
ObjectDelete("W_R1 Label");
ObjectDelete("W_R1 Line");
ObjectDelete("W_R2 Label");
ObjectDelete("W_R2 Line");
ObjectDelete("W_R3 Label");
ObjectDelete("W_R3 Line");
ObjectDelete("W_S1 Label");
ObjectDelete("W_S1 Line");
ObjectDelete("W_S2 Label");
ObjectDelete("W_S2 Line");
ObjectDelete("W_S3 Label");
ObjectDelete("W_S3 Line");
ObjectDelete("W_P Label");
ObjectDelete("W_P Line");
ObjectDelete("W_M5 Label");
ObjectDelete("W_M5 Line");
ObjectDelete("W_M4 Label");
ObjectDelete("W_M4 Line");
ObjectDelete("W_M3 Label");
ObjectDelete("W_M3 Line");
ObjectDelete("W_M2 Label");
ObjectDelete("W_M2 Line");
ObjectDelete("W_M1 Label");
ObjectDelete("W_M1 Line");
ObjectDelete("W_M0 Label");
ObjectDelete("W_M0 Line");
//--------------------------------------
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//---- TODO: add your code here
/*
//---- exit if period is greater than daily charts
if(Period() > 1440)
{
Print("Error - Chart period is greater than 1 day.");
return(-1); // then exit
}
*/
//----------------------------------------------------------------------------- Weekly ---------------
ArrayCopyRates(W_rates_d1, Symbol(), 10080);
W_yesterday_open = W_rates_d1[1][1];
W_yesterday_high = W_rates_d1[1][3];
W_yesterday_low = W_rates_d1[1][2];
W_day_high = W_rates_d1[0][3];
W_day_low = W_rates_d1[0][2];
if(DayOfWeek()==1)
{if(Hour()==1)
{if(Minute()==59)
{if(Seconds()==59)
{ W_yesterday_close = MarketInfo(Symbol(),MODE_BID);
}}}} else W_yesterday_close = W_yesterday_close;
if(DayOfWeek()==1)
{if(Hour()==2)
{if(Minute()==0)
{if(Seconds()==0)
{ W_today_open = MarketInfo(Symbol(),MODE_BID);
}}}} else W_today_open = W_today_open;
if(DayOfWeek()>1)
{W_yesterday_close = W_yesterday_close;
W_today_open = W_today_open;
}
if(DayOfWeek()==0)
{W_yesterday_close = W_yesterday_close;
W_today_open = W_today_open;
}
//---- Calculate Pivots
W_D = (W_day_high - W_day_low);
W_Q = (W_yesterday_high - W_yesterday_low);
W_P = (W_yesterday_high + W_yesterday_low + W_yesterday_close + W_today_open)/4;
W_R1 = (2*W_P)-W_yesterday_low;
W_S1 = (2*W_P)-W_yesterday_high;
W_R2 = W_P+(W_yesterday_high - W_yesterday_low);
W_S2 = W_P-(W_yesterday_high - W_yesterday_low);
W_R3 = (2*W_P)+(W_yesterday_high-(2*W_yesterday_low));
W_M5 = (W_R2+W_R3)/2;
// W_R2 = W_P-W_S1+W_R1;
W_M4 = (W_R1+W_R2)/2;
// W_R1 = (2*W_P)-W_yesterday_low;
W_M3 = (W_P+W_R1)/2;
// W_P = (W_yesterday_high + W_yesterday_low + W_yesterday_close + W_today_open)/4;
W_M2 = (W_P+W_S1)/2;
// W_S1 = (2*W_P)-W_yesterday_high;
W_M1 = (W_S1+W_S2)/2;
// W_S2 = W_P-W_R1+W_S1;
W_S3 = (2*W_P)-((2* W_yesterday_high)-W_yesterday_low);
W_M0 = (W_S2+W_S3)/2;
if (W_Q > 5)
{
W_nQ = W_Q;
}
else
{
W_nQ = W_Q*10000;
}
if (W_D > 5)
{
W_nD = W_D;
}
else
{
W_nD = W_D*10000;
}
//Comment("High= ",yesterday_high," Previous DaysRange= ",nQ,"\nLow= ",yesterday_low," Current DaysRange= ",nD,"\nClose= ",yesterday_close," Time Frame ",Period1 );
//--------------------------------------------------------------------------------------------------------------
//---- Set line labels on chart window
//---------------------------------------------------------------------WEEKLY Pivot Lines --------------------
if (weekly==true)
{
if(ObjectFind("W_R1 label") != 0)
{
ObjectCreate("W_R1 label", OBJ_TEXT, 0, Time[0], W_R1);
ObjectSetText("W_R1 label", "W_R1 " +DoubleToStr(W_R1,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_R1 label", 0, Time[0], W_R1);
}
if(ObjectFind("W_R2 label") != 0)
{
ObjectCreate("W_R2 label", OBJ_TEXT, 0, Time[20], W_R2);
ObjectSetText("W_R2 label", "W_R2 " +DoubleToStr(W_R2,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_R2 label", 0, Time[0], W_R2);
}
if(ObjectFind("W_R3 label") != 0)
{
ObjectCreate("W_R3 label", OBJ_TEXT, 0, Time[20], W_R3);
ObjectSetText("W_R3 label", "W_R3 " +DoubleToStr(W_R3,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_R3 label", 0, Time[0], W_R3);
}
if(ObjectFind("W_P label") != 0)
{
ObjectCreate("W_P label", OBJ_TEXT, 0, Time[0], W_P);
ObjectSetText("W_P label", "W_Pivot " +DoubleToStr(W_P,4), 8, "Arial",EMPTY);
}
else
{
ObjectMove("W_P label", 0, Time[0], W_P);
}
if(ObjectFind("W_S1 label") != 0)
{
ObjectCreate("W_S1 label", OBJ_TEXT, 0, Time[0], W_S1);
ObjectSetText("W_S1 label", "W_S1 " +DoubleToStr(W_S1,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_S1 label", 0, Time[0], W_S1);
}
if(ObjectFind("W_S2 label") != 0)
{
ObjectCreate("W_S2 label", OBJ_TEXT, 0, Time[20], W_S2);
ObjectSetText("W_S2 label", "W_S2 " +DoubleToStr(W_S2,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_S2 label", 0, Time[0], W_S2);
}
if(ObjectFind("W_S3 label") != 0)
{
ObjectCreate("W_S3 label", OBJ_TEXT, 0, Time[20], W_S3);
ObjectSetText("W_S3 label", "W_S3 " +DoubleToStr(W_S3,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_S3 label", 0, Time[0], W_S3);
}
//--- Draw Pivot lines on chart
if(ObjectFind("W_S1 line") != 0)
{
ObjectCreate("W_S1 line", OBJ_HLINE, 0, Time[40], W_S1);
ObjectSet("W_S1 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_S1 line", OBJPROP_WIDTH,4);
ObjectSet("W_S1 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("W_S1 line", 0, Time[40], W_S1);
}
if(ObjectFind("W_S2 line") != 0)
{
ObjectCreate("W_S2 line", OBJ_HLINE, 0, Time[40], W_S2);
ObjectSet("W_S2 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_S2 line", OBJPROP_WIDTH,4);
ObjectSet("W_S2 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("W_S2 line", 0, Time[40], W_S2);
}
if(ObjectFind("W_S3 line") != 0)
{
ObjectCreate("W_S3 line", OBJ_HLINE, 0, Time[40], W_S3);
ObjectSet("W_S3 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_S3 line", OBJPROP_WIDTH,4);
ObjectSet("W_S3 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("W_S3 line", 0, Time[40], W_S3);
}
if(ObjectFind("W_P line") != 0)
{
ObjectCreate("W_P line", OBJ_HLINE, 0, Time[40], W_P);
ObjectSet("W_P line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_P line", OBJPROP_WIDTH,4);
ObjectSet("W_P line", OBJPROP_COLOR, LightBlue);
}
else
{
ObjectMove("W_P line", 0, Time[40], W_P);
}
if(ObjectFind("W_R1 line") != 0)
{
ObjectCreate("W_R1 line", OBJ_HLINE, 0, Time[40], W_R1);
ObjectSet("W_R1 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_R1 line", OBJPROP_WIDTH,4);
ObjectSet("W_R1 line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("W_R1 line", 0, Time[40], W_R1);
}
if(ObjectFind("W_R2 line") != 0)
{
ObjectCreate("W_R2 line", OBJ_HLINE, 0, Time[40], W_R2);
ObjectSet("W_R2 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_R2 line", OBJPROP_WIDTH,4);
ObjectSet("W_R2 line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("W_R2 line", 0, Time[40], W_R2);
}
if(ObjectFind("W_R3 line") != 0)
{
ObjectCreate("W_R3 line", OBJ_HLINE, 0, Time[40], W_R3);
ObjectSet("W_R3 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_R3 line", OBJPROP_WIDTH,4);
ObjectSet("W_R3 line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("W_R3 line", 0, Time[40], W_R3);
}
}
//---- End of Pivot Line Draw
//------ Midpoints Pivots
if (weekly == true && midpivots==true)
{
if(ObjectFind("W_M5 label") != 0)
{
ObjectCreate("W_M5 label", OBJ_TEXT, 0, Time[20], W_M5);
ObjectSetText("W_M5 label", "W_M5 " +DoubleToStr(W_M5,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_M5 label", 0, Time[0], W_M5);
}
if(ObjectFind("W_M4 label") != 0)
{
ObjectCreate("W_M4 label", OBJ_TEXT, 0, Time[20], W_M4);
ObjectSetText("W_M4 label", "W_M4 " +DoubleToStr(W_M4,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_M4 label", 0, Time[0], W_M4);
}
if(ObjectFind("W_M3 label") != 0)
{
ObjectCreate("W_M3 label", OBJ_TEXT, 0, Time[20], W_M3);
ObjectSetText("W_M3 label", "W_M3 " +DoubleToStr(W_M3,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_M3 label", 0, Time[0], W_M3);
}
if(ObjectFind("W_M2 label") != 0)
{
ObjectCreate("W_M2 label", OBJ_TEXT, 0, Time[20], W_M2);
ObjectSetText("W_M2 label", "W_M2 " +DoubleToStr(W_M2,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_M2 label", 0, Time[0], W_M2);
}
if(ObjectFind("W_M1 label") != 0)
{
ObjectCreate("W_M1 label", OBJ_TEXT, 0, Time[20], W_M1);
ObjectSetText("W_M1 label", "W_M1 " +DoubleToStr(W_M1,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_M1 label", 0, Time[0], W_M1);
}
if(ObjectFind("W_M0 label") != 0)
{
ObjectCreate("W_M0 label", OBJ_TEXT, 0, Time[20], W_M0);
ObjectSetText("W_M0 label", "W_M0 " +DoubleToStr(W_M0,4), 8, "Arial", EMPTY);
}
else
{
ObjectMove("W_M0 label", 0, Time[0], W_M0);
}
//---- Draw Midpoint Pivots on Chart
if(ObjectFind("W_M5 line") != 0)
{
ObjectCreate("W_M5 line", OBJ_HLINE, 0, Time[40], W_M5);
ObjectSet("W_M5 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_M5 line", OBJPROP_WIDTH,1);
ObjectSet("W_M5 line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("W_M5 line", 0, Time[40], W_M5);
}
if(ObjectFind("W_M4 line") != 0)
{
ObjectCreate("W_M4 line", OBJ_HLINE, 0, Time[40], W_M4);
ObjectSet("W_M4 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_M4 line", OBJPROP_WIDTH,1);
ObjectSet("W_M4 line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("W_M4 line", 0, Time[40], W_M4);
}
if(ObjectFind("W_M3 line") != 0)
{
ObjectCreate("W_M3 line", OBJ_HLINE, 0, Time[40], W_M3);
ObjectSet("W_M3 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_M3 line", OBJPROP_WIDTH,1);
ObjectSet("W_M3 line", OBJPROP_COLOR, Red);
}
else
{
ObjectMove("W_M3 line", 0, Time[40], W_M3);
}
if(ObjectFind("W_M2 line") != 0)
{
ObjectCreate("W_M2 line", OBJ_HLINE, 0, Time[40], W_M2);
ObjectSet("W_M2 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_M2 line", OBJPROP_WIDTH,1);
ObjectSet("W_M2 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("W_M2 line", 0, Time[40], W_M2);
}
if(ObjectFind("W_M1 line") != 0)
{
ObjectCreate("W_M1 line", OBJ_HLINE, 0, Time[40], W_M1);
ObjectSet("W_M1 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_M1 line", OBJPROP_WIDTH,1);
ObjectSet("W_M1 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("W_M1 line", 0, Time[40], W_M1);
}
if(ObjectFind("W_M0 line") != 0)
{
ObjectCreate("W_M0 line", OBJ_HLINE, 0, Time[40], W_M0);
ObjectSet("W_M0 line", OBJPROP_STYLE, STYLE_SOLID);
ObjectSet("W_M0 line", OBJPROP_WIDTH,1);
ObjectSet("W_M0 line", OBJPROP_COLOR, Blue);
}
else
{
ObjectMove("W_M0 line", 0, Time[40], W_M0);
}
}
//-------------=-------------------------------------------End
//-----------------------------------------------------------------------------------------------------------------------
//---- End Of Program
return(0);
}
//+------------------------------------------------------------------+