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

MQL5 / Błędy

retcode 10019

10019 — TRADE_RETCODE_NO_MONEY

Na rachunku brakuje wolnego depozytu na otwarcie pozycji o tym wolumenie.

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

Co ten kod znaczy

Wymagany depozyt zabezpieczający przekracza dostępne środki. Kod pojawia się także wtedy, gdy na rachunku jest sporo pieniędzy, ale są już zablokowane pod inne pozycje.

Skąd się bierze

  • wolumen wyliczony z ryzyka bez sprawdzenia dostępnego depozytu
  • kilka pozycji otwartych jednocześnie na tym samym instrumencie
  • dźwignia inna, niż zakładał kod, na przykład obniżona dla egzotyków
  • wymóg depozytu podniesiony przez brokera na weekend

Co z tym zrobić

Zamiast zgadywać, zapytaj o wymagany depozyt przed wysłaniem zlecenia:

Czy stać nas na tę pozycję
bool StacNas(const string symbol, const ENUM_ORDER_TYPE typ,
             const double wolumen, const double cena)
  {
   double wymagany = 0.0;
   if(!OrderCalcMargin(typ, symbol, wolumen, cena, wymagany))
      return false;

   double wolny = AccountInfoDouble(ACCOUNT_MARGIN_FREE);

   //--- zostawiamy zapas, bo depozyt policzony teraz i pobrany za sekundę
   //--- to nie zawsze ta sama liczba
   if(wymagany > wolny * 0.9)
     {
      PrintFormat("Depozyt %.2f przekracza wolne środki %.2f", wymagany, wolny);
      return false;
     }
   return true;
  }

Kontrola po stronie eksperta jest tu ważniejsza niż obsługa błędu: pozycja, której nie stać się otworzyć, zwykle sygnalizuje błąd w wyliczaniu wielkości pozycji, a nie chwilowy brak środków.

Powiązane