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
//--- 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;
}