retcode 10025
10025 — TRADE_RETCODE_NO_CHANGES
Modyfikacja nie zmienia niczego — nowe wartości są identyczne z obecnymi.
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
Co ten kod znaczy
Serwer porównał parametry z zapytania z aktualnym stanem zlecenia lub pozycji i stwierdził, że nie ma czego zmieniać.
Skąd się bierze
- trailing stop wyliczający raz po raz ten sam poziom
- modyfikacja wysyłana bez porównania z obecną wartością
- porównanie poziomów operatorem
!=na typiedouble, które nigdy nie jest fałszywe
Co z tym zrobić
Ten kod jest sygnałem, że kod wysyła zapytania bez potrzeby — a to prosta droga do 10024. Porównanie musi uwzględniać naturę typu double:
Wysyłamy tylko wtedy, gdy naprawdę jest zmiana
double obecny = PositionGetDouble(POSITION_SL);
if(MathAbs(nowySL - obecny) < _Point / 2.0)
return false; // to jest ta sama cenaPorównanie nowySL != obecny na liczbach zmiennoprzecinkowych praktycznie zawsze zwraca prawdę — dlatego kod wygląda na poprawny, a mimo to zalewa serwer modyfikacjami.