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

MQL5 / Błędy

bład wykonania 4404

4404 — ERR_HISTORY_BARS_LIMIT

Liczba świec ograniczona ustawieniami terminala, nie danymi brokera. To jest jedyny kod z rodziny historii, którego przyczyna leży w ustawieniach

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

2026-08-03 12:20:44.117  Wskaznik (EURUSD,M1)  CopyRates zwrocilo 65000 z 200000, blad 4404

Co ten kod znaczy

Żądano więcej świec, niż terminal przechowuje na wykresie. Ograniczenie pochodzi z ustawień platformy, a nie od brokera.

Skąd się bierze

  • ustawienie Maksymalna liczba słupków na wykresie niższe niż żądanie
  • wskaźnik o długim okresie na wykresie minutowym
  • test na wieloletnim okresie przy domyślnych ustawieniach
  • odczyt całej historii instrumentu jednym wywołaniem

Co z tym zrobić

To jest jedyny kod z rodziny historii, którego przyczyna leży w ustawieniach twojego terminala, a nie w danych. Znajdziesz je w Narzędzia → Opcje → Wykresy, pole z maksymalną liczbą słupków.

Konsekwencja jest niewygodna: ten sam kod u ciebie działa, a u użytkownika z domyślnymi ustawieniami zwraca mniej danych — i nie zgłasza tego głośno, bo CopyRates po prostu kopiuje mniej, niż poprosiłeś.

Sprawdzamy, ile faktycznie skopiowano
MqlRates swiece[];
ArraySetAsSeries(swiece, true);

int ile = 5000;
int skopiowane = CopyRates(_Symbol, _Period, 0, ile, swiece);

if(skopiowane < ile)
  {
   PrintFormat("Poproszono o %d swiec, dostano %d, blad %d. "
               "Sprawdz Narzedzia > Opcje > Wykresy.",
               ile, skopiowane, GetLastError());
   ResetLastError();
  }

Rozsądniejsze niż podnoszenie limitu jest ograniczenie apetytu: wskaźnik liczący średnią z dwustu świec potrzebuje dwustu, a nie całej historii.

Powiązane