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

MQL5 / Pozycja

POSITION_TIME

Czas otwarcia pozycji. Istnieje też `POSITION_TIME_UPDATE` i to jest właściwość, o której prawie

datetime PositionGetInteger(POSITION_TIME);

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

Znacznik czasu w sekundach, w czasie serwera. Odpowiednikiem z dokładnością do milisekund jest POSITION_TIME_MSC.

Dlaczego to nie jest oczywiste

Istnieje też POSITION_TIME_UPDATE i to jest właściwość, o której prawie nikt nie wie, a która rozwiązuje częsty problem: kiedy ostatnio zmieniano tę pozycję. Zmiana stopa, dołożenie wolumenu, częściowe zamknięcie — wszystko aktualizuje ten znacznik, a POSITION_TIME zostaje bez zmian.

Dzięki temu da się napisać warunek „nie ruszaj stopa częściej niż raz na minutę" bez trzymania własnych liczników, które i tak nie przeżyją restartu terminala.

Kod

POSITION_TIME
if(!PositionSelectByTicket(bilet))
   return;

datetime otwarta = (datetime)PositionGetInteger(POSITION_TIME);
datetime zmieniona = (datetime)PositionGetInteger(POSITION_TIME_UPDATE);

int odZmiany = (int)(TimeCurrent() - zmieniona);

if(odZmiany < 60)
   return;                 // stop ruszany chwile temu, czekamy

PrintFormat("pozycja otwarta %s, ostatnia zmiana %d s temu",
            TimeToString(otwarta, TIME_MINUTES), odZmiany);

Powiązane