14 marca 2023 roku, po pojawieniu się nagłówków o upadku SVB, para EUR/USD spadła o 180 pipsów w ciągu 4 godzin.

Daniel Harrington
Starszy Analityk Tradingowy · MT5 specialist
☕ 9 min czytania
Czego się nauczysz:
- 1Iluzja backtestingu: Dlaczego Twój test jakości 90% nic nie znaczy
- 2Przeuczenie (overfitting): Prawdziwy powód, dla którego EA umierają 3 tygodnie po uruchomieniu na żywo
- 34 błędy wykonania, o których nikt nie mówi
- 4Problem brokera (większość traderów całkowicie to ignoruje)
- 5Jak naprawdę wygląda EA gotowe do wdrożenia
14 marca 2023 roku, po pojawieniu się nagłówków o upadku SVB, para EUR/USD spadła o 180 pipsów w ciągu 4 godzin. Obserwowałem, jak trzy różne EA na moim terminalu całkowicie się wykoleiły: jedno uśredniało pozycję w dół, jedno odwróciło się zbyt wcześnie, a jedno po prostu... zamarzło. Wszystkie trzy przeszły 2-letnie backtesty ze wskaźnikami Sharpe'a powyżej 1.8. Ten dzień kosztował mnie prawdziwe pieniądze i zmusił mnie do przemyślenia wszystkiego, co myślałem, że wiem o handlu automatycznym. Prawda jest taka, że większość EA MT5 nie zawodzi z powodu złej logiki. Zawodzą z powodu sposobu, w jaki zostały zbudowane, przetestowane i wdrożone.

92% wskaźnik wygranych w backtestach nic nie znaczy, gdy poślizg, rozszerzanie spreadu i przeuczenie uderzają w Twoje EA na rynkach na żywo. Trzy z moich EA zepsuły się podczas upadku SVB – wszystkie miały idealne backtesty.
Iluzja backtestingu: Dlaczego Twój test jakości 90% nic nie znaczy
Co tydzień widzę, jak ktoś publikuje backtest na forum tradingowym z płynną krzywą kapitału i ogłasza, że jego EA jest gotowe do handlu na żywo. Problem nie leży w wyniku. Problem tkwi w tym, co ten wynik faktycznie mierzy.
Tester Strategii MT5, nawet w trybie „Każdy tick na podstawie rzeczywistych ticków”, nie jest w stanie odtworzyć zachowania spreadu na żywo. Spready na EUR/USD podczas wspomnianej paniki SVB osiągnęły 8-12 pipsów u niektórych brokerów, podczas gdy EA zostało zbudowane i przetestowane przy założeniu stałego spreadu 1.2 pipsa. Ta jedna zmienna zamieniła transakcję z celem 60 pipsów w pozycję stratną, zanim cena w ogóle się ruszyła.
Istnieje specyficzne ustawienie w Testerze Strategii, które większość ludzi ignoruje: pole wyboru „Użyj daty” w połączeniu z procentem jakości modelowania. Jeśli testujesz z jakością modelowania 99%, ale ze stałymi spreadami, testujesz fantastyczny instrument. Prawdziwe rynki mają zmienne spready, rekwotowania (rzadziej na ECN, ale nadal obecne) i skoki opóźnień, których Twój lokalny backtest nigdy nie widzi.
Uruchomiłem to samo EA na tym samym 3-letnim zestawie danych z dwoma konfiguracjami:
- Stały spread: 1.5 pipsa, brak modelu poślizgu
- Zmienny spread z wykorzystaniem danych tickowych brokera + losowy poślizg 1-3 pipsy
Wersja ze stałym spreadem wykazała 34% rocznego zwrotu. Wersja ze zmiennym spreadem? 11%. To samo EA. Ten sam okres. Różnica polega na tym, czego faktycznie doświadczysz, gdy transakcja zostanie uruchomiona na żywo. Zawsze, zawsze używaj modelu wykonania „Losowe opóźnienia” w Testerze Strategii. Jest on ukryty w ustawieniach, ale jest najbliższy realizmowi, jaki platforma oferuje. Znajdziesz go w sekcji Wykonanie w właściwościach testera, ustaw go na 50-200ms, aby symulować rzeczywiste opóźnienie zamówienia.
To także miejsce, gdzie Twój kalkulator wielkości pozycji staje się kluczowy podczas testowania: jeśli nie uwzględniasz rzeczywistego spreadu w kalkulacji ryzyka na transakcję, Twoje wielkości pozycji będą błędne od samego początku.
Przeuczenie (overfitting): Prawdziwy powód, dla którego EA umierają 3 tygodnie po uruchomieniu na żywo
Oto stwierdzenie, które podtrzymam bez wahania: większość detalicznych EA jest przeuczona. Nieznacznie. Masowo.
Przeuczenie (overfitting) ma miejsce, gdy optymalizujesz parametry EA tak precyzyjnie pod kątem danych historycznych, że EA zapamiętało przeszłość zamiast się z niej uczyć. Silnik optymalizacji genetycznej MT5 jest niezwykle potężny i niezwykle niebezpieczny w niewłaściwych rękach. Widziałem traderów przeprowadzających 50 000 optymalizacji na 12-miesięcznym zestawie danych, wybierających zestaw parametrów z najwyższym współczynnikiem zysku i uznających to za koniec pracy. To nie jest rozwój strategii. To dopasowywanie krzywej z dodatkowymi krokami.
Prawdziwym testem na przeuczenie jest test kroczący (walk-forward test). Dzielisz swoje dane: optymalizujesz na pierwszych 70%, a następnie przeprowadzasz ślepy test kroczący na pozostałych 30%. Jeśli Twój współczynnik zysku spadnie z 2.4 do 0.8 w okresie poza próbą, EA jest przeuczone. Koniec kropka. Nie handluj nim.
Matematyka ma tu znaczenie. Twoja populacja optymalizacyjna powinna być znacząco mniejsza niż stopnie swobody Twojego zestawu danych. Przybliżona zasada, której używam: jeśli masz więcej niż jeden optymalizowalny parametr na 1 000 słupków danych, jesteś już na niebezpiecznym terytorium. EA z 8 wolnymi parametrami testowane na 2 000 słupków danych 1H nie jest strategią. To zapamiętany wzorzec.
Sam popełniłem ten błąd w 2019 roku z EA do średniej rewersji na GBP/USD. Zoptymalizowałem je pięknie na danych z lat 2016-2018. Zestaw parametrów zawierał 11 zmiennych. Uruchomiłem na żywo w styczniu 2019 roku i zanotowałem 22% obsunięcie kapitału w ciągu 6 tygodni, zanim je wyłączyłem. Lekcja pozostała. Teraz traktuję każde pogorszenie wyników testu kroczącego powyżej 40% jako twarde „nie”. Jeśli EA zarobiło 10 000 $ na próbce optymalizacyjnej, ale tylko 5 000 $ na porównywalnej wielkości próbce kroczącej, to jest to granicznie akceptowalne. Jeśli zarobiło 10 000 $ i straciło 3 000 $ w teście kroczącym, to jest to śmieć.
Aby głębiej przyjrzeć się, jak spread i jakość wykonania różnią się w zależności od instrumentu, warto przeczytać przewodnik po EUR/USD, zanim zdecydujesz się na jakąkolwiek główną parę jako główny rynek dla Twojego EA.

