//============================================================================= // MarketHoursShade_v01.mq4 // Originally by KimIV // http://www.kimiv.ru // // 23.11.2005 // // 29 Nov 06: Modified by Derk Wehler to be readable. // Added/Changed a couple of input parameter defaults // No other changes. // //============================================================================= #property copyright "Derk Wehler" #property link "none" #property indicator_chart_window //------- ------------------------------- extern int NumberOfDays = 50; extern string s1 = "European"; extern color Color_1 = C'60, 60, 60'; extern string Begin_1 = "07:00"; extern string End_1 = "17:00"; extern string s2 = ""; extern string s3 = "American"; extern color Color_2 = C'80, 80, 80'; extern string Begin_2 = "13:00"; extern string End_2 = "23:00"; extern string s4 = ""; extern string s5 = "Asian/Austrailian"; extern color Color_3 = C'100, 100, 100'; extern string Begin_3 = "23:00"; extern string End_3 = "09:00"; extern bool HighRange = true; //============================================================================= // Custom indicator initialization function //============================================================================= void init() { DeleteObjects(); for (int i=0; i < NumberOfDays; i++) { CreateObjects("PWT1"+i, Color_1); CreateObjects("PWT2"+i, Color_2); CreateObjects("PWT3"+i, Color_3); } Comment(""); } //============================================================================= // Custor indicator deinitialization function //============================================================================= void deinit() { DeleteObjects(); Comment(""); } //============================================================================= // //============================================================================= void CreateObjects(string no, color cl) { ObjectCreate(no, OBJ_RECTANGLE, 0, 0,0, 0,0); ObjectSet(no, OBJPROP_STYLE, STYLE_SOLID); ObjectSet(no, OBJPROP_COLOR, cl); ObjectSet(no, OBJPROP_BACK, True); } //============================================================================= // //============================================================================= void DeleteObjects() { for (int i=0; i < NumberOfDays; i++) { ObjectDelete("PWT1"+i); ObjectDelete("PWT2"+i); ObjectDelete("PWT3"+i); } } //============================================================================= // Custom indicator iteration function //============================================================================= void start() { datetime dt = CurTime(); for (int i=0; i < NumberOfDays; i++) { DrawObjects(dt, "PWT1"+i, Begin_1, End_1); DrawObjects(dt, "PWT2"+i, Begin_2, End_2); DrawObjects(dt, "PWT3"+i, Begin_3, End_3); dt = decDateTradeDay(dt); while (TimeDayOfWeek(dt) > 5) dt = decDateTradeDay(dt); } } //============================================================================= // //============================================================================= void DrawObjects(datetime dt, string no, string tb, string te) { datetime t1, t2; double p1, p2; int b1, b2; t1 = StrToTime(TimeToStr(dt, TIME_DATE) + " " + tb); t2 = StrToTime(TimeToStr(dt, TIME_DATE) + " " + te); b1 = iBarShift(NULL, 0, t1); b2 = iBarShift(NULL, 0, t2); p1 = High[Highest(NULL, 0, MODE_HIGH, b1-b2, b2)]; p2 = Low [Lowest (NULL, 0, MODE_LOW , b1-b2, b2)]; if (!HighRange) { p1 = 0; p2 = 2 * p2; } ObjectSet(no, OBJPROP_TIME1 , t1); ObjectSet(no, OBJPROP_PRICE1, p1); ObjectSet(no, OBJPROP_TIME2 , t2); ObjectSet(no, OBJPROP_PRICE2, p2); } //============================================================================= // //============================================================================= datetime decDateTradeDay (datetime dt) { int ty = TimeYear(dt); int tm = TimeMonth(dt); int td = TimeDay(dt); int th = TimeHour(dt); int ti = TimeMinute(dt); td--; if (td == 0) { tm--; if (tm == 0) { ty--; tm = 12; } if (tm == 1 || tm == 3 || tm == 5 || tm == 7 || tm == 8 || tm == 10 || tm == 12) td = 31; if (tm == 2) if (MathMod(ty, 4) == 0) td = 29; else td = 28; if (tm == 4 || tm == 6 || tm == 9 || tm == 11) td = 30; } return(StrToTime(ty + "." + tm + "." + td + " " + th + ":" + ti)); }
Sample
Analysis
Market Information Used:
Series array that contains the highest prices of each bar
Indicator Curves created:
Indicators Used:
Custom Indicators Used:
Order Management characteristics:
Other Features: