EN
Artykuły / 21.4 Wybór ustawień i wdrożenie
Wybór ustawień i wdrożenieszkic

Kiedy NIE optymalizować bota w MT5 - za mało transakcji i za dużo parametrów

15.11.20263 min czytania

W skrócie: optymalizacja zawsze zwraca tabelę z “najlepszym” wierszem, także gdy dane są za skąpe, żeby cokolwiek z nich wyczytać. Przed startem sprawdzam cztery rzeczy: ile transakcji daje bot, ile parametrów ruszam naraz, czy mam pomysł, dlaczego dany parametr miałby działać, i jaką historię mam do dyspozycji. Gdy któraś odpowiedź jest zła, nie uruchamiam optymalizacji.

Najlepszy wiersz istnieje zawsze

Jeśli puszczę setki kombinacji na tej samej historii, któraś będzie na wierzchu z samego przypadku. To nie znaczy, że znalazłem przewagę. Znaczy, że wylosowałem. Im mniej transakcji i im więcej kombinacji, tym większy udział losu w tym, co widzę. Szerzej o tym w artykule o pułapce najlepszego wiersza.

Cztery sytuacje, w których odpuszczam

Za mało transakcji. Mam własną regułę zakończenia prac nad wariantem: poniżej profit factor 1,5 albo poniżej 100 transakcji rocznie przestaję testować ten wariant. Optymalizacja na kilkudziesięciu transakcjach nie wykryje różnicy między dobrym ustawieniem a szczęśliwym. Gdy bot handluje rzadko, zamiast stroić go, wolę sprawdzić go rok po roku na tych samych ustawieniach.

Za dużo parametrów naraz. Każdy dodatkowy parametr mnoży liczbę kombinacji i daje optymalizatorowi kolejny sposób na dopasowanie się do historii. Zwykle zmieniam jeden parametr, najwyżej dwa, a pozostałe trzymam stałe. Gdy czuję, że “trzeba ruszyć sześć rzeczy”, to bot ma kłopot z samą koncepcją, nie z ustawieniami.

Brak uzasadnienia. Jeśli nie umiem powiedzieć, dlaczego parametr miałby wpływać na wynik, a zakres to losowe liczby, wynik też będzie losowy. Dobry parametr ma sens rynkowy: długość sesji, okres średniej, odległość w ATR. Zły to coś, co wybrałem, bo da się to zmienić.

Zbyt krótka lub jednorodna historia. Okno obejmujące jeden reżim rynku (tylko trend albo tylko konsolidację) nauczy parametry tego jednego reżimu. Żeby to zobaczyć, powtarzam test na każdym roku osobno. Jeśli ustawienie działa w jednym roku, a w pozostałych nie, nie jest to ustawienie, tylko zbieg okoliczności.

Co robię zamiast optymalizacji

  • Test włącz/wyłącz dla filtra zamiast strojenia jego progu. Filtr, który działa tylko przy jednej wartości, zwykle nie działa wcale.
  • Kilka ustawień z uzasadnieniem i porównanie ich na tym samym okresie i u tego samego brokera.
  • Wynik rok po roku zamiast jednej sumy z całej historii.
  • Odłożenie bota do czasu, aż uzbiera się więcej transakcji na demo.

Gdy jednak optymalizuję

Wtedy wybieram środek obszaru, w którym sąsiednie wartości dają podobny wynik, a nie pojedynczy szczyt, i weryfikuję go poza okresem strojenia. Opisuję to w artykułach o plateau i o podziale na część strojącą i kontrolną. [DO UZUPEŁNIENIA: przykład bota, który odłożyłem, bo miał za mało transakcji na optymalizację]

Checklista

  • Czy bot daje co najmniej 100 transakcji rocznie na badanym okresie?
  • Czy zmieniam jeden parametr, najwyżej dwa?
  • Czy każdy parametr ma uzasadnienie rynkowe?
  • Czy historia obejmuje więcej niż jeden reżim rynku?
  • Czy sprawdzę wynik rok po roku, a nie tylko sumę?
  • Czy wybieram środek plateau, a nie pojedynczy szczyt?
  • Czy mam okres kontrolny, którego nie używałem do strojenia?

Powiązane

Źródła

  • Bailey, Borwein, López de Prado, Zhu, “The Probability of Backtest Overfitting”, Journal of Computational Finance, 2016 (sprawdzone 15.11.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.

Dalej w rozdziale

564

Przesuwanie okna testu co miesiąc: ten sam bot, nowy wynik

Gdy kończy się miesiąc, okno testu 12 miesięcy przesuwam o ten miesiąc. Wynik bota potrafi się wtedy zmienić bez żadnej zmiany kodu: u mnie z 21 zaliczonych i 0 niezaliczonych na 19 i 1.