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

MQL5 / Instrument

SYMBOL_TRADE_FREEZE_LEVEL

Strefa wokół ceny, w której nie można modyfikować ani anulować zlecenia. Ta właściwość dotyczy modyfikacji istniejącego zlecenia, a nie zakładania

long SymbolInfoInteger(string symbol, SYMBOL_TRADE_FREEZE_LEVEL);

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

Gdy cena zbliży się do poziomu zlecenia bliżej niż ta wartość, zlecenie jest zamrożone: nie da się go zmienić ani usunąć, dopóki cena się nie oddali albo zlecenie nie zadziała.

Dlaczego to nie jest oczywiste

Ta właściwość dotyczy modyfikacji istniejącego zlecenia, a nie zakładania nowego — i to jest różnica wobec SYMBOL_TRADE_STOPS_LEVEL, z którą jest notorycznie mylona. Trailing stop, który sprawdza tylko poziom stopów, w momencie zbliżenia ceny do stopa zacznie dostawać 10029 i będzie ponawiał próbę przy każdym ticku, aż do 10024.

Większość brokerów detalicznych podaje tu zero. Ci sami brokerzy podnoszą tę wartość w chwilach wysokiej zmienności, czyli dokładnie wtedy, gdy trailing stop pracuje najintensywniej.

Kod

SYMBOL_TRADE_FREEZE_LEVEL
//--- czy wolno teraz ruszać stopa tej pozycji
bool WolnoModyfikowac(const string symbol, const double poziomStopa)
  {
   long zamrozenie = SymbolInfoInteger(symbol, SYMBOL_TRADE_FREEZE_LEVEL);
   if(zamrozenie <= 0)
      return true;

   MqlTick tick;
   if(!SymbolInfoTick(symbol, tick))
      return false;

   double strefa = zamrozenie * SymbolInfoDouble(symbol, SYMBOL_POINT);
   return (MathAbs(tick.bid - poziomStopa) > strefa);
  }

Powiązane