💡 Wskazówka Winstona
Logika kodu skupia całą uwagę.

Twoje EA działało idealnie przez 10 lat backtestów – a potem spotkało się z prawdziwymi spreadami, poślizgiem i rekwotowaniami. Witamy w handlu na żywo.
4 błędy wykonania, o których nikt nie mówi
Logika kodu skupia całą uwagę. Wykonanie nie dostaje żadnej. To jest na odwrót.
Oto cztery najczęstsze błędy na poziomie wykonania, które zdiagnozowałem w EA klientów:
-
Warunki wyścigu modyfikacji zleceń: EA próbuje zmodyfikować stop loss w tym samym ticku, w którym cena go aktywuje. W MQL5, jeśli wywołujesz
OrderModify()bez wcześniejszego sprawdzenia wartości zwracanych przezOrderSelect(), otrzymasz ciche błędy, zlecenie nie zostanie zmodyfikowane, żaden błąd nie zostanie zgłoszony do Twojego logu, a Twoje ryzyko jest teraz niekontrolowane. -
Brak uwzględnienia miejsc dziesiętnych brokera: Niektórzy brokerzy kwotują EUR/USD z 5 miejscami dziesiętnymi, inni z 4. Jeśli Twoja kalkulacja stop loss używa stałej wartości pipsa bez sprawdzania
_Digits, Twój SL zostanie umieszczony 10x za blisko lub za daleko. Widziałem, jak to wyczyściło konta. -
Ignorowanie
IsTradeAllowed(): Ta funkcja zwraca false podczas wydarzeń informacyjnych u niektórych brokerów, podczas zamknięcia rynku oraz gdy konto ma nierozstrzygnięte problemy z depozytem zabezpieczającym. Jeśli Twoje EA nie sprawdza tego przed każdą próbą złożenia zlecenia, będziesz miał wejścia, które cicho zawiodą, podczas gdy EA będzie myślało, że jest w transakcji. -
Logika wejścia oparta na tickach przy wolnych połączeniach: EA, które aktywują się przy każdym nowym ticku, działają dobrze na VPS z opóźnieniem 5ms. Na domowym połączeniu internetowym z opóźnieniem 80-150ms, tick, który aktywował Twoją logikę wejścia, może być o 3-4 ticki starszy, zanim Twoje zlecenie dotrze do brokera. Kupujesz po cenie, która już nie istnieje.
Rozwiązaniem dla punktu 4 jest przeniesienie logiki wejścia z OnTick() na OnTradeTransaction() tam, gdzie to możliwe, lub dodanie parametru maksymalnego akceptowalnego poślizgu i odrzucanie wypełnień poza tym zakresem. To nie jest efektowny kod. Ale to jest różnica między działającym EA a obciążeniem.
Aby składać zlecenia w sposób czysty, bez konieczności obsługi okien dialogowych, które wprowadzają własne opóźnienia, używam Drag Trader z Pulsar Terminal gdy półautomatycznie zarządzam pozycjami EA; przeciągasz bezpośrednio na wykresie, a SL/TP aktualizują się w czasie rzeczywistym, co jest naprawdę szybsze niż jakiekolwiek okno dialogowe, gdy jesteś w aktywnej pozycji.

