MarketHoursShade_v01_v1





//=============================================================================
//                                                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: