DEAL_ORDER
Zlecenie, z którego powstała transakcja. Jedno zlecenie może dać kilka transakcji. Przy wykonaniu częściowym
long HistoryDealGetInteger(ulong bilet, DEAL_ORDER);
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Numer zlecenia wykonanego w tej transakcji. Pozwala przejść od faktu wykonania do polecenia, które je wywołało.
Dlaczego to nie jest oczywiste
Jedno zlecenie może dać kilka transakcji. Przy wykonaniu częściowym albo przy zbieraniu wolumenu z kilku poziomów arkusza serwer tworzy tyle wpisów, ile faktycznie było wykonań, i wszystkie wskazują to samo zlecenie.
Kod zakładający zależność jeden do jednego — na przykład szukający transakcji po numerze zlecenia i biorący pierwszą znalezioną — policzy wtedy część wolumenu i część kosztów.
Kod
DEAL_ORDER
//--- wszystkie transakcje jednego zlecenia
if(!HistorySelect(TimeCurrent() - 86400, TimeCurrent()))
return;
double lacznyWolumen = 0.0;
for(int i = 0; i < HistoryDealsTotal(); i++)
{
ulong t = HistoryDealGetTicket(i);
if(t == 0)
continue;
if(HistoryDealGetInteger(t, DEAL_ORDER) != (long)biletZlecenia)
continue;
lacznyWolumen += HistoryDealGetDouble(t, DEAL_VOLUME);
}
PrintFormat("zlecenie %I64u wykonano lacznie na %.2f lota",
biletZlecenia, lacznyWolumen);