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