TimeOut





//+------------------------------------------------------------------+
//|                                                      TimeOut.mq4 |
//|                              Äîáðîæåëàòåëü, thanks to: komposter |
//|                                      mailto:komposterius@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Äîáðîæåëàòåëü, thanks to: komposter"
#property link      "mailto:komposterius@mail.ru"


#property indicator_separate_window
#property indicator_minimum -1
#property  indicator_buffers 2
#property  indicator_color1  Red
#property  indicator_color2  Lime

string name = "TimeOut";
bool first = true;
int Max_TimeOut;
datetime Max_TimeOut_Time;
double buf0[];
double buf1[];
double SummTimeOut, Average_TimeOut;
int Counted;

// ×àñîâîé ïîÿñ ( äëÿ Ìîñêâû  GMT_shift = 3 )
extern int GMT_shift = 3;
// Êîë-âî îòðèñîâûâàåìûõ áàðîâ èíäèêàòîðà
extern int DrawBars = 333;

extern color OKColor				= Lime;
extern color StandartColor		= White;
extern color AttentionColor	= Yellow;
extern color WarningColor		= Red;

int init()
{
	IndicatorShortName( name );
	IndicatorDigits ( 3 );
	SetIndexBuffer ( 0 , buf0 );
	SetIndexStyle ( 0 , DRAW_HISTOGRAM  );
	SetIndexLabel ( 0 , "TimeOut" );
	SetIndexBuffer ( 1 , buf1 );
	SetIndexStyle ( 1 , DRAW_LINE  );
	SetIndexLabel ( 1 , "Average TimeOut" );
	SetIndexEmptyValue ( 1, 0 );
	for ( int i = MathMax( Bars, DrawBars ); i >= 0; i -- )
	{ buf0[i] = 0;  buf1[i] = 0; }
	first = true;
return(0);
}

