retcode 10008
10008 — TRADE_RETCODE_PLACED
Zlecenie oczekujące zostało wystawione. Numer, który dostajesz, nie jest numerem pozycji, a droga od jednego do drugiego bywa przerwana.
1 fragment kodu z tej strony przeszedł przez kompilator MetaEditor build 6090, 2026-08-05.
CTrade::OrderSend: buy limit 0.10 EURUSD at 1.09100 [placed]Co ten kod znaczy
Zlecenie oczekujące trafiło do systemu i czeka na osiągnięcie ceny. Pozycja jeszcze nie istnieje i może nigdy nie powstać.
Trzy numery, które nie są tym samym
To jest miejsce, w którym najczęściej gubi się kod śledzący własne zlecenia.
| Numer | Kiedy powstaje | Gdzie go szukać |
|---|---|---|
| numer zlecenia | przy wystawieniu | wynik.order |
| numer transakcji | przy wykonaniu | wynik.deal, później w historii |
| identyfikator pozycji | przy otwarciu pozycji | POSITION_IDENTIFIER |
Numer zlecenia zapamiętany po kodzie 10008 nie posłuży do PositionSelectByTicket. Żeby dojść od zlecenia do pozycji, trzeba przejść przez transakcję: w historii transakcja ma pole DEAL_ORDER wskazujące zlecenie, z którego powstała, oraz DEAL_POSITION_ID wskazujące pozycję.
Zlecenia oczekujące liczy inna funkcja
PositionsTotal ich nie widzi. Ekspert, który sprawdza „czy mam już otwartą pozycję" i na tej podstawie wystrzega się drugiego wejścia, przy strategii opartej o zlecenia oczekujące policzy zero i wystawi kolejne.
int MojeZlecenia(const string symbol, const ulong magic)
{
int ile = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
ulong bilet = OrderGetTicket(i);
if(bilet == 0)
continue;
if(OrderGetInteger(ORDER_MAGIC) != (long)magic)
continue;
if(OrderGetString(ORDER_SYMBOL) != symbol)
continue;
ile++;
}
return ile;
}Droga od zlecenia do pozycji bywa przerwana
Wystawione zlecenie nie jest gwarancją niczego. Może:
- wygasnąć, jeśli podano czas wygaśnięcia — patrz 10022,
- zostać anulowane przy aktywacji, gdy w tym momencie zabraknie depozytu albo zostanie przekroczony limit — wtedy przychodzi 10041 i zlecenie znika,
- zostać przeskoczone przez lukę cenową, po której aktywuje się po cenie znacznie gorszej niż podana.
Jak dowiedzieć się o aktywacji
Odpytywanie listy pozycji przy każdym ticku działa, ale jest kosztowne i nieprecyzyjne. Właściwym mechanizmem jest OnTradeTransaction: aktywacja zlecenia generuje transakcję, a ta niesie komplet informacji łącznie z powodem.