PauseBeforeTrade





//+------------------------------------------------------------------+
//|                                             PauseBeforeTrade.mq4 |
//|                                      Copyright © 2006, komposter |
//|                                      mailto:komposterius@mail.ru |
//+------------------------------------------------------------------+
//#property copyright "Copyright © 2006, komposter"
//#property link      "mailto:komposterius@mail.ru"

extern int PauseBeforeTrade = 10; // ïàóçà ìåæäó òîðãîâûìè îïåðàöèÿìè (â ñåêóíäàõ)

/////////////////////////////////////////////////////////////////////////////////
// int _PauseBeforeTrade ()
//
// Ôóíêöèÿ óñòàíàâëèâàåò ãëîáàëüíîé ïåðåìåííîé LastTradeTime çíà÷åíèå ëîêàëüíîãî âðåìåíè.
// Åñëè â ìîìåíò çàïóñêà ëîêàëüíîå âðåìÿ ìåíüøå, ÷åì çíà÷åíèå LastTradeTime + PauseBeforeTrade, ôóíêöèÿ æä¸ò.
// Åñëè ãëîáàëüíîé ïåðåìåííîé LastTradeTime íå ñóùåñòâóåò, ôóíêöèÿ ñîçäà¸ò å¸.
// Êîäû âîçâðàòîâ:
//  1 - óñïåøíîå çàâåðøåíèå
// -1 - ðàáîòà ýêñïåðòà áûëà ïðåðâàíà ïîëüçîâàòåëåì (ýêñïåðò óäàë¸í ñ ãðàôèêà, çàêðûò òåðìèíàë, èçìåíèëñÿ ïåðèîä 
// èëè ñèìâîë ãðàôèêà, ... )
/////////////////////////////////////////////////////////////////////////////////
int _PauseBeforeTrade ()
{
	// ïðè òåñòèðîâàíèè íåò ñìûñëà âûäåðæèâàòü ïàóçó - ïðîñòî çàâåðøàåì ðàáîòó ôóíêöèè
	if ( IsTesting() ) { return(1); }
	int _GetLastError = 0;
	double _LastTradeTime, RealPauseBeforeTrade;

	//+------------------------------------------------------------------+
	//| Ïðîâåðÿåì, ñóùåñòâóåò ëè ãë. ïåðåìåííàÿ è, åñëè íåò, ñîçäà¸ì å¸  |
	//+------------------------------------------------------------------+
	while( true )
	{
		// åñëè ýêñïåðò áûë îñòàíîâëåí ïîëüçîâàòåëåì, ïðåêðàùàåì ðàáîòó
		if ( IsStopped() ) { Print( "Ýêñïåðò áûë îñòàíîâëåí ïîëüçîâàòåëåì!" ); return(-1); }

		// ïðîâåðÿåì, ñóùåñòâóåò ëè ãë. ïåðåìåííàÿ
		// åñëè îíà åñòü, âûõîäèì èç ýòîãî öèêëà
		if ( GlobalVariableCheck( "LastTradeTime" ) ) break;
		else
		// åñëè GlobalVariableCheck âåðíóëà FALSE, çíà÷èò ëèáî ïåðåìåííîé íåò, ëèáî ïðè ïðîâåðêå âîçíèêëà îøèáêà
		{
			_GetLastError = GetLastError();
			// åñëè ýòî âñ¸ òàêè îøèáêà, âûâîäèì èíôîðìàöèþ, æä¸ì 0,1 ñåêóíäû è íà÷èíàåì ïðîâåðêó ñíà÷àëà
			if ( _GetLastError != 0 )
			{
				Print( "_PauseBeforeTrade() - GlobalVariableCheck( \"LastTradeTime\" ) - Error #", _GetLastError );
				Sleep(100);
				continue;
			}
		}

		// åñëè îøèáêè íåò, çíà÷èò ãëîáàëüíîé ïåðåìåííîé ïðîñòî íåò, ïûòàåìñÿ ñîçäàòü å¸
		// åñëè GlobalVariableSet > 0, çíà÷èò ãëîáàëüíàÿ ïåðåìåííàÿ óñïåøíî ñîçäàíà. Âûõîäèì èç ô-öèè
		if ( GlobalVariableSet( "LastTradeTime", LocalTime() ) > 0 ) return(1);
		else
		// åñëè GlobalVariableSet âåðíóëà çíà÷åíèå <= 0, çíà÷èò ïðè ñîçäàíèè ïåðåìåííîé âîçíèêëà îøèáêà
		{
			_GetLastError = GetLastError();
			// âûâîäèì èíôîðìàöèþ, æä¸ì 0,1 ñåêóíäû è íà÷èíàåì ïîïûòêó ñíà÷àëà
			if ( _GetLastError != 0 )
			{
				Print( "_PauseBeforeTrade() - GlobalVariableSet ( \"LastTradeTime\", ", LocalTime(), " ) - Error #", _GetLastError );
				Sleep(100);
				continue;
			}
		}
	}

 
	//+---------------------------------------------------------------------------------------+
	//| Åñëè âûïîëíåíèå ôóíêöèè äîøëî äî ýòîãî ìåñòà, çíà÷èò ãëîáàëüíàÿ ïåðåìåííàÿ ñóùåñòâóåò.|
	//| Æä¸ì, ïîêà LocalTime() ñòàíåò > LastTradeTime + PauseBeforeTrade                      |
	//+---------------------------------------------------------------------------------------+
	while( true )
	{
		// åñëè ýêñïåðò áûë îñòàíîâëåí ïîëüçîâàòåëåì, ïðåêðàùàåì ðàáîòó
		if ( IsStopped() ) { Print( "Ýêñïåðò áûë îñòàíîâëåí ïîëüçîâàòåëåì!" ); return(-1); }

		// ïîëó÷àåì çíà÷åíèå ãë. ïåðåìåííîé
		_LastTradeTime = GlobalVariableGet ( "LastTradeTime" );
		// åñëè ïðè ýòîì âîçíèêàåò îøèáêà, âûâîäèì èíôîðìàöèþ, æä¸ì 0,1 ñåêóíäû è íà÷èíàåì ïîïûòêó ñíà÷àëà
		_GetLastError = GetLastError();
		if ( _GetLastError != 0 )
		{
			Print( "_PauseBeforeTrade() - GlobalVariableGet ( \"LastTradeTime\" ) - Error #", _GetLastError );
			continue;
		}

		// ñ÷èòàåì, ñêîëüêî ïðîøëî ñåêóíä ñî âðåìåíè ïîñëåäíåé òîðãîâîé îïåðàöèè
		RealPauseBeforeTrade = LocalTime() - _LastTradeTime;
		
		// åñëè ïðîøëî ìåíüøå, ÷åì PauseBeforeTrade ñåêóíä,
		if ( RealPauseBeforeTrade < PauseBeforeTrade )
		{
			// âûâîäèì èíôîðìàöèþ, æä¸ì ñåêóíäó, è ïðîâåðÿåì ñíîâà
			Comment( "Ïàóçà ìåæäó òîðãîâûìè îïåðàöèÿìè. Îñòàëîñü ", DoubleToStr( PauseBeforeTrade - RealPauseBeforeTrade, 0 ), " ñåê." );
			Sleep(1000);
			continue;
		}
		// åñëè ïðîøëî áîëüøå, ÷åì PauseBeforeTrade ñåêóíä, îñòàíàâëèâàåì âûïîëíåíèÿ öèêëà
		else
		{ break; }
	}

	//+---------------------------------------------------------------------------------------+
	//| Åñëè âûïîëíåíèå ôóíêöèè äîøëî äî ýòîãî ìåñòà, çíà÷èò ãëîáàëüíàÿ ïåðåìåííàÿ ñóùåñòâóåò,|
	//| è ëîêàëüíîå âðåìÿ áîëüøå, ÷åì LastTradeTime + PauseBeforeTrade							   |
	//| Óñòàíàâëèâàåì ãëîáàëüíîé ïåðåìåííîé LastTradeTime çíà÷åíèå ëîêàëüíîãî âðåìåíè         |
	//+---------------------------------------------------------------------------------------+
	while( true )
	{
		// åñëè ýêñïåðò áûë îñòàíîâëåí ïîëüçîâàòåëåì, ïðåêðàùàåì ðàáîòó
		if ( IsStopped() ) { Print( "Ýêñïåðò áûë îñòàíîâëåí ïîëüçîâàòåëåì!" ); return(-1); }

		// Óñòàíàâëèâàåì ãëîáàëüíîé ïåðåìåííîé LastTradeTime çíà÷åíèå ëîêàëüíîãî âðåìåíè. Åñëè óñïåøíî - âûõîäèì
		if ( GlobalVariableSet( "LastTradeTime", LocalTime() ) > 0 ) { Comment( "" ); return(1); }
		else
		// åñëè GlobalVariableSet âåðíóëà çíà÷åíèå <= 0, çíà÷èò âîçíèêëà îøèáêà
		{
			_GetLastError = GetLastError();
			// âûâîäèì èíôîðìàöèþ, æä¸ì 0,1 ñåêóíäû è íà÷èíàåì ïîïûòêó ñíà÷àëà
			if ( _GetLastError != 0 )
			{
				Print( "_PauseBeforeTrade() - GlobalVariableSet ( \"LastTradeTime\", ", LocalTime(), " ) - Error #", _GetLastError );
				Sleep(100);
				continue;
			}
		}
	}
}





Sample





Analysis



Market Information Used:



Indicator Curves created:


Indicators Used:



Custom Indicators Used:

Order Management characteristics:

Other Features: