retcode 10015
10015 — TRADE_RETCODE_INVALID_PRICE
Cena w zapytaniu jest zerowa, przestarzała albo ma za dużo miejsc dziesiętnych. Częsty przy zleceniach oczekujących.
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
CTrade::OrderSend: buy limit 0.10 EURUSD at 1.093124999 [invalid price]Co ten kod znaczy
Serwer uznał wartość pola price za nieprawidłową. Trzy typowe powody:
1. Cena równa zeru. Zwykle dlatego, że SymbolInfoTick zwróciło false i nikt nie sprawdził wyniku, albo dlatego, że pole price w ogóle nie zostało ustawione, a struktura nie była wyzerowana.
2. Za dużo miejsc dziesiętnych. Wynik arytmetyki na double trzeba zaokrąglić: NormalizeDouble(cena, _Digits).
3. Zlecenie oczekujące po niewłaściwej stronie ceny. BUY LIMIT musi leżeć poniżej ceny bieżącej, BUY STOP powyżej, i odwrotnie dla sprzedaży. Zamiana tych dwóch typów miejscami to bardzo częsta pomyłka.
| Typ zlecenia | Położenie względem ceny |
|---|---|
ORDER_TYPE_BUY_LIMIT | poniżej ask |
ORDER_TYPE_BUY_STOP | powyżej ask |
ORDER_TYPE_SELL_LIMIT | powyżej bid |
ORDER_TYPE_SELL_STOP | poniżej bid |
MqlTick tick;
if(!SymbolInfoTick(_Symbol, tick))
{
Print("Brak aktualnej ceny, pomijam zlecenie.");
return;
}
zapytanie.price = NormalizeDouble(
(zapytanie.type == ORDER_TYPE_BUY) ? tick.ask : tick.bid, _Digits);