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

MQL5 / Instrument

SYMBOL_TRADE_STOPS_LEVEL

Minimalna odległość stop lossa i take profitu od bieżącej ceny, w punktach. Zero nie znaczy „dowolnie blisko". U większości brokerów z wykonaniem

long SymbolInfoInteger(string symbol, SYMBOL_TRADE_STOPS_LEVEL);

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

Poziomy zabezpieczające bliżej ceny niż ta wartość zostaną odrzucone kodem 10016.

Dlaczego to nie jest oczywiste

Zero nie znaczy „dowolnie blisko". U większości brokerów z wykonaniem rynkowym ta właściwość zwraca zero, co znaczy tylko tyle, że dystans jest zmienny i zależy od bieżącego spreadu oraz zmienności. Serwer i tak odrzuci stopa postawionego tuż przy cenie — po prostu nie poda z góry, gdzie leży granica.

Praktyczne obejście: przyjąć większą z dwóch wartości — deklarowanego poziomu i dwukrotności bieżącego spreadu. Nie jest to udokumentowane nigdzie, bo nie wynika z API, tylko z zachowania serwerów.

Kod

SYMBOL_TRADE_STOPS_LEVEL
//--- bezpieczny odstęp także wtedy, gdy broker deklaruje zero
double BezpiecznyOdstep(const string symbol)
  {
   long poziom = SymbolInfoInteger(symbol, SYMBOL_TRADE_STOPS_LEVEL);
   long spread = SymbolInfoInteger(symbol, SYMBOL_SPREAD);
   double punkt = SymbolInfoDouble(symbol, SYMBOL_POINT);

   return MathMax((double)poziom, spread * 2.0) * punkt;
  }

Powiązane