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

MQL5 / Błędy

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 zleceniaPołożenie względem ceny
ORDER_TYPE_BUY_LIMITponiżej ask
ORDER_TYPE_BUY_STOPpowyżej ask
ORDER_TYPE_SELL_LIMITpowyżej bid
ORDER_TYPE_SELL_STOPponiżej bid
Cena zawsze świeża i zaokrąglona
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);

Powiązane