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

MQL5 / Instrument

SYMBOL_POINT

Najmniejsza możliwa zmiana ceny instrumentu. Punkt to nie to samo co minimalny krok notowania. Na części instrumentów

double SymbolInfoDouble(string symbol, SYMBOL_POINT);

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

Dla pięciocyfrowego EURUSD to 0.00001, dla trzycyfrowego USDJPY 0.001. Wszystkie odległości w MQL5 — stop loss, poziomy brokera, poślizg — liczy się w punktach, czyli w wielokrotnościach tej wartości.

Dlaczego to nie jest oczywiste

Punkt to nie to samo co minimalny krok notowania. Na części instrumentów giełdowych SYMBOL_TRADE_TICK_SIZE jest większy od punktu — cena zmienia się skokowo o kilka punktów naraz. Wzór na wielkość pozycji oparty na punkcie zamiast na rozmiarze ticku daje wtedy wynik zawyżony o tyle razy, ile punktów mieści się w ticku, i nie zgłasza tego w żaden sposób.

Druga rzecz: _Point odnosi się wyłącznie do symbolu bieżącego wykresu. W kodzie wielosymbolowym trzeba pytać o punkt każdego instrumentu osobno.

Kod

SYMBOL_POINT
//--- porównanie punktu z rozmiarem ticku na dowolnym instrumencie
double punkt = SymbolInfoDouble(symbol, SYMBOL_POINT);
double tick  = SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE);

if(MathAbs(punkt - tick) > punkt / 2.0)
   PrintFormat("%s: punkt %.8f, ale krok notowania %.8f — to %d punktów",
               symbol, punkt, tick, (int)MathRound(tick / punkt));

Powiązane