Odczytaj wyniki backtestu
Sprawdzisz strategię transakcja po transakcji i porównasz wpływ kosztów.
Pierwsza strategia się wykonała. Teraz sprawdzisz, czy symulowane transakcje faktycznie wynikają z reguł i co oznaczają wyświetlane wyniki.
Dane demonstracyjne to sztuczny szereg cen. Wynik pozwala sprawdzić działanie programu, nie określa oczekiwanej stopy zwrotu rzeczywistego rynku.
Najpierw obejrzyj jedną transakcję
Uruchom crossover_strategy.py z długościami 5 i 20. Poczekaj na koniec i wybierz Trades pod wykresem. Zamknięty panel otworzysz strzałką po prawej.
Tabela podaje wejście i wyjście transakcji. Dla longa wejście jest kupnem, wyjście sprzedażą.
| Kolumna | Co pokazuje? |
|---|---|
Trade | Numer transakcji i identyfikator wejścia |
Entry time | Czas realizacji wejścia |
Entry price | Cenę realizacji wejścia |
Exit time | Czas realizacji wyjścia |
Exit price | Cenę realizacji wyjścia |
Qty | Ilość |
Profit | Wynik pieniężny zamkniętej transakcji |
Profit % | Wynik procentowy transakcji |

Kliknij transakcję i znajdź jej okres na wykresie. Sprawdź przecięcie przed wejściem i to, które wywołało zamknięcie.
Pierwotny program nie podawał commission_value ani slippage, więc przebieg bazowy nie uwzględnia kosztów, które zaraz dodamy. Najpierw w tej prostej wersji sprawdź kierunek, czas i ilość.
Policz prostą transakcję
Kupno jednostki po 100 i sprzedaż po 103 daje różnicę 3. Przy wartości punktu 1 i bez kosztów jest to także wynik pieniężny.
Ogólnie wynik cenowy longa:
(cena wyjścia − cena wejścia) × ilość × wartość punktuWartość punktu należy do metadanych rynku. Określa pieniężną wartość ruchu ceny o jednostkę przy jednej jednostce pozycji. W danych DEMO wynosi 1.
Prowizje zmniejszają wynik netto. Poślizg zmienia cenę realizacji, więc już jest ujęty w różnicy cen. Nie odejmuj go ponownie od zmodyfikowanych cen.
Widok Performance
Performance pokazuje kapitał całego przebiegu. Znajdziesz pola:
- Cumulative P&L: zmianę kapitału wobec początkowego;
- Max drawdown: największy spadek od wcześniejszego szczytu badanej krzywej;
- Final equity: kapitał na ostatniej przetworzonej świecy;
- Max run-up: największy wzrost od wcześniejszego dołka kapitału.

Equity może obejmować zmienną wartość otwartej pozycji. Ostatni kapitał nie musi więc równać się początkowemu plus zyski zamkniętych transakcji. Sprawdź też pozycję pozostawioną na końcu.
Oglądaj przebieg krzywej, nie tylko punkt końcowy. Ten sam wynik może wymagać innych obsunięć i długich okresów strat.
Widok Stats
Stats pokazuje szczegółową statystykę końcową. Total Trades pomaga sprawdzić liczbę zamkniętych transakcji, Net Profit ich łączny wynik netto.
Profit Factor to łączny zysk podzielony przez bezwzględną łączną stratę. Bez transakcji stratnych iloraz nie jest zwykłą skończoną liczbą do porównań.
Skuteczność określa, jaka część zamkniętych transakcji była zyskowna. Sama nie wyznacza łącznego zysku: kilka dużych strat może przeważyć wiele małych zysków.
Przy małej liczbie transakcji łatwo o mylące podsumowanie. Zawsze oceniaj ich liczbę obok wskaźników i sprawdzaj pojedyncze straty.
Koszty w Properties
Kołem Strategy properties w dolnym panelu otwórz ustawienia strategii i wybierz Properties. Możesz tam zmienić kapitał początkowy, ilość i koszty.
Dwa kolejne przebiegi są ćwiczeniem porównawczym. Koszty należą do przykładu; dla prawdziwego rynku ustawiasz je osobno.
- Sprawdź Initial capital 10000 oraz Order size 1 Contracts.
- W Commission ustaw 0,1 i jednostkę % of order value. Możesz wpisać
0.1. - Slippage ustaw na 2 ticki.
- Kliknij Save, uruchom Run Pyne code i poczekaj na zakończenie.

