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
//--- 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;
}