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

MQL5 / Transakcja

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

Powiązane