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

MQL5 / Transakcja

DEAL_TIME

Czas wykonania transakcji. Przy analizie wykonań dokładność do sekundy nie wystarcza. W jednej sekundzie

datetime HistoryDealGetInteger(ulong bilet, DEAL_TIME);

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

Znacznik w sekundach, w czasie serwera. Wersją z dokładnością do milisekund jest DEAL_TIME_MSC.

Dlaczego to nie jest oczywiste

Przy analizie wykonań dokładność do sekundy nie wystarcza. W jednej sekundzie mieści się kilkanaście transakcji, a ich kolejność decyduje o tym, która zamknęła pozycję jako pierwsza. Do sortowania używa się DEAL_TIME_MSC.

Druga rzecz: transakcje w historii nie zawsze są uporządkowane po czasie. HistorySelect zwraca je w kolejności nadanej przez serwer, która przy wykonaniach częściowych i przy transakcjach z różnych instrumentów bywa inna niż chronologiczna.

Kod

DEAL_TIME
datetime kiedy = (datetime)HistoryDealGetInteger(bilet, DEAL_TIME);
long milisekundy = HistoryDealGetInteger(bilet, DEAL_TIME_MSC);

PrintFormat("%s.%03d", TimeToString(kiedy, TIME_DATE | TIME_SECONDS),
            (int)(milisekundy % 1000));

Powiązane