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()));