SYMBOL_EXPIRATION_TIME
Data wygaśnięcia instrumentu, jeśli jest terminowy. Kontrakt terminowy nie znika nagle — przechodzi wcześniej w tryb
datetime SymbolInfoInteger(string symbol, SYMBOL_EXPIRATION_TIME);
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Dla kontraktów terminowych i opcji podaje moment zakończenia obrotu. Dla instrumentów bezterminowych wynosi zero.
Dlaczego to nie jest oczywiste
Kontrakt terminowy nie znika nagle — przechodzi wcześniej w tryb tylko do zamykania, a potem przestaje istnieć. Ekspert pracujący na kontraktach musi to wiedzieć z wyprzedzeniem, bo w ostatnich dniach przed wygaśnięciem płynność spada, a spread rośnie.
Druga rzecz: po wygaśnięciu historia instrumentu zostaje, ale sam symbol znika z okna Rynek. Kod analizujący własne wyniki po miesiącach trafi w historii na symbol, którego właściwości już nie odczyta — SymbolInfoDouble zwróci wtedy zero.
Kod
datetime wygasa = (datetime)SymbolInfoInteger(symbol, SYMBOL_EXPIRATION_TIME);
if(wygasa == 0)
return; // instrument bezterminowy
int dni = (int)((wygasa - TimeCurrent()) / 86400);
if(dni <= 5)
PrintFormat("%s wygasa za %d dni - nie otwieram nowych pozycji",
symbol, dni);