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

MQL5 / Błędy

retcode 10038

10038 — TRADE_RETCODE_INVALID_CLOSE_VOLUME

Wolumen zamknięcia jest większy niż wolumen otwartej pozycji.

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

Co ten kod znaczy

Próba zamknięcia większej ilości, niż faktycznie masz. Zwykle skutek pracy na nieaktualnych danych.

Skąd się bierze

  • częściowe zamknięcie liczone z wolumenu sprzed wcześniejszego zamknięcia
  • pozycja częściowo zamknięta przez stop loss albo ręcznie
  • zaokrąglenie wolumenu w górę przy zamykaniu połowy pozycji

Co z tym zrobić

Wolumen do zamknięcia odczytuj z pozycji tuż przed operacją i zaokrąglaj zawsze w dół, do kroku instrumentu:

if(!PositionSelectByTicket(bilet))
   return;

double obecny = PositionGetDouble(POSITION_VOLUME);
double krok   = SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP);

double doZamkniecia = MathFloor((obecny / 2.0) / krok) * krok;
doZamkniecia = MathMin(doZamkniecia, obecny);

Powiązane