Strategy Tester w MT4 i MT5 pozwala odtworzyć działanie Expert Advisora na historii. Wynik zależy od kodu, danych i modelu wykonania. Wysoki procent jakości modelowania nie potwierdza rentowności, a sam wybór rzeczywistych ticków nie usuwa wszystkich ograniczeń testu.

Wybierz właściwy program i rachunek

Otwórz tester skrótem Ctrl+R. Wskaż EA odpowiedni dla platformy: plik EX4 dla MT4 lub EX5 dla MT5. Kod MQL4 i MQL5 nie jest wymienny przez zmianę rozszerzenia. Zapisz wersję programu, parametry i używaną kompilację terminala.

Wybierz symbol wraz z właściwym oznaczeniem brokera, interwał i daty. Sprawdź walutę depozytu, wielkość kontraktu, krok wolumenu oraz zasady marginu. Nie istnieje obowiązkowy zakres pięciu czy dziesięciu lat dla każdego pomysłu. Istotna jest jakość i przydatność dostępnych danych.

MT5 umożliwia testy wieloinstrumentowe i rozdziela przebiegi optymalizacji między agentów. Nie oznacza to, że pojedynczy przebieg jednego EA automatycznie wykorzystuje wszystkie rdzenie. MT4 również ma optymalizację genetyczną; nie jest ona wyłączną cechą MT5.

Standardowy tester MT4 nie wykonuje operacji handlowych na symbolach innych niż testowany. Dostęp do danych innego interwału nie jest jednak tym samym co handel wieloma instrumentami. Ręczne zsumowanie oddzielnych raportów nie odtwarza wspólnego kapitału i ograniczeń portfela.

Dobierz model do sposobu podejmowania decyzji

O potrzebnej szczegółowości decyduje logika wejścia i wyjścia, a nie sam napis M5, H1 czy D1. Strategia dzienna z ciasnym stopem może być bardzo wrażliwa na ruch wewnątrz świecy. Reguła wykonywana wyłącznie na otwarciach może pozwalać na uproszczenia po sprawdzeniu ich konsekwencji.

Tryb testu i najważniejsze ograniczenie
Platforma i trybJak rozumieć wynik
MT4: Open prices onlyDo reguł zgodnych z pracą na zakończonych świecach; nie odtwarza pełnego ruchu
MT4: Control pointsZgrubne oszacowanie na podstawie niższych interwałów i modelowania
MT4: Every tickTicki interpolowane z dostępnej historii świec
MT5: 1 minute OHLCPunkty OHLC każdej minuty; brak pełnej kolejności ticków
MT5: Every tickTicki generowane na podstawie danych minutowych
MT5: real ticksZapisane ticki brokera, z kontrolą braków i uzupełnień

MT5 ma także Open prices only: obsługa OnTick zachodzi przy otwarciu baru, z wyjątkami i ograniczeniami opisanymi w dokumentacji. Dostęp do niższych lub niepasujących interwałów jest ograniczony. Zlecenia oczekujące i stopy wymagają szczególnej uwagi. Tryb obliczeń matematycznych służy innemu zadaniu i nie symuluje normalnej historii rynku.

W trybie rzeczywistych ticków MT5 brak ticków dla minuty z dostępną świecą może powodować ich wygenerowanie. Sprawdź dziennik i pokrycie historii. Spread może zmieniać się wewnątrz minuty na tickach rzeczywistych; w trybie generowanym opiera się na wartości przypisanej danej świecy minutowej.

Sprawdź pochodzenie danych

History Center w MT4 przechowuje świece. Dane pobrane jego przyciskiem Download mogą różnić się od historii serwera brokera. Import HST lub tabeli OHLC nie zamienia automatycznie testera w odtwarzacz autentycznych ticków. Tester wykorzystuje własne pliki FXT; narzędzia zewnętrzne mają odrębne procedury i wymagania.

Wskaźnik modelling quality w MT4 opisuje modelowanie na podstawie dostępnych danych, nie procent zgodności z przyszłymi transakcjami. Wartość 99% prezentowana przez określone narzędzie nie jest certyfikatem strategii. Zapisz źródło, strefę czasu, zakres i sposób przygotowania plików.

W MT5 rzeczywiste ticki pochodzą z danych udostępnianych przez serwer brokera. Sprawdź również instrumenty potrzebne do przeliczeń walutowych i sygnałów wielorynkowych. Brak odpowiedniej historii może zmienić początek dostępnego testu albo uniemożliwić poprawne obliczenia.

Ustaw koszty i wykonanie

W standardowym MT4 historię Bid uzupełnia spread ustawiony dla testu; opcja bieżąca korzysta z wartości na początku uruchomienia. To nie jest pełna historyczna ścieżka spreadu. Przykładowo przy pięciu miejscach po przecinku dla EUR/USD 12 punktów oznacza 1,2 pipsa, a nie 12 pipsów.

