Lista transakcji zamiast sumy: jak znaleźć powód regresji wyniku
W skrócie: po przepisaniu trzech botów na wspólną klasę wynik jednego spadł z +16,4 tys. do +7,8 tys., a drugiego z +41,9 tys. do +14,0 tys. Szukanie przyczyny po sumach to zgadywanie. Porównałem więc listy transakcji z dwóch raportów, parami, dzień po dniu. Liczba wejść była ta sama, a cena wejścia gorsza średnio o 8 punktów.
Co zmieniłem i co się stało
Boty handlują na wybiciu z zakresu otwarcia Nowego Jorku z wejściem po cofnięciu. Przy porządkowaniu kodu przeniosłem ich wspólną logikę do jednej klasy i “uprościłem” dwie rzeczy: wejście sprawdzane raz na minutę i jeden wspólny punkt zerowy skali. Na papierze to bez znaczenia dla strategii. W teście wynik spadł o połowę albo o dwie trzecie.
Pierwszy odruch to szukać winy w sumach: ktoś źle policzył lot, zmienił się filtr, zepsuł się spread. Tak można tracić dni, bo suma zawiera setki transakcji i nie mówi, które z nich się zmieniły.
Metoda: pary transakcji zamiast sum
Wzięłem dwa raporty HTML z Testera, oryginalny i po zmianie, ten sam okres, ten sam symbol. Zamiast porównywać saldo końcowe, ułożyłem transakcje obok siebie według dnia i dla każdej pary zestawiłem czas wejścia, cenę, kierunek i wynik. Wnioski z tego były szybkie:
- 175 z 176 wejść wypadało w tym samym dniu i w tym samym kierunku,
- wejścia były w tej samej minucie,
- stop loss był identyczny,
- cena wejścia była średnio o 8 punktów gorsza (mediana 5 punktów).
Liczba transakcji identyczna oznacza, że logika sygnału jest ta sama. Różnica leży w jakości wejścia, nie w tym, czy bot wchodzi. To od razu wyklucza filtry, godziny sesji i większość błędów w sygnale.
Przyczyna i poprawka
Oryginał wchodził na pierwszym tiku, który dotknął poziom. Moja “uproszczona” wersja sprawdzała poziom raz na minutę, po zamknięciu świecy, więc wchodziła po tym, jak cena już odjechała. W strategii z krótkim celem kilka punktów gorszego wejścia to różnica między dobrym wynikiem a połową zysku. Po przywróceniu sprawdzania przy każdym tiku wyniki wróciły: w 2026 roku oba boty były identyczne co do grosza, a drugi w 2025 roku znów dawał +41 923.
Wniosek ogólny jest taki, że wynik strategii o krótkim celu jest bardzo wrażliwy na cenę wejścia. Ta lekcja doprowadziła mnie do dwóch kolejnych tematów: różnicy między testem na świecach a na tikach oraz do wejścia zleceniem limit zamiast rynkowym (oba opisałem osobno).
Pułapka: stare wiersze w pliku wyników
Przy takich porównaniach łatwo pomylić rozjazd wyniku z tym, że test się nie wykonał i w pliku wyników zostały stare wiersze. Zanim porównam, sprawdzam, że oba raporty mają świeży znacznik czasu i właściwy okres.
Jak to robię teraz
- Zapisuję raport z wersji sprzed zmiany jako punkt odniesienia, zanim cokolwiek ruszę.
- Po zmianie uruchamiam ten sam okres i porównuję listę transakcji, nie tylko saldo.
- Szukam najpierw różnicy w liczbie wejść (logika), potem w cenie wejścia (wykonanie), potem w wielkości lota.
- Zmianę, która “nie powinna nic zmieniać”, traktuję jak każdą inną: bez zgodności list transakcji nie uznaję jej za neutralną.
Checklista
- Mam raport referencyjny sprzed zmiany z wersją kodu.
- Porównuję ten sam okres, symbol i ustawienia.
- Zestawiam transakcje parami (dzień, kierunek, cena, wynik).
- Najpierw sprawdzam liczbę wejść, potem cenę, potem lot.
- Wykluczyłem stare wiersze i nieudany test.
Powiązane
- OHLC kontra prawdziwe tiki
- Limit zamiast zlecenia rynkowego
- NY Open Range 50% Fib - test strategii z YouTube
- Pojęcia z artykułu: słowniczek, skorowidz
Ostrzeżenie: handel CFD i forex wiąże się z wysokim ryzykiem utraty kapitału. Wyniki testów opisują przeszłość i nie gwarantują zysku w przyszłości. Artykuł ma charakter edukacyjny i nie jest rekomendacją inwestycyjną.