POSITION_PROFIT
Bieżący zysk pozycji w walucie rachunku. Ta wartość nie zawiera swapu ani prowizji. To, co widzisz w terminalu
double PositionGetDouble(POSITION_PROFIT);
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
POSITION_PROFIT w MQL5 to wynik pozycji przy obecnej cenie rynkowej, przeliczony na walutę rachunku. Aktualizuje się przy każdym ticku.
Dlaczego to nie jest oczywiste
Ta wartość nie zawiera swapu ani prowizji. To, co widzisz w terminalu w kolumnie zysku, jest zwykle sumą trzech pól, a nie tym jednym.
Kod zamykający pozycję po osiągnięciu zadanego zysku, oparty wyłącznie na POSITION_PROFIT, zamknie ją za wcześnie na instrumencie z ujemnym swapem i za późno na takim z dodatnim. Przy pozycji trzymanej tydzień różnica bywa większa niż sam zakładany zysk.
Kod
POSITION_PROFIT
if(!PositionSelectByTicket(bilet))
return;
double zysk = PositionGetDouble(POSITION_PROFIT);
double swap = PositionGetDouble(POSITION_SWAP);
//--- prowizja nie jest wlasciwoscia pozycji: siedzi w transakcjach
double prowizja = 0.0;
if(HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER)))
for(int i = 0; i < HistoryDealsTotal(); i++)
{
ulong transakcja = HistoryDealGetTicket(i);
if(transakcja > 0)
prowizja += HistoryDealGetDouble(transakcja, DEAL_COMMISSION);
}
PrintFormat("wynik netto: %.2f (zysk %.2f, swap %.2f, prowizja %.2f)",
zysk + swap + prowizja, zysk, swap, prowizja);