0,1 procent nie oznacza 10 procent: pole jest w jednostkach procentowych. Dla realizacji o wartości 100 daje 0,1 prowizji. Wejście i wyjście są realizacjami, każda może mieć koszt.
Tick to najmniejszy krok ceny rynku. W DEMO wynosi 0,01, więc dwa ticki to ruch o 0,02. Poślizg przesuwa cenę zlecenia rynkowego w niekorzystnym dla strategii kierunku.
Na innym rynku tick i wartość punktu mogą się różnić. Nie przenoś interpretacji kosztów DEMO automatycznie na inny instrument.
Ustawienia realizacji też są częścią eksperymentu
On bar close w Fill orders wpływa na czas realizacji zleceń rynkowych. Dla bazowej strategii pozostaw wyłączone, żeby zlecenie sygnału realizowało się na następnym otwarciu.
After order is filled może żądać przeliczenia po realizacji. Using bar magnifier może badać realizacje wewnątrz świecy dokładniejszymi danymi z niższego interwału. To inne warunki wykonania; podczas porównania z bazą pozostaw je wyłączone.
Nawet jedna zmiana ustawienia tworzy nowy wynik. Zmieniając naraz długość, ilość, koszt i model realizacji, nie ustalisz przyczyny różnicy.
Zachowaj opis porównania
Przycisk Open trades output CSV na pasku wykresu otwiera eksport transakcji. Open plot output CSV otwiera tabelę rysowanych wartości. Pliki znajdziesz też w Output projektu.
Przed ponownym uruchomieniem skopiuj potrzebny eksport pod inną nazwę. Nazwa wyniku nie identyfikuje wszystkich ustawień.
We własnych notatkach zapisz przynajmniej:
| Przebieg | Dane | Szybka/wolna długość | Ilość | Prowizja | Poślizg |
|---|---|---|---|---|---|
| Bazowy | DEMO | 5 / 20 | 1 jednostka | 0% | 0 ticków |
| Z kosztem | DEMO | 5 / 20 | 1 jednostka | 0,1% | 2 ticki |
Dopisz rzeczywiście otrzymane wyniki. Wypełnij tabelę w swoich notatkach na podstawie uruchomień.
Spróbuj samodzielnie
Porównaj tę samą transakcję bez kosztów i z kosztami. Sprawdź wejście, wyjście i zysk. Co się zmieniło, a co w regule sygnału pozostało identyczne?
Rozwiązanie zadania
Średnie i przecięcia nie wynikają z prowizji ani poślizgu, więc sygnały bazowe się nie zmieniają. Ceny wejścia i zamknięcia mogą być mniej korzystne z powodu poślizgu. Prowizja dalej zmniejsza wynik netto.
Bezpośrednie porównanie wymaga tych samych wejść, ilości, danych i trybu realizacji oraz możliwości wykonania zleceń w obu przypadkach.
Wybór innych danych
Po demonstracji możesz pobrać własne dane rynkowe w PyneIDE. Mogą mieć inne ceny, tick, limity ilości i transakcje. Najpierw obejrzyj dane, dopiero potem porównuj wyniki.
- W lewym widoku Pyne najedź na nagłówek Data. Kliknij Download Data…, ikonę chmury ze strzałką w dół. Otworzy się Symbol Browser. To samo znajdziesz pod prawym przyciskiem nagłówka Data.
- Wybierz Provider. Ilustracja używa
ccxt; wtedy w Broker wybierasz konkretne źródło. - W filtrze wpisz nazwę rynku. Na ilustracji wybieramy spot
BTC/USDze źródłacoinbase. Zwracaj uwagę na pełny symbol: podobne początki mogą oznaczać różne rynki. - Timeframe ustaw na
1D, From na 365 days back. now w To oznacza dane do chwili pobrania. - Kliknij Download i poczekaj na koniec.

W informacjach po prawej mintick to krok ceny, pointvalue wartość punktu, mincontract najmniejsza ilość. Sprawdź je dla własnych danych. Dostępność i wymagane uprawnienia zależą od dostawcy; pobranie tych danych nie oznacza korzystania z rachunku transakcyjnego.
Dane trafiają do Data projektu. Kliknięcie nazwy rynku na górze wykresu strategii otwiera wybór danych, gdzie możesz wskazać nowe. Wykres się przeliczy; nadal sprawdź wejścia i właściwości strategii.
Zakres czasu nie gwarantuje liczby świec: zależy od dostępnej historii, dni handlu i braków. Ponowne pobranie może zmienić serię, więc do porównań zachowaj plik danych i jego metadane.
Interpretacja przebiegu
Backtest liczy na podstawie reguły, danych i modelu realizacji. Pomaga sprawdzić zgodność kodu z opisem i zachowanie w modelu. Przyszłych danych w wyniku nie ma.
Wielokrotna zmiana parametrów na tych samych danych może znaleźć regułę dopasowaną do nich. Osobny okres nieużywany do strojenia odpowiada na inne pytanie. Dlatego projekt końcowy osobno sprawdza poprawność programu i porównanie ustawień.