EN
Artykuły / 1.3 Zlecenia
Zleceniaszkic

Wygasanie zleceń oczekujących po stronie brokera

14.11.20263 min czytania

W skrócie: zlecenie oczekujące (stop, limit) ma czas ważności. Jeśli bot kasuje je sam o ustalonej godzinie, to cała ochrona zależy od tego, że terminal i VPS wtedy działają. Wygasanie ustawione u brokera działa nawet wtedy, gdy bota nie ma. Dlatego w botach ustawiam czas ważności na serwerze, a sprzątanie w kodzie zostawiam jako drugą linię.

Trzy tryby ważności

W MT5 zlecenie oczekujące może mieć jeden z trzech czasów ważności:

Tryb Co się dzieje
GTC (dobre do odwołania) zlecenie żyje, dopóki ktoś go nie usunie
DAY (do końca dnia) serwer kasuje je z końcem dnia handlowego
z konkretną datą serwer kasuje je w podanej chwili

Tylko pierwszy tryb zostawia sprzątanie botowi. W pozostałych kasuje serwer, więc zlecenie znika także wtedy, gdy terminal jest wyłączony.

Dlaczego to ma znaczenie: awaria w środku dnia

W jednej z moich klas bibliotecznych zlecenia stop były kiedyś wystawiane jako GTC, a bot kasował je o ustalonej godzinie. Przy normalnej pracy wszystko wyglądało dobrze. Ale gdyby VPS padł przed tą godziną i nie wstał do końca dnia, zlecenie zostałoby przez całą noc i mogło się uruchomić na nieaktualnym setupie, już w innych warunkach rynku. Po audycie zmieniłem tryb na DAY. Moja zasada jest prosta: zlecenia oczekujące nie przechodzą na następny dzień (pending na noc to źródło luk i zleceń w nieoczekiwanych cenach). Codzienne zachowanie nie zmieniło się, bo bot i tak sprzątał zlecenia o swojej godzinie. Zmieniła się tylko ochrona na wypadek awarii.

Wygasanie z datą: bot z limitem

W bocie, który wchodzi zleceniem limit na poziomie z wybicia (wejście na dotknięcie poziomu), ustawiam wygaśnięcie na godzinę graniczną wejść. Limit znika u brokera nawet po awarii terminala. Pozycja otwarta z tego limitu nie ma już czasu ważności: SL i TP pilnuje broker, a zamknięcie o godzinie robi bot.

Pułapka: wygaśnięcie za blisko (błąd 10022)

Przy wygasaniu z datą broker może odrzucić zlecenie, jeśli czas ważności jest za blisko chwili wystawienia. W teście 10 zleceń zostało odrzuconych z kodem 10022. Dlatego bot nie wystawia limitu w ostatnich trzech minutach przed wygaśnięciem. Minimalny odstęp zależy od brokera, więc nie traktuj tych trzech minut jako reguły ogólnej: sprawdź w dzienniku, jak odpowiada Twój serwer.

W Testerze wygasanie działa, więc ten błąd widać też na backteście. To dobra okazja, żeby wychwycić go przed uruchomieniem na koncie (bot nie otwiera pozycji).

Co zrobić w swoim bocie

  1. Wybierz tryb DAY albo z datą, zamiast GTC.
  2. Zostaw sprzątanie w kodzie jako drugą linię (kasowanie o godzinie zamknięcia).
  3. Przy trybie z datą zostaw margines od chwili wygaśnięcia i obsłuż odrzucenie zlecenia w logu.
  4. Przetestuj awarię: w Testerze zatrzymaj bota przed godziną sprzątania i sprawdź, czy zlecenie znika.
  5. Pamiętaj o zasadzie “wyłączenie kontra blokada”: usunięcie bota nie usuwa zleceń (wyłączenie a blokada).

[DO UZUPEŁNIENIA: czy zdarzyło się, że zlecenie GTC przeżyło noc na koncie live i co z tego wyszło]

Checklista

  • zlecenia oczekujące mają ważność DAY albo z datą, nie GTC,
  • godzina graniczna wejść ustawiona z marginesem od wygaśnięcia,
  • obsługa odrzucenia (kod 10022) w logu,
  • sprzątanie w kodzie jako druga linia,
  • sprawdzone, co się dzieje przy zatrzymaniu bota przed godziną sprzątania.

Powiązane

Ostrzeżenie: handel CFD i forex wiąże się z wysokim ryzykiem utraty kapitału. Artykuł ma charakter edukacyjny i nie jest rekomendacją inwestycyjną.

Dalej w rozdziale

18

Limit zamiast zlecenia rynkowego: wejście na dotknięcie poziomu

Bot czekał na cofnięcie do poziomu i wchodził rynkowo przy pierwszym dotknięciu. Zamieniłem to na zlecenie limit i backtest na świecach M1 zgodził się z testem na tikach.

20

Zlecenia oczekujące na noc: dlaczego ich nie zostawiam

Zlecenie stop lub limit wystawione wieczorem i zostawione do rana to ryzyko, którego bot w ciągu dnia nie ma: luka, szeroki spread po przerwie, zmiana czasu i reguły prop firm. Cztery powody, dla których kasuję pendingi przed zamknięciem sesji.

25

Typy wypełnienia FOK, IOC i Return: skąd bierze się błąd 10030

Bot działa u jednego brokera, a u drugiego każde zlecenie wraca z błędem 10030. Wyjaśniam, czym są tryby wypełnienia FOK, IOC i Return, jak sprawdzić, które dopuszcza symbol, i jak bot ma wybierać tryb zamiast go zgadywać.