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

MQL5 / Instrument

SYMBOL_DIGITS

Liczba miejsc dziesiętnych w cenie instrumentu. Funkcja zwraca `long`, nie `int`. Przypisanie wprost daje ostrzeżenie

long SymbolInfoInteger(string symbol, SYMBOL_DIGITS);

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

Mówi, do ilu miejsc zaokrąglać ceny wysyłane w zapytaniu handlowym. Wysłanie ceny z większą dokładnością kończy się kodem 10015.

Dlaczego to nie jest oczywiste

Funkcja zwraca long, nie int. Przypisanie wprost daje ostrzeżenie kompilatora o możliwej utracie danych, które większość ludzi wycisza rzutowaniem — i słusznie, bo tu żadna strata nie grozi. Ale ten sam odruch stosowany do SYMBOL_VOLUME_MAX czy wartości czasu potrafi już uciąć realne dane.

Druga rzecz: liczba miejsc dziesiętnych nie mówi, ile wynosi pips. Reguła „trzy albo pięć cyfr znaczy pięciocyfrowego brokera" działa na walutach i zawodzi na indeksach, metalach i kryptowalutach.

Kod

SYMBOL_DIGITS
//--- jawne rzutowanie, bo funkcja zwraca long
int cyfry = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS);

//--- cena gotowa do wysłania w zapytaniu
double cenaDoWyslania = NormalizeDouble(surowaCena, cyfry);

//--- i formatowanie w dzienniku, które działa na każdym instrumencie
PrintFormat("%s: cena %.*f", symbol, cyfry, cenaDoWyslania);

Powiązane