EN
Artykuły / 16.2 Studia przypadków
Studia przypadkówszkic

Ponawianie zamknięcia pozycji przez weekend: spam w logach

14.11.20263 min czytania

W skrócie: gdy bot chce zamknąć pozycję o ustalonej godzinie, a rynek jest już zamknięty, każda próba kończy się odrzuceniem z kodem “rynek zamknięty”. Bot ponawia ją co kilkanaście sekund aż do poniedziałku. W testach wieloletnich to setki weekendów i logi po kilkaset megabajtów. Poprawka nie polega na wyciszeniu komunikatu, tylko na niewołaniu zamknięcia, gdy rynek stoi.

Jak to wykryłem

Przyjęta przeze mnie zasada: log Testera większy niż 100 MB na jeden przebieg to sygnał do zbadania źródła. Przejrzałem więc największe logi z testów i policzyłem, co w nich dominuje. Wyszło jedno: ponawianie zamknięcia pozycji w czasie, gdy rynek jest zamknięty. Każda próba daje 2-3 linie, bo log tworzy już klasa wysyłająca zlecenie, a dopiero potem własny komunikat bota.

Dwa przypadki

Pierwszy: bot wybijający kanał EMA na złocie (bot 2010_GoldAsiaEmaChannelBreakoutEA). Pozycja otwarta w piątek miała termin zamknięcia o 22:55, czyli po zamknięciu rynku złota. Wisiała cały weekend, a próby szły z każdej świecy M1 i z timera co 15 sekund. W jednym logu zliczyłem 106 065 linii odrzuceń, co dawało 62% objętości całego logu. Pozycja i tak zamykała się po otwarciu rynku, więc wynik się nie psuł. Psuł się log i czas testu.

Drugi: bot grający lukę FVG na indeksie (bot 6260_SixCandleFvgEA). Okno zamknięcia i funkcja “blisko zamknięcia rynku” wołały zamknięcie z timera co 5 sekund. Podczas przerwy dobowej i weekendu daje to ok. 1,84 mln linii, 73% logu.

Bot Częstość prób Skala w logu
bot kanału EMA (złoto) M1 + timer co 15 s 106 065 linii, 62% logu
bot FVG (indeks) timer co 5 s ok. 1,84 mln linii, 73% logu

Dlaczego samo wyciszenie komunikatu nie wystarcza

Linie “nieudane zlecenie” tworzy biblioteka wysyłająca zlecenie, nie bot. Usunięcie własnego komunikatu skraca log najwyżej o jedną trzecią, a próby nadal idą do serwera. Skutek w żywym handlu jest gorszy niż w Testerze: bot zalewa dziennik tysiącami odrzuceń, a w nim giną rzeczywiste ostrzeżenia.

Co poprawiam

  • Zamknięcie próbuję tylko wtedy, gdy symbol jest w sesji handlowej (z danych sesji symbolu albo trybu handlu). Pierwsze zamknięcie następuje na pierwszym timerze po otwarciu, jak dotychczas, więc wynik się nie zmienia.
  • Zamiennie: po odrzuceniu zapamiętuję czas następnej próby (np. 60 s). To prostsze, ale może przesunąć cenę wyjścia o minutę w poniedziałek rano.
  • Komunikat o odrzuceniu loguję raz na pozycję, a nie przy każdej próbie.
  • Po zmianie robię regresję: ta sama liczba transakcji i ten sam zysk co przed poprawką.

Wspólna metoda w bibliotece jest rozwiązaniem docelowym, ale zmiana biblioteki wymusza podbicie każdego bota, który ją używa. Dlatego najpierw poprawiam dwa najgorsze boty lokalnie.

Przyczyna u źródła

Za każdym razem jest to rozbieżność: godzina zamknięcia w bocie późniejsza niż koniec sesji symbolu. Zasada 22:45 czasu serwera (art. o zamknięciu przed weekendem) usuwa większość takich przypadków. Wartość 22:55 na indeksie w piątek jest już za późna, bo sesja kończy się wcześniej.

Checklista

  • Sprawdź największe logi Testera i zobacz, które komunikaty dominują.
  • Zamknięcie pozycji tylko w sesji handlowej symbolu.
  • Komunikat o odrzuceniu raz na pozycję.
  • Godzina zamknięcia bota przed końcem sesji symbolu (standard 22:45 serwera).
  • Po poprawce regresja: ta sama liczba transakcji i ten sam zysk.

[DO UZUPEŁNIENIA: czy poprawka została już wdrożona w obu botach i na jakich kontach pojawiło się to na żywo]

Powiązane

Źródła

Brak źródeł zewnętrznych - analiza własnych logów testów (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.