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