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