EN
Artykuły / 1.3 Zlecenia
Zleceniaszkic

Zlecenia oczekujące na noc: dlaczego ich nie zostawiam

15.11.20262 min czytania

W skrócie: w moich botach zlecenie oczekujące (stop, limit) żyje najwyżej do końca sesji. Wieczorem je kasuję, a nowe wystawiam następnego dnia. Noc to czas z cienkim rynkiem, szerokim spreadem i lukami, a zlecenie wiszące bez nadzoru wykona się w najgorszej możliwej chwili.

Cztery powody

1. Luka. Stop z poziomem w środku nocnej luki wypełnia się po cenie otwarcia, nie po swojej. Wejście bywa gorsze o kilkanaście punktów od planu, a stop loss ustawiony względem zakładanej ceny wejścia jest wtedy za blisko albo za daleko. Mechanizm opisuję w artykule o luce cenowej.

2. Spread po przerwie. Po przerwie dobowej i na otwarciu azjatyckim spread bywa kilkukrotnie szerszy niż w dzień. Zlecenie typu stop odpala się na cenie Ask lub Bid, więc szerszy spread może je uruchomić na samym szumie, bez prawdziwego ruchu. Wynik w backteście tego nie pokazuje, jeśli test bierze stały albo uśredniony spread (zobacz spread w backteście).

3. Wygasanie po stronie brokera. Zlecenie z terminem ważności u jednych brokerów znika o północy czasu serwera, u innych działa do odwołania, a przy zmianie czasu doba ma inną długość. Bot, który zakłada, że zlecenie wciąż jest, a ono zniknęło, albo odwrotnie, liczy pozycje błędnie. Szczegóły: wygasanie zleceń oczekujących.

4. Reguły prop firm. Część firm zabrania trzymania pozycji przez weekend, a zlecenie oczekujące, które odpali się w nocy lub w poniedziałek rano, otwiera pozycję wtedy, gdy nikt jej nie pilnuje. Przy limicie dziennej straty jedna nocna transakcja zjada margines, zanim dzień się zacznie (zakaz trzymania przez weekend).

Co robię w kodzie

Bot sam usuwa swoje zlecenia oczekujące o ustalonej godzinie przed końcem sesji (godzina z inputu, standardowo ta sama co zamknięcie pozycji) i nie wystawia nowych po niej. Usuwa tylko własne zlecenia, rozpoznane po numerze magic, nie cudze. Nie polegam wyłącznie na terminie ważności po stronie brokera, bo jego zachowanie bywa różne. Wyjątek: strategie, które świadomie handlują otwarcie następnego dnia, wystawiają zlecenie dopiero po otwarciu sesji, a nie dzień wcześniej.

Kiedy to może mieć sens

Zlecenia na kilka dni stosują ręczni traderzy handlujący wykresy dzienne, z szeroką tolerancją na luki i niskim ryzykiem na pozycję. Dla bota na M5-H1 z limitem dziennym straty i ryzykiem liczonym od odległości SL korzyść jest niewielka, a ryzyko trudne do oszacowania.

Checklista

  • Czy bot kasuje swoje pendingi przed końcem sesji?
  • Czy kasowanie dotyczy tylko zleceń z jego numerem magic?
  • Czy nowe zlecenia nie są wystawiane po ustalonej godzinie wieczornej?
  • Czy w teście sprawdziłem zachowanie na luce i na szerokim spreadzie po przerwie?
  • Czy reguły firmy nie zabraniają pozycji przez noc lub weekend?

Powiązane

Źródła

Brak źródeł zewnętrznych - opis z własnych zasad pisania botów.

Ostrzeżenie: artykuł ma charakter edukacyjny i nie jest poradą inwestycyjną. Wyniki z przeszłości nie gwarantują przyszłych. Handel na rynkach finansowych wiąże się z ryzykiem utraty kapitału.

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.

21

Wygasanie zleceń oczekujących po stronie brokera

Zlecenie oczekujące może wygasnąć samo na serwerze brokera albo zależeć od sprzątania w bocie. Różnica robi się ważna, gdy terminal lub VPS padnie w trakcie dnia. Opisuję tryby GTC, DAY i z datą oraz pułapkę błędu 10022.

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