W MT5 sprawdź zaawansowane ustawienia rachunku, prowizje i specyfikację instrumentu. Możesz użyć ustawień prowizji rachunku albo własnych. Zweryfikuj ich naliczenie na pojedynczym zamknięciu, zamiast zakładać, że wartości domyślne zawsze odtwarzają historyczną taryfę.

Uwzględnij finansowanie i jego jednostki. Bieżąca stawka swapu nie musi odpowiadać stawce sprzed kilku lat. Tryb MT5 liczący zysk w pipsach pomija prowizje, swap i kontrolę marginu, więc nadaje się do wstępnych oszacowań, nie do końcowego raportu pieniężnego.

MT5 umożliwia symulację opóźnień realizacji żądań. To użyteczny scenariusz, lecz nie rekonstrukcja płynności, kolejki i wszystkich odpowiedzi brokera. Stała kara jednego pipsa również jest założeniem, nie pomiarem. Dobierz wariant kosztów do danych i opisz go w raporcie.

Indeks zero nie oznacza automatycznie przyszłości

W szeregu czasowym MQL5 indeks 0 oznacza bieżącą, jeszcze niezakończoną świecę. W testerze jej wartości rozwijają się wraz z symulowanym czasem. Nie jest prawdą, że każdy odczyt High lub Close z tej świecy z definicji pokazuje końcową wartość z przyszłości.

Własny przykład: o 10:15 świeca H1 rozpoczęta o 10:00 nadal trwa. Jej dotychczasowe maksimum jest już dostępne, lecz maksimum całej godziny jeszcze nie. Reguła reagująca na bieżącą cenę może używać tej informacji. Reguła wymagająca zamknięcia godziny powinna poczekać.

Nie zamieniaj mechanicznie wszystkich zer na jedynki. Zmieniłoby to również poprawne wykrywanie otwarcia nowej świecy. Przy CopyRates odróżnij przesunięcie w historii od indeksu tablicy docelowej i sprawdź kierunek indeksowania. Przy kilku interwałach kontroluj czas dostępności każdego odczytu.

CopyRates: przesunięcie historii i indeks tablicy to inne liczby

Dokumentacja CopyRates wskazuje, że start_pos = 0 oznacza bieżącą świecę, a najstarszy kopiowany element trafia na początek pamięci tablicy. Sposób dostępu przez indeks zależy następnie od ustawienia as_series. Sprawdźmy udane kopiowanie czterech świec od start_pos = 0.

Fikcyjne ceny w porządku od najstarszej do bieżącej to 100, 101, 102, 103. Używamy dynamicznej tablicy MqlRates, dla której można ustawić kierunek indeksowania. Bieżąca cena 103 nie jest jeszcze ostatecznym zamknięciem.

Te same skopiowane dane, inne znaczenie rates[1]
Kierunek indeksowaniarates[0].closerates[1].closeOstatnia zamknięta
as_series = false100101rates[2] = 102
as_series = true103102rates[1] = 102

Reguła „ostatnie zamknięcie >101,5” jest spełniona. Mechaniczny odczyt rates[1] z normalnej tablicy da jednak 101 i odrzuci sygnał. Błąd nie wymaga przyszłości: wystarczy zła identyfikacja starej świecy.

Do logu dopisz czas rates[i].time oraz faktyczną liczbę skopiowanych elementów. Nie sprawdzaj tylko ceny, bo przypadkiem podobne zamknięcia ukryją przesunięcie. Przykład zakłada pełne cztery elementy i poprawne ustawienie tablicy; przy częściowym wyniku lub błędzie pobierania nie wykonuj indeksowania jak dla kompletnej historii.

Odtwórz wykonania przed oceną wyniku

Uruchom krótki test wizualny i porównaj kilka sygnałów z regułami. Zobacz wejście, wyjście, brak transakcji, odrzucenie zlecenia i ruch obejmujący jednocześnie stop oraz cel. Zachowaj raport, listę operacji i dziennik testera.

Własny przykład kontroli: przy kapitale 10 000 zł wynik zamkniętych transakcji wynosi 500 zł, ale otwarta pozycja traci 700 zł. Saldo to 10 500 zł, equity 9800 zł przed dalszymi zmianami. Ocena samego salda ukrywa bieżące ryzyko.

Profit factor, Sharpe, obsunięcie i liczba transakcji nie mają wspólnych progów dopuszczających każdą strategię do live. Oddziel rozwój od sprawdzianu opisanego w podstawach backtestu. MT5 Forward to podział historyczny; pełny proces walk-forward wymaga ustalonej chronologii kolejnych okien.

Sprawdź, czy rozumiesz

Jedno krótkie ćwiczenie

O 10:15 strategia czyta dotychczasowe High świecy H1 rozpoczętej o 10:00. Czy sam ten odczyt jest przeciekiem z przyszłości?

Sprawdź odpowiedź

Nie. Dotychczasowe maksimum jest dostępne. Błędem byłoby użycie o 10:15 ostatecznego maksimum całej godziny; strategia wymagająca zamknięcia musi na nie poczekać.

Następny temat: Plan walidacji strategii: dowody, wersje i decyzje →