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

MQL5 / Zlecenie

ORDER_STATE

Stan zlecenia w cyklu jego życia. Większość stanów zobaczysz wyłącznie w historii. Lista zleceń aktywnych

long OrderGetInteger(ORDER_STATE);

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

Mówi, na jakim etapie znajduje się zlecenie: czy zostało przyjęte, wykonane, odrzucone, anulowane czy wygasło.

Dlaczego to nie jest oczywiste

Większość stanów zobaczysz wyłącznie w historii. Lista zleceń aktywnych zawiera praktycznie tylko ORDER_STATE_PLACED i ORDER_STATE_PARTIAL — zlecenie w stanie FILLED, CANCELED, REJECTED albo EXPIRED już z niej zniknęło.

Kod, który sprawdza „czy moje zlecenie zostało wykonane", przeglądając listę aktywnych zleceń, nigdy nie znajdzie odpowiedzi. Znika samo zlecenie, a nie zmienia się jego stan na widocznej liście.

Osobno warto znać ORDER_STATE_PARTIAL: zlecenie jest częściowo wypełnione i nadal aktywne. Traktowanie go jak wykonanego zawyża ekspozycję.

Kod

ORDER_STATE
//--- stan zlecenia z historii, bo tam trafiaja zlecenia zakonczone
if(!HistorySelect(TimeCurrent() - 86400, TimeCurrent()))
   return;

for(int i = 0; i < HistoryOrdersTotal(); i++)
  {
   ulong bilet = HistoryOrderGetTicket(i);
   if(bilet == 0)
      continue;

   long stan = HistoryOrderGetInteger(bilet, ORDER_STATE);

   if(stan == ORDER_STATE_REJECTED)
      PrintFormat("zlecenie %I64u odrzucone", bilet);
   else if(stan == ORDER_STATE_EXPIRED)
      PrintFormat("zlecenie %I64u wygaslo", bilet);
  }

Powiązane