Twój backtest zakłada idealne wypełnienia po dokładnych cenach ze stałymi spreadami. Rynki na żywo mają poślizg, rozszerzanie spreadu podczas wiadomości, rekwotowania i częściowe wypełnienia. Żadne EA nie jest odporne.
Problem brokera (większość traderów całkowicie to ignoruje)
Twoje EA nie handluje rynkiem. Handluje feedem rynkowym Twojego brokera. Ta różnica ma ogromne znaczenie.
Uruchomiłem dokładnie to samo EA, na tym samym VPS, z tymi samymi ustawieniami u trzech różnych brokerów jednocześnie przez 6-tygodniowy okres testowy w III kwartale 2022 roku. Wyniki nie były zbliżone:
- Broker A (ECN, średni spread EUR/USD 0.8 pipsa): +4.2% netto
- Broker B (STP, średni spread 1.8 pipsa): +1.1% netto
- Broker C (market maker, stały 2.0 pipsa): -2.3% netto
To samo EA. Ten sam rynek. Całkowicie różne wyniki, wyłącznie z powodu modelu wykonania i kosztów spreadu.
EA do skalpowania są najbardziej wrażliwe na to. EA celujące w 10 pipsów z 5-pipsowym stopem działa na stosunku R:R 2:1. Dodaj 2 pipsy spreadu, a cel 10 pipsów staje się efektywnym ryzykiem 7 pipsów, co jest bliżej 1.4:1. Matematyka całkowicie niszczy przewagę. Dlatego EA do skalpowania, które generują pieniądze w backtestach, tak konsekwentnie zawodzą na żywo – backtest używał założenia spreadu, którego żaden prawdziwy broker nie pobiera podczas sesji o dużej zmienności.
Przed wdrożeniem jakiegokolwiek EA na żywo, uruchom je przez minimum 3 tygodnie na koncie demo u rzeczywistego brokera, którego planujesz używać. Nie na demo innego brokera. Nie na symulacji firmy prop tradingowej z innym wykonaniem. Twój konkretny broker, Twój konkretny typ konta. Sprawdź logi wykonania w zakładce Dziennik MT5 po każdej transakcji. Jeśli zauważasz konsekwentny poślizg o 1+ pipsa przy wypełnieniach, przewaga Twojego EA prawdopodobnie już zniknęła.
Recenzje wyboru brokera, takie jak recenzja IC Markets, mogą dać Ci punkt odniesienia, jak w praktyce wygląda wykonanie ECN.

💡 Wskazówka Winstona
Pozwól, że opiszę, czego szukam, zanim uznam jakiekolwiek EA za gotowe do handlu prawdziwymi pieniędzmi.

