EN
Artykuły / 21.3 Optymalizacja w praktyce
Optymalizacja w praktyceszkic

Cache optymalizacji w MT5: stare wyniki zamiast nowego liczenia

15.11.20262 min czytania

W skrócie: Tester zapisuje wyniki optymalizacji w plikach cache i przy tej samej kombinacji bota, symbolu, interwału i okresu potrafi je wznowić zamiast liczyć od nowa. Efekt: zmieniasz zakres, a dostajesz stare wyniki albo kilka tysięcy przebiegów, których nie zamawiałeś. Przed każdą serią czyszczę cache tego bota.

Co się stało

Przy automatycznym uruchamianiu serii optymalizacji poprawiłem zakres jednego parametru. Zamiast czterech przebiegów terminal zrobił 4896, czyli tyle, ile liczyła wcześniejsza, błędna próba. Nowy zakres z ustawień został po cichu zignorowany. Nie było żadnego błędu, tylko zbyt długi test i wyniki niepasujące do tego, co zamówiłem.

Powód leży w folderze Tester\cache terminala. Pliki z rozszerzeniem .opt są nazwane po bocie, symbolu, interwale i okresie. Jeśli taki plik już istnieje, MT5 traktuje nową optymalizację jako dokończenie starej. Nie ma opcji w oknie Testera, która wyłączałaby to zachowanie.

Jak to rozpoznać

  • Liczba przebiegów różni się od iloczynu zakresów, który wyliczyłeś.
  • Wyniki pojawiają się natychmiast, a pasek postępu skacze na początku do dużej wartości.
  • Zmiana zakresu lub wartości stałych nie zmienia tabeli wyników.
  • Wynik “nowej” optymalizacji jest identyczny co do grosza z wcześniejszą, mimo że zmieniłem kod bota albo ustawienia.

Ostatni punkt jest najgroźniejszy: kod bota po poprawce daje inne transakcje, a tabela tego nie pokazuje, bo jej nikt nie przeliczył.

Co robię

Przed każdą serią optymalizacji skrypt przenosi pliki cache dla danego bota do osobnego folderu archiwum, a nie kasuje ich trwale. To samo robi przed pojedynczym testem. Dzięki temu każda tabela wyników pochodzi z liczenia na bieżącej wersji bota i bieżących ustawieniach. Ręcznie, bez skryptu: zamykam terminal, otwieram Tester\cache, przenoszę pliki zaczynające się od nazwy bota i uruchamiam test ponownie.

Cache ma też zaletę: przerwana długa optymalizacja da się wznowić. Używam tego tylko świadomie, gdy tę samą serię przerwałem (zasilanie, aktualizacja), a nic w bocie ani ustawieniach się nie zmieniło. Każda zmiana kodu, zakresu albo okresu oznacza czysty cache.

Dlaczego to ważne dla wyniku

Wynik z optymalizacji bez wersji bota i ustawień nie jest wiarygodny, a cache dokłada trzeci składnik: czy w ogóle ktoś go policzył teraz. Dlatego do każdego wyniku zapisuję wersję bota i kopię ustawień (zobacz standard testu bota). Sprawdzam też, czy liczba przebiegów w raporcie zgadza się z moimi obliczeniami.

Checklista

  • Czy policzyłem oczekiwaną liczbę przebiegów przed startem?
  • Czy cache bota został wyczyszczony (przeniesiony) przed serią?
  • Czy liczba przebiegów w raporcie zgadza się z oczekiwaną?
  • Czy wznawiam tylko serię przerwaną, bez zmian w bocie i ustawieniach?
  • Czy po zmianie kodu bota cache jest pusty?

Powiązane

Źródła

Brak źródeł zewnętrznych - opis z własnych testów i skryptów (wrzesień i październik 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

559

Optymalizacja dat startu: czy bot przeżyje start w dowolnym dniu

Jeden test od jednej daty niczego nie dowodzi. Przesuwam start challenge co kilka dni albo co poniedziałek i liczę, w ilu startach bot odpada i ile to osobnych złych okresów.