Cache optymalizacji w MT5: stare wyniki zamiast nowego liczenia
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
- Pułapka najlepszego wiersza
- Osobny terminal do testów: tryb portable
- Limit czasu testu
- Pojęcia: słowniczek, skorowidz
Ź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.