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
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.
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.