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

MQL5 / Błędy

retcode 10029

10029 — TRADE_RETCODE_FROZEN

Zlecenie albo pozycja znajduje się w strefie zamrożenia i nie można jej teraz modyfikować.

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

Co ten kod znaczy

Broker definiuje wokół ceny strefę SYMBOL_TRADE_FREEZE_LEVEL. Zlecenie, którego poziom w niej się znajdzie, jest chronione przed modyfikacją i anulowaniem, bo lada chwila może się aktywować.

Skąd się bierze

  • próba przesunięcia stop lossa tuż przy cenie
  • anulowanie zlecenia oczekującego, do którego cena już dobiła
  • trailing stop bez uwzględnienia poziomu zamrożenia

Co z tym zrobić

Poziom zamrożenia trzeba sprawdzić przed każdą modyfikacją:

long zamrozenie = SymbolInfoInteger(symbol, SYMBOL_TRADE_FREEZE_LEVEL);
double strefa = zamrozenie * SymbolInfoDouble(symbol, SYMBOL_POINT);

if(MathAbs(tick.bid - obecnySL) < strefa)
   return false;                   // nie ruszamy, poczekamy na kolejny tick

Wielu brokerów podaje tu zero, co znaczy „brak strefy". Kod odporny sprawdza tę wartość mimo wszystko, bo ten sam ekspert prędzej czy później trafi na brokera, który zera nie podaje.

Powiązane