Wyjście czasowe: zamknięcie pozycji o 22:45 i dlaczego akurat ta godzina
W skrócie: większość moich botów zamyka każdą otwartą pozycję o 22:45 czasu serwera, niezależnie od tego, gdzie jest cena. Godzinę wybrałem tak, żeby była wcześniej niż zamknięcie sesji u wszystkich brokerów, których używam. Późniejsza godzina wygląda niewinnie, a w jednym teście z mojego wsadu kosztowała ponad sto tysięcy linii logu.
Po co w ogóle wyjście czasowe
Stop loss i take profit nie gwarantują, że pozycja skończy się w tym samym dniu. Bot dziennego handlu, który nagle zostaje z pozycją na noc albo na weekend, to już inna strategia, z luką cenową i innym kosztem swapu. Wyjście czasowe sprowadza to do jednej reguły: po tej godzinie pozycji nie ma. Przy okazji upraszcza testowanie, bo każdy dzień zaczyna się od czystego stanu.
Pamiętam przy tym o drugiej stronie: pozycja, która miała jeszcze szansę, zostaje zamknięta po cenie z danej chwili. To świadomy koszt. Sprawdzam go w teście, porównując wyniki z wyjściem czasowym i bez niego, a nie zakładam z góry.
Skąd 22:45
Sesje instrumentów różnią się między brokerami. Indeksy zamykają się wcześniej niż forex, a w piątki bywa to jeszcze wcześniej. Przykład z moich notatek: sesja złota u jednego z brokerów trwa do 23:50 czasu serwera, ale piątkowa sesja indeksu US30 u innego kończy się około 22:55. Gdyby termin wypadał po zamknięciu rynku, zlecenie zamknięcia zostałoby odrzucone.
22:45 zostawia zapas przed najwcześniejszym zamknięciem, jakie znam, i jest jedną wartością dla całej floty. Nie muszę pamiętać osobnych godzin dla każdego konta. Przy kompilacji bota sprawdzam domyślne i wdrażane godziny zamknięcia, a każdą późniejszą niż 22:45 zgłaszam do decyzji, zamiast ją cicho akceptować.
Co się dzieje, gdy zamknięcie przypada po końcu sesji
Pozycja wisi do otwarcia rynku, a bot próbuje ją zamknąć co kilkanaście sekund. W jednym z testów wieloletnich pozycja otwarta w piątek miała termin zamknięcia o 22:55, czyli po zamknięciu rynku złota. Bot ponawiał próbę przez cały weekend i zapisał ponad sto tysięcy linii odrzuceń w jednym logu. Wynik handlowy się nie zmienił, bo zamknięcie nastąpiło po otwarciu rynku, ale log przestał nadawać się do czytania. Szczegóły tego przypadku opisuję osobno, w artykule o ponawianiu zamknięcia przez weekend.
Wniosek jest prosty: godzina wyjścia ma być bezpiecznie przed końcem najkrótszej sesji, a próby zamknięcia nie mogą się ponawiać bez ograniczenia.
Termin zapamiętany w zmiennej: jak zawodzi
Żeby wyjście czasowe przetrwało restart terminala, termin zamknięcia zapisuję w zmiennej globalnej terminala, liczony od czasu otwarcia pozycji. W jednym z terminali demo znalazłem w pliku tych zmiennych termin ustawiony na rok 2573. Dla dwóch botów oznaczało to, że zamknięcie o godzinie było wyłączone na stałe, a w Testerze (gdzie zmienne są osobne) wszystko działało poprawnie. Takiej rozbieżności nie widać w żadnym raporcie. W tym tygodniu pozycje kończyły się stop lossem albo take profitem, więc strat nie było, ale sprawa została niewyjaśniona: nie ustaliłem, jak termin tak daleko uciekł. Podejrzewam jedno zdarzenie z błędnym czasem serwera, bo oba boty miały ten sam dzień. To tylko hipoteza.
Zostawiam z tego zasadę: jeśli zamknięcie czasowe zależy od zapamiętanej wartości, sprawdzam jej sensowność (czy termin nie jest odległy o lata) i porównuję zachowanie na koncie z testem.
Checklista
- Czy godzina zamknięcia jest nie późniejsza niż 22:45 czasu serwera?
- Czy jest wcześniejsza niż najwcześniejsze zamknięcie sesji tego instrumentu, także w piątek?
- Czy porównałem wynik z wyjściem czasowym i bez niego?
- Czy ponawianie zamknięcia jest ograniczone w częstotliwości?
- Czy zapamiętany termin zamknięcia ma sensowną wartość po restarcie i po awarii serwera?
[DO UZUPEŁNIENIA: wynik porównania bota z wyjściem czasowym i bez niego]
Powiązane
- Ponawianie zamknięcia przez weekend: spam w logach
- Piątkowe zamknięcie i luka weekendowa
- Zamknięcie pozycji przed weekendem: ustawienie w bocie
- Pojęcia: słowniczek, skorowidz
Źródła
Brak źródeł zewnętrznych - własne notatki i logi Testera (październik-listopad 2026).
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.