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

MQL5 / Błędy

retcode 10023

10023 — TRADE_RETCODE_ORDER_CHANGED

Stan zlecenia zmienił się między odczytem a próbą modyfikacji.

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

Co ten kod znaczy

Klasyczny wyścig: ekspert odczytał zlecenie, policzył nowe parametry, a zanim wysłał modyfikację, zlecenie zdążyło się aktywować albo zostać anulowane.

Skąd się bierze

  • zlecenie oczekujące aktywowało się w międzyczasie
  • modyfikacja wysłana na podstawie danych sprzed kilku ticków
  • równolegle działający drugi ekspert albo ręczna operacja użytkownika

Co z tym zrobić

To nie jest błąd wymagający naprawy, tylko sytuacja do obsłużenia. Po tym kodzie odczytaj stan od nowa zamiast ponawiać poprzednią operację:

if(wynik.retcode == TRADE_RETCODE_ORDER_CHANGED)
  {
   Print("Zlecenie zmieniło stan, odczytuję od nowa.");
   return;          // przy następnym ticku pracujemy na aktualnych danych
  }

Ryzyko takich wyścigów maleje, gdy dane o zleceniach odczytujesz bezpośrednio przed operacją, a nie raz na początku OnTick.

Powiązane