Funkcja int GetLastError() zwraca kod ostatniego błędu, zapisanego w predefiniowanej zmiennej _LastError , który wystąpił w trakcie działania programu MQL4. Więcej informacji można znaleźć w specyfikacji MQL4.
Poniższy skrypt wygeneruje błąd 4106 (ERR_UNKNOWN_SYMBOL) przy otwarciu pozycji dla nieistniejącego instrumentu finansowego (NoSuchSymbol).
#property strict
void OnStart()
{
//--- błędna próba otwarcia pozycji na kupno
if(OrderSend("NoSuchSymbol", OP_BUY, 0.1, Ask, 10, 0, 0) < 0)
Print("Otwarcie pozycji na kupno nie powiodło się. Błąd = ",GetLastError());
else
Print("Otwarto pozycję na kupno.");
}
Rys. 1. Przykład stosowania funkcji GetLastError().
Po wywołaniu GetLastError() wartość _LastError jest zerowana. Tekstowy opis błędu można uzyskać za pomocą funkcji ErrorDescription(). W tym celu do programu należu podłączyć standardową bibliotekę stdlib.mqh. Jeśli po uzyskaniu kodu błędu zaistnieje potrzeba dalszej obróbki tego błędu, jego wartość należy przypisać zmiennej i dalej pracować z tą zmienną.
#property strict
//--- podłączyć bibliotekę z opisami błędów
#include <stdlib.mqh>
void OnStart()
{
//--- błędna próba otwarcia pozycji na kupno
if(OrderSend("NoSuchSymbol", OP_BUY, 0.1, Ask, 10, 0, 0) < 0)
{
//--- zmiennej CurrentError przypisać wartość błędu
int CurrentError = GetLastError();
//--- zmiennej TextError przypisać opis błędu
string TextError = ErrorDescription(CurrentError);
//---
Print("Otwarcie pozycji na kupno nie powiodło się. Błąd = ",CurrentError,", ",TextError);
}
else
Print("Otwarto pozycję na kupno.");
}
Rys. 2. Przykład stosowania funkcji GetLastError().