Czy wskaźnik „przemalowuje" (repaint)? Jak to sprawdzić

Ostatnio zweryfikowano: · Treść aktualna długoterminowo
Ostrzeżenie · YMYL Ten artykuł ma charakter wyłącznie edukacyjny i nie stanowi rekomendacji inwestycyjnej. Handel na rynku Forex wiąże się z wysokim ryzykiem utraty kapitału — według ESMA 74–89% rachunków detalicznych traci pieniądze.

Krzysztof przyniósł mi kiedyś zrzut ekranu wskaźnika strzałek, który kupił za sto pięćdziesiąt dolarów. Na wykresie z przeszłości wyglądał jak marzenie — zielona strzałka na każdym dołku, czerwona na każdym szczycie, dziewięć trafień na dziesięć. Włączyliśmy go razem na żywo na EUR/USD i po godzinie jedna ze strzałek, którą widział pięć minut wcześniej, po prostu zniknęła. To nie był błąd platformy. To było przemalowywanie — wskaźnik zmieniał swoją historię po fakcie. Poniżej tłumaczę, czym jest repaint, kiedy bywa uczciwy, a kiedy to chwyt sprzedawcy, i jak go wykryć, zanim stracisz pieniądze.

Czym właściwie jest przemalowywanie

Przemalowywanie, po angielsku repainting, to zjawisko, w którym wskaźnik zmienia swoje wcześniejsze wartości albo sygnały, gdy na wykres napływają nowe świece. Strzałka kupna, którą widziałeś dwie świece temu na poziomie 1,0850, po zamknięciu kolejnej świecy nagle pojawia się o pięć pipsów niżej — albo znika zupełnie, jakby nigdy jej nie było. Linia wskaźnika, która jeszcze wczoraj wskazywała wybicie, dziś rysuje się tak, że żadnego wybicia tam nie ma.

Skutek jest zawsze ten sam i zawsze kosztowny. Na danych historycznych narzędzie wygląda nieprawdopodobnie skutecznie, bo prezentuje wersję po korekcie — taką, jaka ułożyła się dopiero, gdy ruch był już znany. Na żywo handlujesz jednak lewą krawędzią tej samej historii, czyli wersją niepotwierdzoną, która dopiero się formuje. Dystans między tym, co pokazuje backtest „na oko", a tym, co realnie zobaczyłeś w momencie decyzji, bywa przepaścią. Dlatego sam ładny wykres z przeszłości nigdy nie jest dowodem skuteczności.

Skąd się bierze repaint

Źródła przemalowywania są trzy i warto je rozróżniać, bo nie każde jest naganne. Pierwsze to wskaźniki z natury rekalkulujące. ZigZag jest tu sztandarowym przykładem: rysuje linię między kolejnymi szczytami i dołkami, ale z definicji nie wie, że dany punkt jest dołkiem, dopóki rynek nie zawróci o ustalony procent. Ostatni segment dorysowuje się więc dopiero, gdy ruch się potwierdzi — i do tego momentu potrafi wędrować. To samo dotyczy kropek Parabolic SAR liczonych na bieżącej świecy. Mechanikę tego wskaźnika rozłożyłem osobno w tekście o działaniu Parabolic SAR.

Drugie źródło to błąd zwany look-ahead bias — wskaźnik korzysta z danych, które w danym momencie jeszcze nie istniały. Czasem to efekt przesunięcia serii w prawo, czasem celowego sięgania po cenę zamknięcia świecy, która na żywo dopiero się tworzy. Trzecie źródło jest najbardziej cyniczne: sprzedawane „magiczne" strzałki, reklamowane jako „non-repaint", które w rzeczywistości przeliczają się na każdej nowej świecy. To klasyczny chwyt marketingowy twórców systemów — idealny wykres w reklamie bierze się właśnie z przemalowywania, o którym kupujący nie wie.

Kiedy repaint jest uczciwy, a kiedy to chwyt

Granica nie przebiega między „wskaźnik przemalowuje" a „nie przemalowuje", tylko między uczciwością a ukrywaniem. ZigZag przemalowuje i jest całkowicie w porządku, o ile używasz go do tego, do czego służy — do porządkowania struktury rynku po fakcie, mierzenia fal czy nanoszenia zniesień na ruch, który już się zamknął. Problem pojawia się dopiero wtedy, gdy ktoś bierze narzędzie z natury rekalkulujące i buduje na nim sygnały wejścia w czasie rzeczywistym, udając, że ostatni segment jest pewny.

Drugi rodzaj nieuczciwości to milczenie sprzedawcy. Twórca, który pokazuje wykres z dziewięćdziesięcioprocentową skutecznością i nie wspomina ani słowem, że strzałki przesuwają się po zamknięciu świecy, sprzedaje iluzję. Uczciwy wskaźnik rekalkulujący zawsze ma w opisie informację, że ostatnia wartość jest tymczasowa do zamknięcia świecy. Jeśli takiej informacji nie ma, a wykres jest zbyt piękny, traktuj to jako czerwoną flagę. Ta sama zasada dotyczy płatnych powiadomień — pisałem o niej w analizie tego, czy warto kupować sygnały forex.

