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

MQL5 / Transakcja

DEAL_COMMISSION

Prowizja pobrana przy transakcji, jako liczba ujemna. Prowizji nie da się odczytać z otwartej pozycji. Nie ma takiej

double HistoryDealGetDouble(ulong bilet, DEAL_COMMISSION);

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

Koszt naliczony przez brokera. Bywa pobierany w całości przy wejściu, w całości przy wyjściu albo po połowie — zależnie od brokera.

Dlaczego to nie jest oczywiste

Prowizji nie da się odczytać z otwartej pozycji. Nie ma takiej właściwości: POSITION_* obejmuje zysk i swap, ale nie prowizję. Żeby poznać koszt otwartej pozycji, trzeba sięgnąć do jej transakcji wejścia w historii przez HistorySelectByPosition.

To jest powód, dla którego większość kodu liczącego wynik pomija prowizję — nie z zapomnienia, tylko dlatego, że nie leży pod ręką tam, gdzie się jej szuka.

Druga rzecz: część brokerów rozlicza prowizję osobnym wpisem typu DEAL_TYPE_COMMISSION zamiast wypełniać to pole. Kod odporny sumuje jedno i drugie.

Kod

DEAL_COMMISSION
//--- koszt otwartej pozycji trzeba wziac z jej historii
double ProwizjaPozycji(const long identyfikator)
  {
   if(!HistorySelectByPosition(identyfikator))
      return 0.0;

   double suma = 0.0;
   for(int i = 0; i < HistoryDealsTotal(); i++)
     {
      ulong bilet = HistoryDealGetTicket(i);
      if(bilet > 0)
         suma += HistoryDealGetDouble(bilet, DEAL_COMMISSION);
     }

   return suma;
  }

Powiązane