Funkcja bool IsTradeAllowed() zwraca true jeśli skrypt lub strategia automatyczna może zawierać transakcje handlowe oraz strumień handlowy nie jest zajęty, inaczej zwraca false (przykład 1). Drugi sposób wywołania tej funkcji pozwala sprawdzić możliwości zawarcia transakcji dla określonego instrumentu finansowego w określonym czasie (przykład 2). Więcej informacji można znaleźć w specyfikacji MQL4.
#property strict void OnStart() { //--- sprawdzić czy skrypt może zawierać transakcje handlowe if(IsTradeAllowed() == true) Print("Skrypt może zawierać transakcje handlowe."); else Print("Skrypt nie może zawierać transakcje handlowe."); }
Rys. 1. Przykład stosowania funkcji IsTradeAllowed().
Należy pamietać o włączeniu przycisku AutoTrading (rys. 1) inaczej skrypt poinformuje o braku możliwości zawierania transakcji. Zamiast IsTradeAllowed() zalecane jest stosowanie zapisu (bool)MQLInfoInteger(MQL_TRADE_ALLOWED)
#property strict void OnStart() { //--- nazwy instrumentów finansowych string Symbol_1 = "USDCAD"; string Symbol_2 = "NoSuchSymbol"; //--- daty zawierania transakcji handlowych datetime Time_1 = StringToTime("2016.09.23 23:59:59"); // piątek, 23:59:59 datetime Time_2 = StringToTime("2016.09.24 00:00:00"); // sobota, 00:00:00 //--- sprawdzić USDCAD, piątek, 22:59:59 if(IsTradeAllowed(Symbol_1, Time_1) == true) Print("1) ",Symbol_1,", ",Time_1,": można zawierać transakcje."); else Print("1) ",Symbol_1,", ",Time_1,": nie można zawierać transakcje."); //--- sprawdzić USDCAD, piątek, 23:00:00 if(IsTradeAllowed(Symbol_1, Time_2) == true) Print("2) ",Symbol_1,", ",Time_2,": można zawierać transakcje."); else Print("2) ",Symbol_1,", ",Time_2,": nie można zawierać transakcje."); //--- sprawdzić NoSuchSymbol, piątek, 22:59:59 if(IsTradeAllowed(Symbol_2, Time_1) == true) Print("3) ",Symbol_2,", ",Time_1,": można zawierać transakcje."); else Print("3) ",Symbol_2,", ",Time_1,": nie można zawierać transakcje."); }
Rys. 2. Przykład stosowania funkcji IsTradeAllowed().