„Nadmierne dopasowanie strategii do danych historycznych prowadzi do fałszywych wniosków — system, który wygląda znakomicie na przeszłości, w realnym handlu zawodzi." — Robert Pardo, The Evaluation and Optimization of Trading Strategies, wyd. 2, Wiley, 2008.

Przykład hipotetyczny — magiczna strzałka

Załóżmy, że Marek testuje wskaźnik strzałek reklamowany jako „non-repaint, 90% skuteczności". Na wykresie z ostatnich trzech miesięcy liczy ręcznie sygnały i faktycznie dostaje dziewięć trafień na dziesięć — strzałki idealnie siedzą na dołkach i szczytach. Otwiera więc konto demo na żywo i przez dwa tygodnie obserwuje narzędzie świeca po świecy. Tym razem obraz jest inny: część strzałek pojawia się z opóźnieniem dopiero po wybiciu, a co czwarta znika po zamknięciu świecy, na której ją zobaczył. Realny odsetek użytecznych sygnałów spada do okolic połowy.

To jest cała różnica między backtestem „na oko" a forward-testem na danych płynących naprzód. Wykres historyczny pokazywał wersję po fakcie — taką, jaka ułożyła się, gdy ruch był już znany. Demo pokazało wersję, którą Marek naprawdę miał przed sobą w chwili decyzji. Liczby są zmyślone na potrzeby przykładu, ale schemat jest realny i powtarza się u dziesiątek osób, które piszą do mnie z tym samym rozczarowaniem.

Jak sprawdzić, czy wskaźnik przemalowuje

Najpewniejsza reguła brzmi: czytaj sygnał wyłącznie na zamkniętej świecy. Jeśli po zamknięciu świecy strzałka albo linia się przesuwa, znika lub dorysowuje wstecz na lepszym poziomie, masz przemalowywanie. Jeśli zostaje dokładnie tam, gdzie była, narzędzie jest uczciwe. Tę samą zasadę stosują programiści MQL5 — wartość zapisana do bufora wskaźnika nie powinna zmieniać się po zamknięciu świecy, a jedyną dopuszczalną zmianą jest aktualizacja bieżącej, wciąż formującej się świecy.

W praktyce masz trzy narzędzia. Pierwsze to odtwarzanie historii: funkcja „bar replay" w TradingView lub tester strategii w trybie wizualnym w MetaTrader 5 — przewijasz wykres świeca po świecy i patrzysz, czy sygnał stoi w miejscu. Drugie to porównanie zrzutów ekranu: zapisujesz widok teraz i wracasz do tego samego fragmentu za godzinę. Trzecie, rozstrzygające, to forward-test na koncie demo na żywo, który omawiam szerzej w przewodniku o backteście strategii krok po kroku oraz w tekście o analizie walk-forward. Uważaj też na narzędzia, które „zawsze" trafiają w ekstrema — w realnym rynku nie istnieje wskaźnik kupujący na każdym dołku bez ani jednego błędu.

Co zrobić jutro

  1. Włącz tryb odtwarzania historii dla każdego wskaźnika strzałek na wykresie. Otwórz „bar replay" w TradingView albo wizualny tester w MetaTrader 5, przewiń ostatnie pięćdziesiąt świec krok po kroku i zapisz, ile strzałek przesunęło się lub zniknęło po zamknięciu swojej świecy. To rozstrzyga sprawę w kwadrans i nie wymaga żadnego zakupu.
  2. Zrób test zrzutów ekranu na żywo. Zapisz teraz zrzut bieżącego fragmentu wykresu z naniesionym wskaźnikiem, podpisz go godziną i wróć do dokładnie tego samego miejsca po dwóch–trzech zamkniętych świecach. Jeśli sygnały leżą inaczej niż na pierwszym zrzucie, masz czarno na białym dowód przemalowywania.
  3. Przenieś każdy „obiecujący" wskaźnik na konto demo na minimum dwa tygodnie. Czytaj sygnały tylko po zamknięciu świecy i notuj realny odsetek trafień w arkuszu, zamiast ufać wykresowi z przeszłości. Jak ustawić takie środowisko, opisuje sekcja o demie i forward-testingu w kursie MyBank.pl.
  4. Rozdziel narzędzia analityczne od sygnałowych na stałe. ZigZag i kanały regresji zostaw do opisu struktury zakończonego ruchu, a decyzje wejścia opieraj wyłącznie na wskaźnikach, które przeszły test zamkniętej świecy. Zapisz tę zasadę w swoim planie handlowym, żeby nie mylić obu zastosowań pod presją.
Jarosław Wasiński
O autorze

Jarosław Wasiński

Redaktor naczelny MyBank.pl · Analityk finansowy i rynkowy