int start()
{
	if ( DrawBars > Bars && Bars > 0 ) { DrawBars = Bars - 1; }
// èíèöèàëèçàöèÿ ïåðåìåííûõ
// öâåò âûâîäèìîé èíôîðìàöèè ïðè çíà÷åíèè èíäèêàòîðà <= 2
	color _color = OKColor;
// ðàçìåð øðèôòà âûâîäèìîé èíôîðìàöèè ïðè çíà÷åíèè èíäèêàòîðà <= 2
	double size = 13;

//ïðè ïåðâîì çàïóñêå â îêíå èíäèêàòîðà ñîçäà¸ì "òåêñòîâûå ìåòêè", â êîòîðûå áóäóò âûâîäèòüñÿ ðåçóëüòàòû.
	if ( first == true )
	{
//ïîèñê îêíà èíäèêàòîðà ïî èìåíè
		int window = WindowFind(name);
//åñëè îêíî íå íàéäåíî - "òåêñòîâûå ìåòêè" áóäóò ñîçäàíû â îêíå ãðàôèêà
      if( window < 0) { window = 0; }
		ObjectCreate( name + "_1", OBJ_LABEL, window,0,0,0,0,0,0);
		ObjectSet( name + "_1", OBJPROP_CORNER, 0);
		ObjectSet( name + "_1", OBJPROP_XDISTANCE, 0);
		ObjectSet( name + "_1", OBJPROP_YDISTANCE, 20);
		ObjectSetText(  name + "_1", "Last tick: ", 13, "Arial", StandartColor);

		ObjectCreate( name + "_2", OBJ_LABEL, window,0,0,0,0,0,0);
		ObjectSet( name + "_2", OBJPROP_XDISTANCE, 0);
		ObjectSet( name + "_2", OBJPROP_YDISTANCE, 40);
		ObjectSetText(  name + "_2", "Last TimeOut: ", 13, "Arial", StandartColor);

		ObjectCreate( name + "_3", OBJ_LABEL, window,0,0,0,0,0,0);
		ObjectSet( name + "_3", OBJPROP_XDISTANCE, 0);
		ObjectSet( name + "_3", OBJPROP_YDISTANCE, 60);
		ObjectSetText(  name + "_3", "Max TimeOut: ", 13, "Arial", StandartColor);

		ObjectCreate( name + "_4", OBJ_LABEL, window,0,0,0,0,0,0);
		ObjectSet( name + "_4", OBJPROP_XDISTANCE, 0);
		ObjectSet( name + "_4", OBJPROP_YDISTANCE, 80);
		ObjectSetText(  name + "_4", "Ave TimeOut: ", 13, "Arial", StandartColor);

		ObjectCreate( name + "_1_1", OBJ_LABEL, window,0,0,0,0,0,0);
		ObjectSet( name + "_1_1", OBJPROP_XDISTANCE, 100);
		ObjectSet( name + "_1_1", OBJPROP_YDISTANCE, 20);
		ObjectSetText(  name + "_1_1", "", 13, "Arial", WarningColor);

		ObjectCreate( name + "_2_1", OBJ_LABEL, window,0,0,0,0,0,0);
		ObjectSet( name + "_2_1", OBJPROP_XDISTANCE, 100);
		ObjectSet( name + "_2_1", OBJPROP_YDISTANCE, 40);
		ObjectSetText(  name + "_2_1", "", size, "Arial", _color);

		ObjectCreate( name + "_3_1", OBJ_LABEL, window,0,0,0,0,0,0);
		ObjectSet( name + "_3_1", OBJPROP_XDISTANCE, 100);
		ObjectSet( name + "_3_1", OBJPROP_YDISTANCE, 60);
		ObjectSetText(  name + "_3_1", "", 13, "Arial", WarningColor);

		ObjectCreate( name + "_4_1", OBJ_LABEL, window,0,0,0,0,0,0);
		ObjectSet( name + "_4_1", OBJPROP_XDISTANCE, 100);
		ObjectSet( name + "_4_1", OBJPROP_YDISTANCE, 80);
		ObjectSetText(  name + "_4_1", "", 13, "Arial", WarningColor);
		for ( int u = Bars-1; u >= 0; u -- )
		{ buf0[u] = 0;  buf1[u] = 0; }

		first = false;
		return(0);
	}
//ïðîèçâîäèì ïîäñ÷¸òû
// - çàäåðæêà êîòèðîâêè
	int luft = ( LocalTime() - GMT_shift*3600 ) - ( CurTime() - 3600 );
// - âðåìÿ è çíà÷åíèå ìàêñèìàëüíîé çàäåðæêè
	if ( Max_TimeOut <= luft || Max_TimeOut == 0 ) { Max_TimeOut = luft; Max_TimeOut_Time = CurTime(); }
// - îáùàÿ çàäåðæêà
	SummTimeOut += luft;
// - êîë-âî òèêîâ
	Counted ++;
// - ñðåäíÿÿ çàäåðæêà
	Average_TimeOut = SummTimeOut / Counted;
	if ( luft > 2 )
	{
		if ( luft < 5 )
// öâåò è ðàçìåð øðèôòà âûâîäèìîé èíôîðìàöèè ïðè çíà÷åíèè èíäèêàòîðà îò 2 äî 5
		{ _color = AttentionColor; /*size = 15;*/ }
		else
// öâåò è ðàçìåð øðèôòà âûâîäèìîé èíôîðìàöèè ïðè çíà÷åíèè èíäèêàòîðà >= 5
		{ _color = WarningColor; /*size = 20;*/ }
	}
// èçîáðàæåíèå íà ãðàôèêå - îäíà ñâå÷à ñîîòâåòñòâóåò îäíîìó òèêó
// õðàíÿòñÿ ïîñëåäíèå DrawBars òèêîâ
	for ( int i = DrawBars; i >= 0; i -- )
	{ buf0[i+1] = buf0[i]; buf1[i+1] = buf1[i]; }
	buf0[0] = luft;
	buf1[0] = Average_TimeOut;

// âûâîä èíôîðìàöèè â "òåêñòîâûå ìåòêè"
	ObjectSetText(  name + "_1_1", TimeToStr( CurTime(), TIME_SECONDS ), 13, "Arial", OKColor);
	ObjectSetText(  name + "_2_1", luft + " ñåê", size, "Arial", _color);
	ObjectSetText(  name + "_3_1", Max_TimeOut + " ñåê" + "  ( " + TimeToStr( Max_TimeOut_Time, TIME_SECONDS ) + " )", 13, "Arial", OKColor);
	ObjectSetText(  name + "_4_1", DoubleToStr( Average_TimeOut, 3 ) + " ñåê" + "  ( çà " + Counted + " òèê(-à, -îâ)  )", 13, "Arial", OKColor);

return(0);
}
int deinit()
{
// ïðè äåèíèöèàëèçàöèè - óäàëÿåì ñîçäàííûå "òåêñòîâûå ìåòêè"
	ObjectDelete ( name );
	ObjectDelete ( name + "_1" );
	ObjectDelete ( name + "_2" );
	ObjectDelete ( name + "_3" );
	ObjectDelete ( name + "_4" );
	ObjectDelete ( name + "_1_1" );
	ObjectDelete ( name + "_2_1" );
	ObjectDelete ( name + "_3_1" );
	ObjectDelete ( name + "_4_1" );
	return(0);
}





Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: