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); } //+------------------------------------------------------------------+