Różni brokerzy, różne dane tickowe, różne spready. EA zoptymalizowane dla jednego brokera może całkowicie zawieść u innego.
Jak naprawdę wygląda EA gotowe do wdrożenia
Pozwól, że opiszę, czego szukam, zanim uznam jakiekolwiek EA za gotowe do handlu prawdziwymi pieniędzmi. To nie jest lista kontrolna, którą drukujesz i zapominasz. To standard, którego większość EA nie osiąga.
Po pierwsze, backtest musi używać zmiennych spreadów, losowych opóźnień wykonania i walidacji kroczącej poza próbą. Degradacja testu kroczącego powinna wynosić poniżej 40% na porównywalnych długościach danych. Jeśli backtestowałeś 3 lata, test kroczący powinien trwać 1 rok. Nie 3 miesiące.
Po drugie, EA potrzebuje w kodzie twardego wyłącznika obwodu obsunięcia kapitału. Coś takiego w MQL5:
double maxDrawdown = 0.10; // 10% max
double startBalance = AccountInfoDouble(ACCOUNT_BALANCE);
if((startBalance - AccountInfoDouble(ACCOUNT_EQUITY)) / startBalance >= maxDrawdown) {
// Close all positions and disable EA
ExpertRemove();
}
To jest podstawowe. Jestem konsekwentnie zszokowany, ile produkcyjnych EA tego nie ma.
Po trzecie, wskaźnik ATR powinien być częścią ustalania wielkości pozycji EA, a nie tylko jego logiki wejścia. Stała wielkość lota na rynku o zmiennej zmienności to przepis na niespójne ryzyko. ATR(14) na wykresie H1 daje w czasie rzeczywistym miarę tego, jak bardzo rynek się porusza. Twój stop loss i wielkość pozycji powinny się z tym skalować.
Po czwarte, EA musi być testowane w wielu reżimach rynkowych, a nie tylko w jednym. EA zoptymalizowane na rynku trendującym w latach 2020-2021 zostanie zniszczone w reżimie zmiennościowym, bocznym w latach 2022-2023. Użyj co najmniej jednego roku trendującego i jednego roku bocznego w swoim zestawie danych.
Po piąte, chcę zobaczyć symulację Monte Carlo przeprowadzoną na wynikach backtestu. MT5 nie robi tego natywnie, ale narzędzia takie jak StrategyQuant, a nawet podstawowa symulacja w Excelu, wykorzystująca Twoje wyniki transakcja po transakcji, mogą losować kolejność Twoich zysków i strat, aby pokazać realistyczne najgorsze obsunięcie kapitału. Jeśli Twoje symulowane najgorsze obsunięcie wynosi 35%, ale czujesz się komfortowo tylko z 15%, EA jest niewłaściwe dla Twojego konta, niezależnie od tego, jak dobrze wygląda średnia.
Większość EA zawodzi nie dlatego, że pomysł, który za nimi stał, był zły. Zawodzą, ponieważ proces walidacji był leniwy, kod wykonawczy nie był testowany w rzeczywistych warunkach, a środowisko brokera było zakładane, a nie mierzone. Napraw te trzy rzeczy, a Twoje wyniki na żywo będą znacznie bliższe temu, co obiecywały Twoje backtesty.
Zastrzeżenie: Ten artykuł ma wyłącznie charakter edukacyjny i nie stanowi porady inwestycyjnej. Handel na rynku Forex i CFD wiąże się ze znacznym ryzykiem utraty kapitału. Wyniki osiągnięte w przeszłości nie są gwarancją przyszłych wyników. Zawsze przeprowadzaj własne badania i rozważ swoją sytuację finansową przed rozpoczęciem handlu. Nigdy nie ryzykuj pieniędzy, na których utratę nie możesz sobie pozwolić.
Lekcja Prof. Winstona
:
- ✓Idealny backtest nic nie znaczy, jeśli EA jest przeuczone na danych historycznych
- ✓Poślizg, rozszerzanie spreadu i rekwotowania niszczą EA, które nigdy ich nie doświadczyły w backtestach
- ✓Dane tickowe brokera i szybkość wykonania bezpośrednio wpływają na wydajność EA – testuj u brokera na żywo
- ✓EA gotowe do wdrożenia radzi sobie z błędami elegancko: zarządza poślizgiem, ma limity maksymalnego obsunięcia kapitału i loguje wszystko

