Backtesting Forex: jak testować strategię bez zaglądania w przyszłość
Backtesting na rynku forex polega na zastosowaniu ściśle określonych zasad do historycznych cen i zapisaniu transakcji, które powstałyby przy przyjętych założeniach realizacji zleceń. Wartościowy test jasno pokazuje chronologię, dane i koszty. Nie dowodzi, jak zlecenia zrealizowałby broker ani ile strategia zarobi w przyszłości.
Autor · Redaktor
- Autor
- Mykoła Zavarov
- Redaktor
- Andrey Bondarenko
Sprawdzono

Najważniejsze
Sygnał może wykorzystać kompletną świecę dopiero po jej zamknięciu. Realizacja musi nastąpić podczas późniejszego zdarzenia dopuszczonego przez test.
Spread, poślizg cenowy i prowizja wymagają spójnych zasad rozliczania. Kosztów zawartych już w cenach realizacji nie wolno odejmować ponownie.
Wydzielona próba historyczna traci niezależność, gdy jej wyniki wpływają na dalsze decyzje. Poniższa fikcyjna symulacja służy nauce, a nie walidacji strategii.
Czym jest backtesting na rynku forex?
Backtesting to rekonstrukcja: bierzesz ustaloną regułę, przechodzisz kolejno przez dostępne obserwacje i zapisujesz decyzje, założone wykonania zleceń oraz wyniki. W przypadku strategii forex trzeba określić parę walutową, dane cenowe, wielkość pozycji, wejścia, wyjścia i koszty transakcyjne. Pytanie dotyczy tego, co te reguły dały w danym modelu, a nie tego, czy po fakcie można znaleźć atrakcyjne transakcje.
Test ręczny można przeprowadzić przez odtwarzanie wykresu i prowadzenie rejestru transakcji. Test automatyczny powierza tę samą sekwencję programowi. Automatyzacja ułatwia powtarzanie obliczeń, ale nie naprawia reguły, która niejawnie korzysta z przyszłych cen, ani założeń realizacji niepopartych dostępnymi danymi.
Wyobraź sobie, że sprawdzasz jedynie, czy cena ostatecznie dotarła do celu. Nie odpowiada to na pytania, czy wcześniej został osiągnięty stop, po której stronie kwotowania można było zawrzeć transakcję oraz czy sygnał istniał już w chwili wejścia. Wiarygodny test zapisuje te rozstrzygnięcia przed interpretacją końcowej liczby.
Rozdziel trzy kwestie: co zaobserwowała reguła, co model uznał za możliwe do wykonania i co zawiera wynikowy rejestr transakcji.
Zdefiniuj zasady, zanim zobaczysz wynik
Przygotuj krótką specyfikację, którą inna osoba wykona bez pytania, które transakcje ci się podobały. „Kupuj, gdy rośnie impet” nie wystarczy. Wskaż ceny używane do pomiaru impetu, moment ich dostępności i sposób postępowania przy sprzecznych warunkach. Oznacz wersję i datę, aby zmieniona reguła nie zastąpiła po cichu tej pierwotnie testowanej.
- Instrument i obserwacje: symbol, interwał, godziny handlu, strefa czasowa oraz dozwolony sposób obsługi brakujących danych.
- Wejście i wyjście: dokładne warunki, czas powstania sygnału, dopuszczalne zdarzenie realizacji i stan pozycji.
- Wielkość pozycji: stała liczba jednostek albo w pełni określona reguła, w tym zasady zwiększania już otwartych pozycji.
- Realizacja i koszty: strona kwotowania, spread, prowizja, poślizg cenowy i ewentualne finansowanie pozycji utrzymywanych przez noc.
- Granice testu: dane początkowe potrzebne wskaźnikowi oraz sposób traktowania otwartych pozycji i sygnałów z ostatniej obserwacji.
Symulacja korzysta z celowo prostej reguły, która otwiera wyłącznie pozycje długie. Po zamknięciu każdej pięciominutowej świecy porównaj jej kurs zamknięcia ze średnią prostą trzech ostatnich zamknięć, wliczając właśnie zakończoną świecę. Jeżeli nie ma pozycji, a kurs zamknięcia jest powyżej SMA3, zaplanuj kupno na otwarciu następnej świecy. Jeżeli jest pozycja długa, a kurs zamknięcia jest poniżej SMA3, zaplanuj wyjście na następnym otwarciu. Równość niczego nie zmienia. Kolejne zamknięcie powyżej średniej nie dodaje nowej pozycji do już otwartej.
Reguła sprawdza położenie powyżej lub poniżej średniej; nie wymaga jej przecięcia i nie stanowi rekomendacji strategii. Pozycja zawsze wynosi 10 000 EUR. W rzeczywistym badaniu można stosować inne zasady, ale zmiana kilku z nich po obejrzeniu wyników tworzy nowy eksperyment. Szablon planu tradingowego pomaga oddzielić bieżącą specyfikację od proponowanych zmian.
Wybierz dane odpowiednie do modelu realizacji
Zacznij od pytania, na które dane potrafią odpowiedzieć. Świeca OHLC zawiera otwarcie, maksimum, minimum i zamknięcie; te cztery wartości nie ujawniają wszystkich cen pośrednich ani kolejności wystąpienia maksimum i minimum. Jeżeli stop i cel znajdują się w zakresie tej samej świecy, sama świeca zwykle nie rozstrzyga, który poziom został osiągnięty pierwszy. Tutaj kurs środkowy (midpoint) to (Bid + Ask) / 2 w danej chwili. SMA3 jest średnią kursów środkowych na zamknięciu trzech kolejnych świec.
Dane lub ustawienie | Co ustalić przed testem |
|---|---|
Bid, Ask, kurs środkowy lub Last | Ustal, jaki rodzaj ceny zapisano. Kurs środkowy sam w sobie nie jest ofertą kupna ani sprzedaży. |
Świece a tiki | Dopasuj szczegółowość danych do logiki zleceń. Nie odtwarzaj fikcyjnej, dokładnej ścieżki wewnątrz świecy z czterech cen. |
Znaczniki czasu i sesje | Zapisz strefę czasową, granice świec, luki weekendowe i brakujące przedziały. |
Specyfikacja instrumentu | Sprawdź krok ceny, wielkość kontraktu, walutę wyniku oraz znaczenie podanego spreadu. |
Przewiń w bok, aby porównać wszystkie kolumny ↔
Dokumentacja MetaTrader 5 dotycząca tików wyjaśnia, dlaczego trzeba odróżniać ceny na wykresie od cen realizacji: kupno i sprzedaż wykorzystują różne strony kwotowania, a dostępne wykresy nie muszą pokazywać obu. Dla reguły zależnej od ceny ta różnica może zmienić zarówno możliwość wykonania zlecenia, jak i jego wynik.
Określenie „rzeczywiste tiki” również wymaga sprawdzenia danych. Dokumentacja testowania MQL5 opisuje sytuacje, w których tester generuje tiki z powodu brakujących lub niespójnych rzeczywistych zapisów. Zanotuj wybrany tryb i wyjaśnij ostrzeżenia dotyczące kompletności danych; sama nazwa trybu nie opisuje każdej użytej obserwacji.
Nasza symulacja zawiera 36 fikcyjnych świec kursu środkowego EURUSD, oddalonych od siebie o pięć minut, w ramach jednej wymyślonej sesji śróddziennej. Nie są to pobrane dane historyczne z rynku. Nie ma tu zleceń stop, limit ani take profit, których kolejność realizacji należałoby rozstrzygać wewnątrz świecy. Przykład uczy kolejności zdarzeń i rozliczania kosztów; nie pozwala ustalić, czy reguła SMA działa na EURUSD.
Prześledź sygnał do następnego zdarzenia realizacji
Prześledź backtest, decyzja po decyzji
Sprawdź stałą regułę na 36 fikcyjnych pięciominutowych świecach EUR/USD opartych na kursie środkowym, czyli średniej Bid i Ask. Zmień założone koszty i prześledź sygnał, następne otwarcie oraz zapis wyniku.
Wyłącznie dane edukacyjne. Świece są wymyślone: nie stanowią historii rynku ani dowodu skuteczności reguły.
Reguła pozostaje stała
Po zamknięciu świecy porównaj kurs środkowy jej zamknięcia ze średnią tego kursu i dwóch poprzednich zamknięć. Powyżej SMA3: otwórz pozycję długą, jeśli jej nie ma. Poniżej SMA3: zamknij pozycję długą. Równość nie zmienia stanu. Każda pozycja ma 10 000 EUR; wyniki są w USD.
Decyzja może zostać wykonana dopiero na następnym otwarciu w wybranym oknie. Powtarzające się sygnały kupna nie zwiększają pozycji. Nie ma pozycji krótkich, stopów, zleceń limit, finansowania overnight ani optymalizacji parametrów.
Świeca 36 wybranego okna (1–36) · 11:55
Uzgodnij wynik
- Zamknięte transakcje · P/L netto
- -3,70 USD
- Otwarta pozycja · wycena P/L po prowizji za wejście
- 16,25 USD
- Łączny P/L modelu
- 12,55 USD
Netto zamkniętych -3,70 USD + wycena netto otwartej 16,25 USD = razem 12,55 USD.
Zamknięte pozycje: 4. Wykonania do tego kroku: 9.
Otwarta pozycja długa jest wyceniana według ostatniego kursu środkowego zamknięcia pomniejszonego o połowę spreadu. Zapłacona prowizja za wejście jest odejmowana tylko raz. Wycena nie uwzględnia przyszłej prowizji ani poślizgu przy wyjściu.
Sygnał sprzedaży na świecy 36: nadal oczekuje. Pozycja pozostaje otwarta; nie naliczono prowizji za wyjście. W tym oknie nie ma następnego otwarcia, więc ostatni sygnał nie zostanie tutaj wykonany.
Gdzie uwzględniono koszty
- Zamknięty P/L z cen wykonania
- -0,90 USD
- Prowizje zamkniętych pozycji
- 2,80 USD
- Wycena otwartego P/L przed prowizją wejścia
- 16,60 USD
- Zapłacona prowizja za wejście w otwartą pozycję
- 0,35 USD
- Wszystkie zapłacone prowizje
- 3,15 USD
- Wpływ spreadu już zawarty w wykonaniach
- 5,40 USD
- Poślizg już zawarty w wykonaniach
- 1,80 USD
- Dodatkowa połowa spreadu w wycenie otwartej pozycji
- 0,60 USD
Spread i poślizg są już w cenach wykonania; nie odejmuj tych efektów ponownie. Prowizja jest oddzielnym obciążeniem. Wycena otwartej pozycji nie oznacza wykonanego wyjścia.
Wczesne i późne okno to oddzielne przykłady czasowe, a nie walidacja poza próbą ani test forward na przyszłych notowaniach. Wczesna otwarta pozycja nie jest ukrycie zamykana ani przenoszona do późnego okna. Nie sumuj ich P/L jako ciągłej historii rachunku.
Widoczne są tylko świece osiągnięte w odtwarzaniu. Linia ciągła łączy kursy środkowe zamknięcia, a przerywana pokazuje SMA3. Trójkąty w górę i w dół oznaczają hipotetyczne kupno i sprzedaż na otwarciu danej świecy. Oś pionowa pokazuje USD za EUR.
USD za EUR
Świeca pięciominutowa
- Kurs środkowy zamknięcia
- SMA3
- Kupno na otwarciu
- Sprzedaż na otwarciu
Sygnał → następne otwarcie → pozycja
Czytaj każdy wiersz w kolejności czasu: najpierw wykonanie poprzedniej decyzji na otwarciu, potem ocena bieżącego zamknięcia. Linia między świecami nie tworzy pośrednich cen ani wykonań.
| Świeca · czas przykładu | Na tym otwarciu | Kurs środkowy zamknięcia / SMA3 | Na tym zamknięciu | Po zamknięciu świecy | Łączny P/L modelu |
|---|---|---|---|---|---|
| 109:00 | Brak wykonania | 1,10000— | Mniej niż trzy zamknięcia: bez decyzji | Bez pozycji | 0,00 USD |
| 209:05 | Brak wykonania | 1,10020— | Mniej niż trzy zamknięcia: bez decyzji | Bez pozycji | 0,00 USD |
| 309:10 | Brak wykonania | 1,100401,10020 | Powyżej SMA3: kupno na następnym otwarciu | Bez pozycji | 0,00 USD |
| 409:15 | Kupno po 1,10058; sygnał świecy 3 | 1,100801,1004667 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 1,25 USD |
| 509:20 | Brak wykonania | 1,101201,10080 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 5,25 USD |
| 609:25 | Brak wykonania | 1,101601,10120 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 9,25 USD |
| 709:30 | Brak wykonania | 1,101801,1015333 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 11,25 USD |
| 809:35 | Brak wykonania | 1,101601,1016667 | Poniżej SMA3: sprzedaż na następnym otwarciu | Pozycja długa: 10 000 EUR | 9,25 USD |
| 909:40 | Sprzedaż po 1,10142; sygnał świecy 8 | 1,101301,1015667 | Poniżej SMA3: pozostań bez pozycji | Bez pozycji | 7,70 USD |
| 1009:45 | Brak wykonania | 1,101001,10130 | Poniżej SMA3: pozostań bez pozycji | Bez pozycji | 7,70 USD |
| 1109:50 | Brak wykonania | 1,100801,1010333 | Poniżej SMA3: pozostań bez pozycji | Bez pozycji | 7,70 USD |
| 1209:55 | Brak wykonania | 1,101001,1009333 | Powyżej SMA3: kupno na następnym otwarciu | Bez pozycji | 7,70 USD |
| 1310:00 | Kupno po 1,10118; sygnał świecy 12 | 1,101201,10100 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 6,95 USD |
| 1410:05 | Brak wykonania | 1,101001,1010667 | Poniżej SMA3: sprzedaż na następnym otwarciu | Pozycja długa: 10 000 EUR | 4,95 USD |
| 1510:10 | Sprzedaż po 1,10072; sygnał świecy 14 | 1,100701,1009667 | Poniżej SMA3: pozostań bez pozycji | Bez pozycji | 2,40 USD |
| 1610:15 | Brak wykonania | 1,100901,1008667 | Powyżej SMA3: kupno na następnym otwarciu | Bez pozycji | 2,40 USD |
| 1710:20 | Kupno po 1,10108; sygnał świecy 16 | 1,101301,1009667 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 3,65 USD |
| 1810:25 | Brak wykonania | 1,101601,1012667 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 6,65 USD |
| 1910:30 | Brak wykonania | 1,101801,1015667 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 8,65 USD |
| 2010:35 | Brak wykonania | 1,101401,10160 | Poniżej SMA3: sprzedaż na następnym otwarciu | Pozycja długa: 10 000 EUR | 4,65 USD |
| 2110:40 | Sprzedaż po 1,10122; sygnał świecy 20 | 1,101001,10140 | Poniżej SMA3: pozostań bez pozycji | Bez pozycji | 3,10 USD |
| 2210:45 | Brak wykonania | 1,101201,10120 | Równo SMA3: pozostań bez pozycji | Bez pozycji | 3,10 USD |
| 2310:50 | Brak wykonania | 1,100801,10100 | Poniżej SMA3: pozostań bez pozycji | Bez pozycji | 3,10 USD |
| 2410:55 | Brak wykonania | 1,100401,10080 | Poniżej SMA3: pozostań bez pozycji | Bez pozycji | 3,10 USD |
| 2511:00 | Brak wykonania | 1,100601,10060 | Równo SMA3: pozostań bez pozycji | Bez pozycji | 3,10 USD |
| 2611:05 | Brak wykonania | 1,100901,1006333 | Powyżej SMA3: kupno na następnym otwarciu | Bez pozycji | 3,10 USD |
| 2711:10 | Kupno po 1,10103; sygnał świecy 26 | 1,100601,10070 | Poniżej SMA3: sprzedaż na następnym otwarciu | Pozycja długa: 10 000 EUR | -2,15 USD |
| 2811:15 | Sprzedaż po 1,10042; sygnał świecy 27 | 1,100301,10060 | Poniżej SMA3: pozostań bez pozycji | Bez pozycji | -3,70 USD |
| 2911:20 | Brak wykonania | 1,100601,10050 | Powyżej SMA3: kupno na następnym otwarciu | Bez pozycji | -3,70 USD |
| 3011:25 | Kupno po 1,10078; sygnał świecy 29 | 1,101101,1006667 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | -1,45 USD |
| 3111:30 | Brak wykonania | 1,101501,1010667 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 2,55 USD |
| 3211:35 | Brak wykonania | 1,101901,10150 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 6,55 USD |
| 3311:40 | Brak wykonania | 1,102301,10190 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 10,55 USD |
| 3411:45 | Brak wykonania | 1,102701,10230 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 14,55 USD |
| 3511:50 | Brak wykonania | 1,103101,10270 | Powyżej SMA3: utrzymaj pozycję długą, bez nowego zlecenia | Pozycja długa: 10 000 EUR | 18,55 USD |
| 3611:55 | Brak wykonania | 1,102501,1027667 | Poniżej SMA3: sprzedaż na następnym otwarciu | Pozycja długa: 10 000 EUR | 12,55 USD |
Tabele przewijają się poziomo. W razie potrzeby ustaw fokus na obszarze tabeli i użyj strzałek.
Rejestr pozycji
Zamknięty wiersz zawiera obie zapłacone prowizje. Otwarty zawiera tylko prowizję wejścia i wycenę po Bid, a nie fikcyjną transakcję zamknięcia.
| Pozycja | Wykonanie wejścia | Wykonanie wyjścia / wycena | P/L według kursu środkowego, bez kosztów | P/L z wykonań / wyceny | Zapłacona prowizja | P/L netto zamknięty / wyceniony |
|---|---|---|---|---|---|---|
| 1Zamknięta | Świeca 4 · 1,10058 | Świeca 9 · 1,10142 | 10,00 USD | 8,40 USD | 0,70 USD | 7,70 USD |
| 2Zamknięta | Świeca 13 · 1,10118 | Świeca 15 · 1,10072 | -3,00 USD | -4,60 USD | 0,70 USD | -5,30 USD |
| 3Zamknięta | Świeca 17 · 1,10108 | Świeca 21 · 1,10122 | 3,00 USD | 1,40 USD | 0,70 USD | 0,70 USD |
| 4Zamknięta | Świeca 27 · 1,10103 | Świeca 28 · 1,10042 | -4,50 USD | -6,10 USD | 0,70 USD | -6,80 USD |
| 5Otwarta · tylko wycena | Świeca 30 · 1,10078 | Świeca 36 · 1,10244 | 18,00 USD | 16,60 USD | 0,35 USD | 16,25 USD |
CSV zawiera tylko aktualne, poprawne odtwarzanie do wybranej świecy. Stałe angielskie nazwy pól, kropka dziesiętna i pełna precyzja modelu pozwalają sprawdzić rachunek. Zaokrąglany jest widok, nie obliczenie.
Tabele przewijają się poziomo. W razie potrzeby ustaw fokus na obszarze tabeli i użyj strzałek.
Sprawdź fikcyjne dane OHLC
Wszystkie ceny poniżej to kursy środkowe, czyli średnie Bid i Ask. Maksima i minima służą kontroli danych; reguła od zamknięcia do następnego otwarcia nie wyznacza z nich fikcyjnych realizacji. Wcześniejsze wiersze przygotowujące SMA są oznaczone i nie tworzą transakcji.
| Świeca · czas przykładu | Otwarcie | Maksimum | Minimum | Zamknięcie |
|---|---|---|---|---|
| 1 · 09:00 | 1,09980 | 1,10010 | 1,09970 | 1,10000 |
| 2 · 09:05 | 1,10000 | 1,10035 | 1,09980 | 1,10020 |
| 3 · 09:10 | 1,10020 | 1,10060 | 1,10005 | 1,10040 |
| 4 · 09:15 | 1,10050 | 1,10090 | 1,10040 | 1,10080 |
| 5 · 09:20 | 1,10080 | 1,10135 | 1,10060 | 1,10120 |
| 6 · 09:25 | 1,10120 | 1,10180 | 1,10105 | 1,10160 |
| 7 · 09:30 | 1,10160 | 1,10190 | 1,10150 | 1,10180 |
| 8 · 09:35 | 1,10180 | 1,10195 | 1,10140 | 1,10160 |
| 9 · 09:40 | 1,10150 | 1,10170 | 1,10115 | 1,10130 |
| 10 · 09:45 | 1,10130 | 1,10140 | 1,10090 | 1,10100 |
| 11 · 09:50 | 1,10100 | 1,10115 | 1,10060 | 1,10080 |
| 12 · 09:55 | 1,10080 | 1,10120 | 1,10065 | 1,10100 |
| 13 · 10:00 | 1,10110 | 1,10130 | 1,10100 | 1,10120 |
| 14 · 10:05 | 1,10120 | 1,10135 | 1,10080 | 1,10100 |
| 15 · 10:10 | 1,10080 | 1,10100 | 1,10055 | 1,10070 |
| 16 · 10:15 | 1,10070 | 1,10100 | 1,10060 | 1,10090 |
| 17 · 10:20 | 1,10100 | 1,10145 | 1,10080 | 1,10130 |
| 18 · 10:25 | 1,10130 | 1,10180 | 1,10115 | 1,10160 |
| 19 · 10:30 | 1,10165 | 1,10190 | 1,10155 | 1,10180 |
| 20 · 10:35 | 1,10175 | 1,10190 | 1,10120 | 1,10140 |
| 21 · 10:40 | 1,10130 | 1,10150 | 1,10085 | 1,10100 |
| 22 · 10:45 | 1,10100 | 1,10130 | 1,10090 | 1,10120 |
| 23 · 10:50 | 1,10120 | 1,10135 | 1,10060 | 1,10080 |
| 24 · 10:55 | 1,10080 | 1,10100 | 1,10025 | 1,10040 |
| 25 · 11:00 | 1,10040 | 1,10070 | 1,10030 | 1,10060 |
| 26 · 11:05 | 1,10060 | 1,10105 | 1,10040 | 1,10090 |
| 27 · 11:10 | 1,10095 | 1,10115 | 1,10045 | 1,10060 |
| 28 · 11:15 | 1,10050 | 1,10060 | 1,10020 | 1,10030 |
| 29 · 11:20 | 1,10030 | 1,10075 | 1,10010 | 1,10060 |
| 30 · 11:25 | 1,10070 | 1,10130 | 1,10055 | 1,10110 |
| 31 · 11:30 | 1,10110 | 1,10160 | 1,10100 | 1,10150 |
| 32 · 11:35 | 1,10150 | 1,10205 | 1,10130 | 1,10190 |
| 33 · 11:40 | 1,10190 | 1,10250 | 1,10175 | 1,10230 |
| 34 · 11:45 | 1,10230 | 1,10280 | 1,10220 | 1,10270 |
| 35 · 11:50 | 1,10270 | 1,10325 | 1,10250 | 1,10310 |
| 36 · 11:55 | 1,10310 | 1,10330 | 1,10235 | 1,10250 |
Tabele przewijają się poziomo. W razie potrzeby ustaw fokus na obszarze tabeli i użyj strzałek.
Pobierz protokół badania
Edytowalna lista tekstowa pozwala opisać oddzielny eksperyment przed obejrzeniem wyników. Nie potwierdza testu ani nie zmienia fikcyjnego szeregu w dowód rynkowy.
Pobierz protokół · TXTGranice modelu
Stały wolumen, pełne wykonania, niezmienne założenia spreadu, poślizgu i prowizji; opóźnienie tylko do następnego otwarcia. Bez notowań na żywo, częściowych wykonań, dźwigni, przymusowego zamykania pozycji z powodu niewystarczającego depozytu, wpłat, wypłat ani zasad konkretnego brokera. To objaśnienie kolejności i rozliczenia, nie emulator brokera lub optymalizator strategii.
Ten komponent oblicza w bieżącej karcie, bez wysyłania wartości lub zapisywania ich w pamięci przeglądarki. Pliki powstają tylko po wybraniu pobierania. Dotyczy to laboratorium, nie innych części witryny.
Przesuwaj symulację o jedną świecę. Na jej otwarciu wykonywana jest dopuszczalna instrukcja zaplanowana po poprzednim zamknięciu, z wykorzystaniem ceny tego otwarcia i wybranych kosztów. Dopiero potem model obserwuje zamknięcie bieżącej świecy i oblicza nowy sygnał. Żadna transakcja nie może korzystać z zamknięcia, które jeszcze nie nastąpiło.
Na przykład sygnał kupna powstały po zamknięciu świecy 3 może doprowadzić do realizacji na otwarciu świecy 4. Nie może otrzymać ceny otwarcia świecy 3. Luka pomiędzy tymi świecami ma więc znaczenie. Dokumentacja strategii TradingView również oddziela utworzenie zlecenia od późniejszego tiku, na którym emulator brokera może je wykonać przy domyślnych ustawieniach czasowych.
Porównaj cały okres z pierwszą lub drugą połową. Każdy wybrany przedział zaczyna się bez pozycji. Wcześniejsze kursy zamknięcia mogą służyć do początkowego obliczenia średniej, ale nie przenoszą pozycji, wcześniej naliczonej opłaty ani zaplanowanego zlecenia. Są to osobne przebiegi edukacyjne: nie należy sumować ich wyników i przedstawiać jako jednego nieprzerwanego rachunku.
Na końcu wybranego przedziału nowy sygnał nie prowadzi do realizacji, jeżeli następne otwarcie wypada poza tym przedziałem. Istniejąca pozycja pozostaje widoczna i jest osobno wyceniana; model nie tworzy fikcyjnego wyjścia tylko po to, by każda transakcja wyglądała na zakończoną. Zmiana przedziału może zatem zmienić zarówno liczbę transakcji, jak i końcowy stan otwartej pozycji.
Dwie połowy nie są walidacją poza próbą. Obie należą do jednego małego, fikcyjnego przykładu, a zerowanie pozycji zmienia eksperyment.
Uwzględniaj koszty tylko raz, na spójnej podstawie
W tym modelu opartym na kursie środkowym kupno następuje po kursie środkowym otwarcia powiększonym o połowę spreadu i niekorzystny poślizg. Sprzedaż zamykająca pozycję odbywa się po kursie środkowym otwarcia pomniejszonym o połowę spreadu i niekorzystny poślizg. Prowizja jest osobną opłatą w USD za każdą realizację zlecenia dotyczącego stałej pozycji 10 000 EUR. W tym przykładzie EURUSD 1 pips to 0,0001 USD za EUR.
Przykład otwarcia i zamknięcia | Obliczenie |
|---|---|
Kurs środkowy przy wejściu / wyjściu | 1,10000 / 1,10200 |
Założenia | Spread 1,2 pipsa; niekorzystny poślizg 0,2 pipsa na realizację; prowizja 0,35 USD na realizację |
Ceny realizacji wejścia / wyjścia | 1,10008 / 1,10192 |
Wynik cenowy po spreadzie i poślizgu | 10 000 × (1,10192 − 1,10008) = 18,40 USD |
Wynik netto zamkniętej transakcji | 18,40 USD − 0,35 USD − 0,35 USD = 17,70 USD |
Przewiń w bok, aby porównać wszystkie kolumny ↔
Sam ruch kursu środkowego dałby 20,00 USD. Nie odejmuj ponownie spreadu i poślizgu od 18,40 USD: są już zawarte w cenach realizacji. Przy identycznym kursie środkowym na wejściu i wyjściu te założenia dają −2,30 USD. Zwiększenie spreadu o jeden pips obniża wynik całej transakcji o 1,00 USD, ponieważ każda strona uwzględnia połowę dodatkowego spreadu.
Jeżeli pozycja pozostaje otwarta, symulacja wycenia ją po ostatnim modelowanym Bid i uwzględnia zapłaconą już prowizję od wejścia. Nie nalicza przyszłej prowizji ani poślizgu przy wyjściu, zanim ono nastąpi. Wyświetlana suma to modelowany wynik P/L, a nie pełne obliczenie wartości rachunku.
Stałe koszty pozwalają wyodrębnić ich wpływ; nie są obietnicą odwzorowania rzeczywistych kwotowań. Rzeczywisty test może wymagać zmiennych spreadów, różnych prowizji i finansowania przy przejściu przez rollover. Ten przykład śróddzienny pomija swap za utrzymanie pozycji przez noc. Poradnik o poślizgu cenowym wyjaśnia różnicę pomiędzy ceną żądaną, dostępnym kwotowaniem a rzeczywistą realizacją.
Oddziel tworzenie strategii, próbę historyczną i obserwację nowych danych
Zdecyduj, które obserwacje historyczne mogą wpływać na tworzenie strategii, zanim obejrzysz okres oceny. Późniejszy okres może podważyć regułę wybraną wcześniej, ale tylko wtedy, gdy jego wyniki pozostają poza procesem wyboru. Wielokrotne przeglądanie wydzielonej próby i poprawianie strategii zamienia ten okres w materiał do jej tworzenia.
Etap | Cel | Czego nie dowodzi |
|---|---|---|
Tworzenie strategii | Budowa reguły i badanie założeń na dopuszczonych danych. | Że wybrana wersja sprawdzi się na innych danych. |
Wydzielona próba historyczna | Zastosowanie zamrożonej wersji do późniejszych, wcześniej niewykorzystanych obserwacji. | Rzeczywistych cen realizacji u brokera ani przyszłej rentowności. |
Obserwacja nowych danych | Śledzenie nowych cen napływających po ustaleniu reguł. | Że symulowane wykonania odpowiadają rzeczywistej realizacji zleceń. |
Przewiń w bok, aby porównać wszystkie kolumny ↔
Ustawienie Forward w MetaTrader 5 wykorzystuje późniejszą część wybranego okresu historycznego. Mimo nazwy nie jest to to samo co oczekiwanie na przyszłe dane rynkowe. W notatkach wyraźnie wskazuj zarówno nazwę ustawienia, jak i zastosowaną metodę badania.
Chronologia dotyczy również przygotowania wskaźników. Wcześniejsze obserwacje mogą dostarczyć historii potrzebnej do obliczenia wskaźnika na początku okresu oceny. Nie powinny wprowadzać do obliczeń przyszłego kursu zamknięcia ani niejawnie tworzyć pozycji, jeżeli eksperyment miał zaczynać się bez niej.
Jeśli wydzielona próba ujawni problem, udokumentuj go. Zmieniona strategia może zasługiwać na nowy eksperyment, ale poprzednia próba testowa jest już znana. Zmiana nazwy pliku lub wybór innej miary wyniku nie przywraca jej statusu testu na wcześniej nieznanych danych.
Zbadaj błędy, zanim zinterpretujesz zwroty
Korzystny wynik to powód do sprawdzenia rejestru, a nie zakończenia kontroli. Wybierz kilka wejść i wyjść, w tym trudny przypadek na granicy okresu, i odtwórz informacje dostępne przy każdej decyzji. Najwięcej może wyjaśnić sygnał bez realizacji albo nieatrakcyjna transakcja, którą uznaniowy przegląd by pominął.
- Zaglądanie w przyszłość, czyli lookahead: decyzja wykorzystuje późniejszy kurs zamknięcia, formację potwierdzoną dopiero w przyszłości lub wartość niedostępną w podanym momencie.
- Nadmierne dopasowanie, czyli overfitting: sprawdza się wiele ustawień, lecz zachowuje wyłącznie zwycięskie, bez dokumentowania całego poszukiwania.
- Błąd selekcji: zachowuje się korzystne daty, instrumenty lub transakcje, a niewygodne obserwacje znikają.
- Niedopasowany model realizacji: dane świecowe mają potwierdzać kolejność wykonań wewnątrz świecy, której nie zawierają.
- Błędy rozliczeń: powtarzające się sygnały dodają niezamierzone pozycje, koszty są naliczane dwukrotnie albo otwarta transakcja znika na granicy okresu.
Przykłady lookahead w TradingView pokazują, jak dostęp do przyszłych informacji może dawać niewiarygodnie dobre wyniki historyczne. Praktyczne pytanie brzmi: czy ten sam sygnał dałoby się zapisać, gdyby obserwacje napływały pojedynczo? Jeżeli późniejsze dane zmieniają wcześniejszą decyzję, sprawdź tę zależność przed zaufaniem raportowi wyników.
Zmieniaj założenia w zaplanowany sposób, a nie do chwili uzyskania akceptowalnego wyniku. Możesz na przykład porównać tę samą stałą regułę przy kilku jawnie podanych kosztach. Jeśli niewielka zmiana kosztów odwraca wynik, pokaż tę wrażliwość. Jest to informacja o eksperymencie, nie powód do ukrywania bardziej wymagającego scenariusza.
Zapisz test tak, aby można go było odtworzyć
Po wybraniu przedziału i kosztów pobierz protokół eksperymentu z symulacji. Zachowaj go razem z wyświetlonym scenariuszem i rejestrem transakcji. Oznaczenie danych jako fikcyjnych ma znaczenie: udostępnienie liczb bez tego kontekstu zmieniłoby ćwiczenie edukacyjne w mylące twierdzenie o wynikach.
We własnym badaniu protokół powinien pozwolić ci wrócić po miesiącu i zrozumieć, co faktycznie zostało przetestowane. Zrzut ekranu z końcowym zyskiem nie wystarcza, gdy zmieniły się dane, czas powstawania sygnałów lub zasady naliczania kosztów.
- Zapisz wersję reguły, pytanie badawcze i zmiany od poprzedniego przebiegu.
- Wskaż zbiór danych, rodzaj ceny, strefę czasową, przedział, braki i etapy przygotowania.
- Opisz moment powstawania sygnałów, założenia realizacji, wielkość pozycji, koszty oraz traktowanie pozycji otwartej na końcu.
- Oddziel daty tworzenia strategii od dat oceny i zapisz, czy wyniki oceny wpłynęły już na dokonane wybory.
- Zachowaj liczbę transakcji, rejestr realizacji, szczegóły otwartych pozycji i nieudane kontrole razem z podsumowaniem.
Szablon dziennika transakcji pomaga uporządkować pojedyncze obserwacje, a protokół opisuje eksperyment, z którego pochodzą. Zachowuj rozczarowujący przebieg równie starannie jak atrakcyjny; inaczej sama historia twoich badań stanie się wyselekcjonowaną próbą.
Interpretuj miary z uwzględnieniem kontekstu
Zacznij od liczebności: dostępnych obserwacji, zamkniętych transakcji, obciążonych opłatą realizacji i nadal otwartych pozycji. Procent bez mianownika może sprawić, że niewielka próba wyda się bardziej przekonująca. Sygnał oczekujący na końcu okresu nie jest zakończoną transakcją, a pozycja otwarta nie oznacza zrealizowanego zysku ani straty.
Następnie uzgodnij wyniki netto zamkniętych transakcji z wyceną otwartych pozycji i już zapłaconymi opłatami. Sprawdź, gdzie powstają straty i na ile wynik zależy od kilku transakcji. Symulacja nie obejmuje wpłaty początkowej, modelu depozytu zabezpieczającego ani wypłat, więc jej ścieżki P/L nie należy odczytywać jako salda rachunku u brokera.
Poradnik o profit factor, symulator krzywej kapitału i poradnik o wskaźniku Calmara wyjaśniają definicje i ograniczenia tych miar. Korzystny wskaźnik nie naprawia zaglądania w przyszłość ani nierealistycznej realizacji. Kilka godzin fikcyjnych obserwacji nie uzasadnia też przeliczania wyniku na roczną stopę zwrotu ani wniosków o długoterminowym obsunięciu.
Przydatny wniosek opisuje warunki: jaką regułę testowano, na jakich danych, przy jakich założeniach i co pozostaje niepewne. „Ta wersja traciła pieniądze po wzroście kosztów” jest jaśniejszym wynikiem badania niż bezpodstawna obietnica, że kolejna wersja będzie zyskowna.
Najczęściej zadawane pytania
Czy mogę ręcznie przetestować strategię forex?
Tak. Odsłaniaj obserwacje w porządku chronologicznym, stosuj zapisane reguły i rejestruj każdą kwalifikującą się transakcję oraz założenie. Unikaj przeglądania gotowego wykresu i wybierania tylko rozpoznawalnych układów. Test ręczny wymaga takich samych zasad kosztów i obsługi granic okresu jak test automatyczny.
Wybrać MetaTrader 5 czy TradingView?
Kieruj się regułą, danymi i sposobem realizacji, które chcesz zbadać. Przeczytaj ustawienia testera lub emulatora brokera i sprawdź pojedyncze wykonania zleceń. Różne ustawienia domyślne mogą dawać różne wyniki, choć żadna z platform nie dowodzi tym samym rentowności strategii.
Czy zawsze potrzebne są rzeczywiste tiki?
Wymagany poziom szczegółowości zależy od reguły. Strategia wrażliwa na zdarzenia wewnątrz świecy wymaga dowodów, których same świece mogą nie dostarczać. Dane tickowe dodają szczegółów, ale nadal trzeba sprawdzić kompletność kwotowań, strony kwotowania i założenia realizacji. Więcej wierszy nie usuwa ograniczeń modelu.
Ile transakcji zapewnia wiarygodność backtestu?
Nie ma uniwersalnej liczby, która potwierdza każdą strategię. Na interpretację wpływają częstotliwość, zależności między transakcjami, warunki rynkowe oraz liczba sprawdzonych wariantów. Podaj wielkość próby i jej ograniczenia. Mała fikcyjna symulacja na tej stronie celowo nie nadaje się do formułowania statystycznych twierdzeń o wynikach.
Dlaczego rzeczywiste wyniki mogą różnić się od backtestu?
Ceny, czas, spread, dostępna płynność, opłaty i obsługa zleceń mogą różnić się od modelu. Test nie zawiera też warunków rynkowych, które nie wystąpiły w jego danych. Wyniki historyczne pozostają dowodem zależnym od założeń; obserwację nowych danych i rzeczywistą realizację należy dokumentować oddzielnie.
Czy zyskowny backtest dowodzi przewagi?
Nie. Najpierw wyklucz przeciek informacji i błędy rozliczeń, a potem oceń sposób wyboru i testowania strategii. Wynik może być wewnętrznie spójny, a mimo to zależeć od krótkiego lub niereprezentatywnego okresu. Backtesting wspiera badanie; nie gwarantuje przyszłego rezultatu.
Źródła i dalsza lektura
- MetaTrader 5 — Strategy TestingSprawdzono
- MetaTrader 5 — Real and Generated TicksSprawdzono
- MQL5 — Testing Trading StrategiesSprawdzono
- TradingView — StrategiesSprawdzono