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

MQL5 / Transakcja

DEAL_PRICE

Cena, po której transakcja została wykonana. Porównanie tej ceny z ceną, o którą prosiłeś w zapytaniu, daje poślizg

double HistoryDealGetDouble(ulong bilet, DEAL_PRICE);

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

Rzeczywista cena wykonania, ustalona przez serwer.

Dlaczego to nie jest oczywiste

Porównanie tej ceny z ceną, o którą prosiłeś w zapytaniu, daje poślizg — jedyną miarę jakości wykonania, jakiej nie da się uzyskać z backtestu. Tester nie modeluje poślizgów, więc ta liczba istnieje wyłącznie na rachunku.

Warto ją zbierać od pierwszego dnia. Po miesiącu odpowiada na pytanie, czy strategia o przewadze kilku punktów ma tę przewagę również po kosztach wejścia, i czy poślizg rośnie o określonych porach.

Kod

DEAL_PRICE
//--- poslizg wzgledem ceny zamowionej, w punktach
double Poslizg(const ulong bilet, const double cenaZamowiona)
  {
   string symbol = HistoryDealGetString(bilet, DEAL_SYMBOL);
   double punkt = SymbolInfoDouble(symbol, SYMBOL_POINT);
   if(punkt <= 0.0)
      return 0.0;

   double cena = HistoryDealGetDouble(bilet, DEAL_PRICE);
   long typ = HistoryDealGetInteger(bilet, DEAL_TYPE);

   //--- na niekorzysc jest dodatni niezaleznie od kierunku
   double znak = (typ == DEAL_TYPE_BUY) ? 1.0 : -1.0;
   return znak * (cena - cenaZamowiona) / punkt;
  }

Powiązane