Niezależny analityk i praktyk z ponad 20-letnim doświadczeniem w sektorze finansowym. Twórca i redaktor naczelny portalu MyBank.pl, działającego od 2004 roku. Analiza fundamentalna rynków walutowych i makroekonomicznych od 2007 roku.

Źródła i bibliografia

  1. MetaQuotes — MQL5 Reference Custom Indicators · Oficjalna dokumentacja buforów wskaźnika, funkcji OnCalculate i parametru prev_calculated — wyjaśnia, dlaczego wartość już zapisana do bufora może być przeliczona ponownie na bieżącej świecy. www.mql5.com ↗
  2. MetaQuotes — MQL5 Reference Organizing Data Access (Timeseries and Indicators Access) · Dokumentacja dostępu do danych świecowych w MQL5 (CopyRates, Bars) — podstawa rozróżnienia między świecą zamkniętą a wciąż formującą się przy weryfikacji sygnału. www.mql5.com ↗
  3. MQL5 Community Forum Indicator: Repainting to non repainting (MQL5) · Wątek programistów MQL5 omawiający, dlaczego wskaźnik przemalowuje (przesunięcia w prawo, „patrzenie wstecz") i jak przerobić go na wersję ocenianą na zamkniętej świecy. www.mql5.com ↗
  4. CFA Institute Backtesting and Simulation (Refresher Reading) · Materiał programu CFA omawiający błędy w testowaniu strategii, w tym look-ahead bias (korzystanie z danych z przyszłości) i survivorship bias jako źródła zawyżonych wyników historycznych. www.cfainstitute.org ↗

Najczęstsze pytania

Czy każdy wskaźnik, który się przemalowuje, to oszustwo?

Nie. Część przemalowywania wynika z samej natury narzędzia i nie jest niczym nieuczciwym. ZigZag z definicji nie wie, gdzie jest dołek, dopóki rynek nie zawróci o ustaloną wartość, więc ostatni segment dorysowuje się z opóźnieniem. Parabolic SAR i kanały regresji liczone na bieżącej świecy też zmieniają wartość, dopóki świeca się nie zamknie. To uczciwe, jeśli rozumiesz mechanizm i nie traktujesz jeszcze niepotwierdzonego sygnału jak gotowego. Problem zaczyna się dopiero wtedy, gdy ktoś ukrywa repaint — pokazuje idealny wykres historyczny i sprzedaje go jako „non-repaint", przemilczając, że na żywo strzałki wyglądały inaczej.

Jak w pięć minut sprawdzić, czy wskaźnik przemalowuje?

Najszybciej w trybie odtwarzania historii. W TradingView użyj funkcji „bar replay", w MetaTrader 5 testera strategii w trybie wizualnym, i przewijaj wykres świeca po świecy. Zatrzymaj się, gdy pojawi się strzałka, zapisz świecę i jej cenę, po czym odtwórz kolejne dwie–trzy świece. Jeśli strzałka zostaje w tym samym miejscu po zamknięciu swojej świecy, wskaźnik nie przemalowuje. Jeśli przeskakuje, znika albo dorysowuje się wstecz na lepszym poziomie, masz repaint. Druga metoda to porównanie zrzutu ekranu sprzed godziny z aktualnym widokiem tego samego fragmentu wykresu.

Co to jest look-ahead bias i jak wiąże się z przemalowywaniem?

Look-ahead bias to korzystanie podczas testu z danych, które w danym momencie nie były jeszcze dostępne. Wskaźnik, który przemalowuje, jest częstym źródłem tego błędu: przeliczając historię, używa cen świec, które na żywo jeszcze się nie pojawiły, więc na wykresie z przeszłości „wie", co stanie się dalej. Efekt jest taki, że backtest pokazuje wyniki nieosiągalne w realnym handlu. CFA Institute wymienia look-ahead bias obok survivorship bias jako jeden z głównych powodów, dla których symulacje historyczne zawyżają skuteczność. Dlatego sam ładny wykres z przeszłości nigdy nie wystarcza — liczy się test na danych, które płyną naprzód.

Czy mogę używać ZigZaga, skoro się przemalowuje?

Tak, pod warunkiem że używasz go zgodnie z przeznaczeniem. ZigZag świetnie nadaje się do porządkowania struktury rynku po fakcie — do zaznaczania kolejnych szczytów i dołków, mierzenia fal czy nanoszenia zniesień Fibonacciego na ruchu, który już się zamknął. Nie nadaje się natomiast do generowania sygnałów wejścia w czasie rzeczywistym, bo jego ostatni segment wciąż może się przesunąć. Zasada jest prosta: narzędzie przemalowujące może służyć do analizy zakończonego ruchu, ale nie do podejmowania decyzji na świecy, która właśnie się formuje. Mylenie tych dwóch zastosowań to najczęstszy błąd początkujących.

Pogłębij temat · pełny przewodnik