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

MQL5 / Zlecenie

ORDER_TIME_EXPIRATION

Moment wygaśnięcia zlecenia oczekującego. Data jest w czasie serwera, nie twojego komputera. Wyliczenie „za

datetime OrderGetInteger(ORDER_TIME_EXPIRATION);

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

Wypełniony przy trybach ORDER_TIME_SPECIFIED i ORDER_TIME_SPECIFIED_DAY. Przy pozostałych wynosi zero.

Dlaczego to nie jest oczywiste

Data jest w czasie serwera, nie twojego komputera. Wyliczenie „za godzinę" na podstawie TimeLocal() przy różnicy dwóch stref daje datę w przeszłości — a to jest nieprawidłowa data wygaśnięcia i kod 10022.

Część serwerów wymaga dodatkowo, żeby zlecenie żyło co najmniej kilka minut. Wygaśnięcie ustawione na dziesięć sekund od teraz zostanie odrzucone, mimo że formalnie leży w przyszłości.

Kod

ORDER_TIME_EXPIRATION
//--- zawsze od czasu serwera, nigdy od lokalnego
zapytanie.expiration = TimeCurrent() + 3600;

//--- odczyt z istniejacego zlecenia
datetime wygasa = (datetime)OrderGetInteger(ORDER_TIME_EXPIRATION);

if(wygasa > 0)
   PrintFormat("zlecenie wygasa %s, za %d sekund",
               TimeToString(wygasa, TIME_DATE | TIME_MINUTES),
               (int)(wygasa - TimeCurrent()));

Powiązane