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

MQL5 / Błędy

retcode 10032

10032 — TRADE_RETCODE_ONLY_REAL

Kod, który przypomina o czymś większym: co jeszcze różni rachunek demo od rzeczywistego i czego nie sprawdzisz przed pierwszą wpłatą.

2 fragmenty kodu z tej strony przeszły przez kompilator MetaEditor build 6090, 2026-08-05.

CTrade::OrderSend: market buy 1.00 US500 [only real accounts allowed]

Co ten kod znaczy

Operacja albo instrument są dostępne wyłącznie na rachunkach z prawdziwymi pieniędzmi. Sam kod jest rzadki. Warto go jednak znać, bo jest jedynym sygnałem z API o czymś, co dotyczy każdego testu na demo.

Sprawdzenie typu rachunku

Trzy rodzaje rachunków
long tryby = AccountInfoInteger(ACCOUNT_TRADE_MODE);

switch((int)tryby)
  {
   case ACCOUNT_TRADE_MODE_DEMO:
      Print("rachunek demonstracyjny");
      break;
   case ACCOUNT_TRADE_MODE_CONTEST:
      Print("rachunek konkursowy");
      break;
   default:
      Print("rachunek rzeczywisty");
  }

Czego demo nie pokaże

To jest właściwa treść tej strony. Rachunek demo jest doskonały do sprawdzania logiki i bezużyteczny do sprawdzania wykonania. Różnice, w kolejności znaczenia dla wyniku:

Poślizgi. Serwer demo zwykle wykonuje zlecenia po cenie żądanej albo bardzo blisko niej. Na rachunku rzeczywistym poślizg pojawia się przy każdym gwałtowniejszym ruchu, a przy publikacji danych bywa wielokrotnie większy niż spread. Zmierzyć go można wyłącznie na prawdziwym rachunku — jak, opisaliśmy przy kodzie 10009.

Rekwotowania. Na demo praktycznie nie występują. To sprawia, że kod obsługujący 10004 bywa nigdy nieprzetestowany, mimo że formalnie jest napisany.

Odmowy wykonania. Kody z rodziny odrzuceń — 10006, 10028 — na demo pojawiają się rzadko, bo nie ma dealera po drugiej stronie.

Dostępność instrumentów. Część instrumentów, zwłaszcza akcji i indeksów giełdowych, jest na demo niedostępna albo dostępna z opóźnionymi kwotowaniami.

Opóźnienie. Serwer demo bywa mniej obciążony niż produkcyjny. Ekspert wrażliwy na czas wykonania na demo zachowa się lepiej.

Jak to obejść bez wpłacania pieniędzy

Nie da się w pełni, ale da się częściowo. Napisz test, który wymusza kody błędów zamiast czekać, aż same przyjdą: wyślij zlecenie z wolumenem poniżej minimum, ze stopem tuż przy cenie, z niemożliwym trybem wypełnienia. Każde z tych zapytań zwróci konkretny kod i przeprowadzi twój kod przez gałąź, która inaczej pozostałaby martwa.

Świadome wywołanie odmowy, żeby sprawdzić obsługę
MqlTradeRequest zapytanie = {};
MqlTradeResult wynik = {};

zapytanie.action = TRADE_ACTION_DEAL;
zapytanie.symbol = _Symbol;
zapytanie.type   = ORDER_TYPE_BUY;

//--- wolumen swiadomie ponizej minimum: spodziewamy sie 10014
zapytanie.volume = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN) / 2.0;
zapytanie.price  = SymbolInfoDouble(_Symbol, SYMBOL_ASK);

if(!OrderSend(zapytanie, wynik))
   PrintFormat("zapytanie nie wyszlo, blad %d", GetLastError());

PrintFormat("test obslugi: retcode %d (%s)", wynik.retcode, wynik.comment);

Zapytanie zostanie odrzucone, więc nic się nie otworzy — a twój kod obsługi błędu wykona się po raz pierwszy w kontrolowanych warunkach, a nie w środku sesji na prawdziwym rachunku.

Powiązane