❓ Najczęściej zadawane pytania
Q1Ile danych powinienem użyć do backtestu EA MT5, zanim uznam je za ważne?
Minimum 3 lata danych tickowych obejmujących różne warunki rynkowe, co najmniej jeden silny okres trendu i jeden okres boczny/zakresowy. Dla EA z więcej niż 5 optymalizowalnymi parametrami, zwiększyłbym to do 5 lat. Kluczową liczbą nie są jednak lata, ale stosunek liczby parametrów do testowanych słupków. Więcej niż jeden wolny parametr na 1 000 słupków to już czerwona flaga dla przeuczenia. Dla EA do skalpowania na wykresach M5, 3 lata mogą dostarczyć wystarczającą liczbę słupków, ale musisz zweryfikować, czy jakość danych tickowych z historii Twojego brokera jest faktycznie kompletna; luki w danych tickowych sprawią, że Twoje wyniki będą wyglądać czyściej niż w rzeczywistości.
Q2Dlaczego moje EA działa dobrze na koncie demo, ale zawodzi na koncie rzeczywistym u tego samego brokera?
To jest częstsze, niż ludzie przyznają. Konta demo u większości brokerów używają nieco innego modelu wykonania niż konta rzeczywiste; konkretnie, wypełnienia na demo są często czystsze i szybsze z węższymi spreadami w okresach niskiej płynności. Niektórzy brokerzy kierują również zlecenia demo i rzeczywiste przez inną infrastrukturę. Sposobem na przetestowanie tego jest jednoczesne uruchomienie obu kont przez 2-4 tygodnie i porównanie cen wypełnienia transakcja po transakcji. Jeśli Twoje wypełnienia na koncie rzeczywistym są konsekwentnie o 0.5-1 pipsa gorsze niż na demo, to jest to różnica w modelu wykonania i jest to realne. Będzie to kumulować się przeciwko Tobie przez setki transakcji. Sprawdź również, czy Twoje konto rzeczywiste jest STP, a demo ECN; dzieje się to częściej, niż brokerzy lubią reklamować.
Q3Czy EA, które zawiodło na jednej parze walutowej, może działać na innej?
Czasami tak, ale musisz je całkowicie ponownie zweryfikować na nowym instrumencie, nie zakładaj, że parametry się przeniosą. Różne pary mają różne profile zmienności, zachowanie spreadu i wzorce płynności oparte na sesjach. EA zbudowane wokół zachowania EUR/USD podczas sesji londyńskiej może być całkowicie błędne dla GBP/JPY, które ma własne skoki zmienności podczas nakładania się sesji azjatyckiej/londyńskiej. Musiałbyś ponownie zoptymalizować (ostrożnie, bez przeuczenia) na danych nowej pary, przeprowadzić świeży test kroczący i idealnie przetestować je na demo przez 4-6 tygodni u rzeczywistego brokera. Podstawowa logika może się przenieść. Konkretne wartości parametrów prawie na pewno nie.
Q4Jaki jest minimalny okres testu kroczącego przed umieszczeniem EA na koncie rzeczywistym?
Używam 100 zakończonych transakcji jako minimum, a nie okresu czasu. Okresy czasu są mylące, ponieważ wolny rynek może dać Ci 40 transakcji w 3 miesiące, podczas gdy szybki rynek daje 200. Potrzebujesz statystycznie znaczącej próbki rzeczywistego procesu decyzyjnego Twojego EA. Jeśli Twoje EA wykonuje średnio 5 transakcji tygodniowo, to jest 20 tygodni handlu na demo, zanim rozważysz przejście na konto rzeczywiste, czyli około 5 miesięcy. Wiem, że to wydaje się długo. Ale to krócej niż odzyskiwanie po wyczyszczonym koncie. Inną rzeczą, którą sprawdzam, jest to, czy wyniki testu kroczącego mieszczą się w przedziale ufności Monte Carlo z backtestu. Jeśli obsunięcie kapitału w teście kroczącym przekracza 95. percentyl Twojej symulacji Monte Carlo, coś zmieniło się na rynku i EA wymaga ponownej oceny przed uruchomieniem na żywo.
Jak przydatny był ten artykuł?
Kliknij gwiazdkę, aby ocenić
Komentarze
Bądź krok przed rynkiem
Otrzymuj cotygodniowe analizy rynku, strategie tradingowe i porady MT5. Bez spamu, wypisz się kiedy chcesz.

O autorze
Daniel Harrington
Starszy Analityk Tradingowy
Daniel Harrington jest starszym analitykiem tradingowym z tytułem MScF (Master of Science in Finance) specjalizującym się w ilościowym zarządzaniu aktywami i ryzykiem. Z ponad 12-letnim doświadczeniem na rynkach forex i instrumentów pochodnych, zajmuje się optymalizacją platformy MT5, algorytmicznymi strategiami tradingowymi oraz praktycznymi wskazówkami dla traderów detalicznych.
All these calculators are built into Pulsar Terminal with real-time data from your MT5 account. One-click position sizing, automatic risk management, and instant calculations.
Może Ci się też spodobać


