Market_HoursM_sw





//Market_HoursM_sw.mq4
#property 		indicator_separate_window
#property		indicator_buffers 8

#property		indicator_color1 Lime
#property		indicator_width1 3
#property		indicator_color2 Red
#property		indicator_width2 3
#property		indicator_color3 Blue
#property		indicator_width3 3
#property		indicator_color4 Yellow
#property		indicator_width4 3

#property		indicator_color5 BlueViolet
#property		indicator_color6 DodgerBlue
#property		indicator_color7 BlueViolet
#property		indicator_color8 DodgerBlue

#property		indicator_width5 0
#property		indicator_width6 0
#property		indicator_width7 0
#property		indicator_width8 0



#property 		indicator_maximum 9
#property 		indicator_minimum 0

extern int     GMTOffset      = 0;

// Buffers
double dLondonBuffer[];
double dNewYorkBuffer[];
double dSydneyBuffer[];
double dTokyoBuffer[];

double dTokyoBuffer1[];
double dTokyoBuffer2[];
double dTokyoBuffer3[];
double dTokyoBuffer4[];



int LondonOpen;
int LondonClose;   
int NewYorkOpen;  
int NewYorkClose; 
int SydneyOpen;   
int SydneyClose;  
int TokyoOpen;    
int TokyoClose;   

int TokyoOpen1;    
int TokyoClose1;   
int TokyoOpen2;    
int TokyoClose2;   
int TokyoOpen3;    
int TokyoClose3;   
int TokyoOpen4;    
int TokyoClose4;   




int init() {

	IndicatorShortName("Market Hours ");
	
	SetIndexBuffer(0,dLondonBuffer);
	SetIndexLabel(0,"London");
	SetIndexBuffer(1,dNewYorkBuffer);
	SetIndexLabel(1,"New York");
	SetIndexBuffer(2,dSydneyBuffer);
	SetIndexLabel(2,"");
	SetIndexBuffer(3,dTokyoBuffer);
	SetIndexLabel(3,"");

	SetIndexBuffer(4,dTokyoBuffer1);
	SetIndexLabel(4,"4H");

	SetIndexBuffer(5,dTokyoBuffer2);
	SetIndexLabel(5,"4H");

	SetIndexBuffer(6,dTokyoBuffer3);
	SetIndexLabel(6,"4H");
    
	SetIndexBuffer(7,dTokyoBuffer4);
	SetIndexLabel(7,"4H");




	
	return(0);
}

int start() {

   //set Times 
   LondonOpen     = GMTOffset + 7;
   LondonClose    = GMTOffset + 16;
   NewYorkOpen    = GMTOffset + 12;
   NewYorkClose   = GMTOffset + 21;
   SydneyOpen     = GMTOffset + 0;
   SydneyClose    = GMTOffset + 6;
   TokyoOpen      = GMTOffset + 0;
   TokyoClose     = GMTOffset + 9;

   TokyoOpen1      = GMTOffset + 4;
   TokyoClose1     = GMTOffset + 9;
 
   TokyoOpen2      = GMTOffset + 8;
   TokyoClose2     = GMTOffset + 13;
 
   TokyoOpen3      = GMTOffset + 12;
   TokyoClose3     = GMTOffset + 17;
   
   TokyoOpen4      = GMTOffset + 16;
   TokyoClose4     = GMTOffset + 20;

	// Determine number of bars to iterate over
	int iBarsToCalc = Bars - IndicatorCounted();
	if (iBarsToCalc < Bars) iBarsToCalc++;
	
	// Iterate over bars
	for (int i=iBarsToCalc-1;i>=0;i--) {
		
		// Set London Line
		if (isMarketOpen(LondonOpen, LondonClose, Time[i]))
			dLondonBuffer[i] = 8;
		else
			dLondonBuffer[i] = EMPTY_VALUE;
		
		// Set NewYork Line
		if (isMarketOpen(NewYorkOpen, NewYorkClose, Time[i]))
			dNewYorkBuffer[i] = 6;
		else
			dNewYorkBuffer[i] = EMPTY_VALUE;		
			
		// Set Sydney Line
		if (isMarketOpen(SydneyOpen, SydneyClose, Time[i]))
			dSydneyBuffer[i] = 4;
		else
			dSydneyBuffer[i] = EMPTY_VALUE;	
				
		// Set Tokyo Line
		if (isMarketOpen(TokyoOpen, TokyoClose, Time[i]))
			dTokyoBuffer[i] = 2;
		else
			dTokyoBuffer[i] = EMPTY_VALUE;	


		// Set Tokyo Line1
		if (isMarketOpen(TokyoOpen1, TokyoClose1, Time[i]))
			dTokyoBuffer1[i] = 1;
		else
			dTokyoBuffer1[i] = EMPTY_VALUE;	
		// Set Tokyo Line1
		if (isMarketOpen(TokyoOpen2, TokyoClose2, Time[i]))
			dTokyoBuffer2[i] = 1;
		else
			dTokyoBuffer2[i] = EMPTY_VALUE;	
		// Set Tokyo Line1
		if (isMarketOpen(TokyoOpen3, TokyoClose3, Time[i]))
			dTokyoBuffer3[i] = 1;
		else
			dTokyoBuffer3[i] = EMPTY_VALUE;	

		// Set Tokyo Line1
		if (isMarketOpen(TokyoOpen4, TokyoClose4, Time[i]))
			dTokyoBuffer4[i] = 1;
		else
			dTokyoBuffer4[i] = EMPTY_VALUE;	

	}

}

bool isMarketOpen(int iOpenHour, int iCloseHour, datetime timestamp) {

	int iBarHour = TimeHour(timestamp);
	
	if (iOpenHour < iCloseHour && (iBarHour >= iOpenHour && iBarHour < iCloseHour))
		return(true);
	if (iOpenHour > iCloseHour && (iBarHour >= iOpenHour || iBarHour < iCloseHour))
		return(true);
		
	return(false);
}





Sample





Analysis



Market Information Used:

Series array that contains open time of each bar


Indicator Curves created:



Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: