Przejdź do treści
MQL5 · MetaTrader 5 · po polsku
kod odczarowany

MQL5 / Błędy

rodzina 4001–4018

Ogólne kody błędów wykonania

Błędy niezwiązane z rynkiem: pamięć, tablice, wskaźniki obiektów, zasoby. Pełna lista kodów z tej rodziny wraz z tym, co je wywołuje.

1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.

Te kody pojawiają się niezależnie od rynku i od brokera — dotyczą pamięci, tablic, wskaźników obiektów i zasobów wbudowanych w plik .ex5.

W praktyce spotkasz z tej rodziny trzy: 4007 przy próbie zmiany rozmiaru tablicy statycznej, 4012 przy odwołaniu do usuniętego obiektu i 4014, gdy wywołujesz funkcję, na którą terminal nie daje zgody.

Pełna lista

KodStałaCo znaczy
4001ERR_INTERNAL_ERRORbłąd systemu operacyjnego
4002ERR_WRONG_INTERNAL_PARAMETERzły parametr w wewnętrznym wywołaniu terminala
4003ERR_INVALID_PARAMETERzły parametr przy wywołaniu funkcji systemowej
4004ERR_NOT_ENOUGH_MEMORYza mało pamięci na wykonanie funkcji
4005ERR_STRUCT_WITHOBJECTS_ORCLASSstruktura zawiera łańcuchy, tablice dynamiczne albo obiekty
4006ERR_INVALID_ARRAYtablica złego typu, złego rozmiaru albo uszkodzona
4007ERR_ARRAY_RESIZE_ERRORza mało pamięci albo próba zmiany rozmiaru tablicy statycznej
4008ERR_STRING_RESIZE_ERRORza mało pamięci na przeniesienie łańcucha
4009ERR_NOTINITIALIZED_STRINGniezainicjowany łańcuch
4010ERR_INVALID_DATETIMEnieprawidłowa data lub godzina
4011ERR_ARRAY_BAD_SIZEżądany rozmiar tablicy przekracza 2 GB
4012ERR_INVALID_POINTERzły wskaźnik obiektu
4013ERR_INVALID_POINTER_TYPEzły typ wskaźnika
4014ERR_FUNCTION_NOT_ALLOWEDfunkcja niedozwolona do wywołania
4015ERR_RESOURCE_NAME_DUPLICATEDnazwa zasobu dynamicznego pokrywa się ze statycznym
4016ERR_RESOURCE_NOT_FOUNDzasobu o tej nazwie nie ma w pliku ex5
4017ERR_RESOURCE_UNSUPPOTED_TYPEnieobsługiwany typ zasobu albo rozmiar ponad 16 MB
4018ERR_RESOURCE_NAME_IS_TOO_LONGnazwa zasobu dłuższa niż 63 znaki

Jak czytać te kody w praktyce

Odczyt kodu błędu bez zgadywania
//--- zerujemy przed operacja, ktorej wynik chcemy sprawdzic
ResetLastError();

double bufor[];
ArraySetAsSeries(bufor, true);

if(CopyBuffer(uchwyt, 0, 0, 10, bufor) < 10)
  {
   int kod = GetLastError();
   PrintFormat("nie udalo sie skopiowac danych, kod %d", kod);
   ResetLastError();
   return;
  }

Powiązane