SYMBOL_SPREAD
Bieżący spread instrumentu w punktach. Ta wartość bywa aktualizowana rzadziej niż same kwotowania. W momentach,
long SymbolInfoInteger(string symbol, SYMBOL_SPREAD);
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Różnica między ceną kupna a sprzedaży, wyrażona w punktach i zaokrąglona do liczby całkowitej. Podstawowy koszt wejścia w pozycję.
Dlaczego to nie jest oczywiste
Ta wartość bywa aktualizowana rzadziej niż same kwotowania. W momentach, w których spread naprawdę ma znaczenie — przy publikacji danych, na otwarciu sesji — potrafi pokazywać wartość sprzed kilku ticków. Liczenie spreadu bezpośrednio z SymbolInfoTick daje wynik zgodny z tym, po czym faktycznie wejdziesz.
Druga rzecz: zaokrąglenie do liczby całkowitej gubi ułamki punktu. Na instrumentach o dużej wartości punktu to bywa istotna różnica w koszcie.
Kod
//--- dwa źródła, które nie zawsze się zgadzają
long zSerwera = SymbolInfoInteger(symbol, SYMBOL_SPREAD);
MqlTick tick;
if(SymbolInfoTick(symbol, tick))
{
double punkt = SymbolInfoDouble(symbol, SYMBOL_POINT);
int zTicku = (int)MathRound((tick.ask - tick.bid) / punkt);
if(zTicku != (int)zSerwera)
PrintFormat("%s: serwer podaje %d pkt, z kwotowania wychodzi %d pkt",
symbol, (int)zSerwera, zTicku);
}