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
//--- 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);
}