Moduł 1 z 2
Excel jako Laboratorium Tradingu
Zanim napiszesz pierwszą klasę w Pythonie, Twoim najlepszym przyjacielem jest Excel lub Google Sheets. Dlaczego? Bo w Excelu widzisz każdą transakcję, każdy R-multiple, każdą formułę. Nie chowasz się za biblioteką. Trading systemowy wymaga audytu, a audyt najłatwiej zrobić w...
- Autor
- Zordon Intelligence Sp. z o.o.
- Aktualizacja
- Czas czytania
- 7 min
- Źródła
- 2
Wstęp
Zanim napiszesz pierwszą klasę w Pythonie, Twoim najlepszym przyjacielem jest Excel lub Google Sheets. Dlaczego? Bo w Excelu widzisz każdą transakcję, każdy R-multiple, każdą formułę. Nie chowasz się za biblioteką. Trading systemowy wymaga audytu, a audyt najłatwiej zrobić w arkuszu.
W tej lekcji zamienisz eksport z TradingView w prawdziwe laboratorium: policzysz expectancy w R, Profit Factor, SQN, Max Drawdown, testy stabilności, Monte Carlo w Excelu. To jest most między Pine Script a Pythonem. Jeśli nie potrafisz policzyć systemu w Excelu, nie zrozumiesz co Python liczy pod spodem.
Struktura laboratorium - jeden arkusz to jedno źródło prawdy
Stwórz skoroszyt lab_system_v01.xlsx z 4 zakładkami:
| Zakładka | Co zawiera |
|---|---|
Trades_RAW | Eksport z TradingView / brokera: data, entry, exit, PnL $, prowizja |
Trades_R | Przeliczenie na R, czas trzymania, MFE/MAE jeśli masz |
Metrics | PF, EV, SQN, WinRate, Payoff, MaxDD, Z-Score |
MonteCarlo | 500 symulacji equity z reshuffle transakcji |
Formuły zawsze otwarte, nigdy na sztywno wpisane liczby.
Formuły bazowe w Trades_R:
R-multiple = PnL_netto / Ryzyko_początkowe
Gdzie Ryzyko_początkowe = Entry - SL w $ * wielkość pozycji. Jeśli nie masz SL z TV, użyj ATR*mult jako proxy.
PnL_netto = PnL_brutto - Prowizja - Poślizg_estymowany
Win = IF(R>0,1,0)
Metryki które musisz policzyć - wzory gotowe do kopiowania
Załóż że kolumna D to R-multiple, 2:1000 to zakres transakcji, $ to PnL netto.
Liczba transakcji:
N = COUNTA(D2:D1000)
WinRate:
=COUNTIF(D2:D1000,">0")/N
AvgWin_R:
=AVERAGEIF(D2:D1000,">0")
AvgLoss_R:
=ABS(AVERAGEIF(D2:D1000,"<0"))
Expectancy EV w R:
= (WinRate*AvgWin_R) - ((1-WinRate)*AvgLoss_R)
Profit Factor:
=SUMIF(D2:D1000,">0")/ABS(SUMIF(D2:D1000,"<0"))
Payoff Ratio:
=AvgWin_R / AvgLoss_R
SQN (Van Tharp):
= SQRT(N) * (AVERAGE(D2:D1000)/STDEV(D2:D1000))
Z-Score dla serii (czy wygrane łączą się w serie - wykrywa uzależnienie):
Potrzebujesz kolumny W streak. Wzór uproszczony w Excelu wymaga policzenia run. Lepiej w Pythonie, ale w Excelu możesz użyć:
= (2*WinCount*LossCount / N) -> oczekiwane runy i porównać z faktycznymi
| Metryka | Próg akceptacji dla swing H1/D1 |
|---|---|
| EV w R | >0.15R po kosztach |
| PF | >1.3 po kosztach x1.5, >1.15 po kosztach x2 |
| SQN | >1.8 (minimalnie), >2.5 dobrze |
| MaxDD w R | <15R dla konta 100R, <20% equity |
| N na OOS | >100 |
Max Drawdown i Time to Recovery - Excel nie kłamie
Większość platform liczy MaxDD źle (intraday vs close). Policz sam:
Krok 1: Equity Curve skumulowana
E2 = D2 (pierwsze R)
E3 = E2 + D3 itd = SUM(D$2:D3)
Krok 2: Running Peak
P2 = MAX(E$2:E2)
Krok 3: Drawdown
DD2 = E2 - P2 (ujemny lub 0)
Krok 4: MaxDD = MIN(DD:D)
Krok 5: Zlicz bary w DD > 5R - to czas bólu
Formuła MaxDD w Excelu:
Equity w kol E, Peak w F, DD w G
F2 = MAX(E$2:E2)
G2 = E2 - F2
MaxDD = MIN(G:G)
MaxDD_duration = COUNTIF(G:G,"<-5") - ocena czy wytrzymasz psychicznie
Jeśli Twój system ma MaxDD 25R i Ty ryzykujesz 1% na transakcję = 25% drawdown konta. Czy jesteś gotowy psychicznie? To pytanie z Excela, nie z teorii.
Monte Carlo w Excelu - 30 minut które ratuje konto
Najprostsze Monte Carlo: tasujesz kolejność transakcji 500 razy i patrzysz na rozkład końcowego equity i MaxDD. Uczy że ta sama EV może mieć 10 różnych equity curves.
Excel Monte Carlo (bez VBA):
1. W zakładce MonteCarlo masz kolumnę z losowym indeksem: =RANDBETWEEN(1,N) dla 500 wierszy = jedna symulacja
2. Pobierz R dla tego indeksu: =INDEX(Trades_R!D$2:D$1000, losowy_indeks)
3. Zsumuj equity, policz MaxDD dla tej symulacji jak wyżej
Powtórz 500 razy (wiersze to symulacje, kolumny to skumulowane equity po N transakcjach)
Lub użyj Data Table:
=TABLE(, ) z losowością - w Google Sheets użyj 500 wierszy i RANDBETWEEN
Lepiej: użyj prostego VBA lub zrób w Pythonie w lekcji 7, ale zrozumiesz logikę w Excelu.
| Wynik Monte Carlo 500 symulacji | Co oznacza |
|---|---|
| 5% najgorszych kończy na < -10R | 5% ryzyka ruiny przy aktualnym ryzyku - za duże |
| Median MaxDD = 12R, 95th percentile MaxDD = 22R | Przygotuj się na 22R DD, nie medianę |
| 80% symulacji kończy na plus po kosztach | System ma szansę, ale nie gwarancję |
Optymalizacja w Excelu - jak nie oszukać samego siebie
Użyj Solver tylko do 1-2 parametrów i tylko z OOS. Przykład: optymalizujesz ATR mult dla SL (1.0-3.0).
Krok:
IS = pierwsze 70% transakcji chronologicznie
OOS = ostatnie 30%
Optymalizuj EV w R na IS zmieniając ATR mult
Sprawdź EV na OOS - jeśli spada >40% -> overfit
Nigdy nie optymalizuj w Excelu więcej niż 2 parametrów jednocześnie. To prowadzi do surface fitting.
Kiedy plan mówi nie handluj
- Gdy nie masz arkusza
Trades_R: Handlujesz na equity curve z brokera która miesza PLN, USD i różne wielkości pozycji. To nie jest pomiar. - Gdy nie policzyłeś MaxDD w R i w czasie (dni/transakcje w drawdown): Nie wiesz na co się piszesz psychicznie.
- Gdy Monte Carlo pokazuje 20% szansy na -20R a Ty ryzykujesz 2% na trade: Masz 40% konta w ryzyku w najgorszym scenariuszu. Stop.
- Gdy PF spada poniżej 1.2 po dodaniu 50% kosztów: System jest zbyt kruchy na real.
- Gdy N < 50 w próbie: Excel pokaże Ci SQN i PF ale to szum. Nie podejmuj decyzji handlowych na N<100.
Błędy które kosztują najwięcej
- Liczenie w $ zamiast w R. Konto rośnie z 10k na 12k ale ryzykowałeś raz 500 a raz 50. $ nieporównywalne. R tak.
- Uśrednianie strat - “jeszcze Excel to pociągnie”. Excel pozwala przesuwać SL w backteście. Rynek nie.
- Ignorowanie czasu w rynku. System który trzyma pozycję średnio 30 dni vs 30 minut ma inny koszt swap, inny MaxDD czasowy. Licz
Avg Bars Held. - Brak tagowania reżimu. Kolumna
Regime(trend / range / high vol) pozwala zobaczyć gdzie system zarabia a gdzie traci. Bez niej optymalizujesz średnią z dwóch różnych rynków. - Zapisywanie tylko zwycięzców. Eksportujesz tylko zamknięte zyskowne z brokera. Straty pomijasz bo “to był błąd”. To survivorship w Twoim dzienniku.
Ćwiczenie mierzalne
Cel: Zbudować laboratorium dla dowolnego systemu i przeprowadzić audyt.
Zadanie 2h:
- Weź eksport CSV z lekcji 2 (min 100 transakcji) lub wygeneruj losowy plik z brokera demo.
- Zbuduj 4 zakładki jak wyżej. Policz w
Metrics:
N, WinRate, EV, PF, SQN, MaxDD_R, MaxDD_duration, AvgTrade_R
Koszt x1 i x2 - dwa wiersze metryk
- Dodaj kolumnę
Regime: jeśli ATR 14 > SMA ATR 100 -> HighVol else LowVol. Policz EV osobno dla HighVol i LowVol.
=IF(ATR> SMA_ATR, "HighVol","LowVol")
EV_HV = AVERAGEIF(Regime,"HighVol",R_range)
-
Odpowiedz: Czy EV LowVol i HighVol różnią się o >50%? Jeśli tak, rozważ filtr reżimu.
-
Zrób mini Monte Carlo 100 symulacji reshuffle (RANDBETWEEN) i zapisz 95 percentyl MaxDD.
Jeśli 95% MaxDD > 2 * Twojej tolerancji - zmniejsz ryzyko o 50%.
Sprawdź się
- Dlaczego musisz liczyć w R-multiple zamiast w PLN/USD?
- Policz MaxDD: transakcje R = [+1, +2, -1, -3, -2, +4]. Jaka jest krzywa equity i jaki MaxDD?
- Czym jest Profit Factor i dlaczego PF 1.1 po kosztach to za mało dla realnego handlu?
- Jakie 4 zakładki powinien mieć Twój arkusz laboratoryjny i co każda zawiera?
- Masz PF 1.5 na IS i 0.9 na OOS. Co to mówi o Twoim systemie?
Częste pytania
Excel vs Google Sheets - co wybrać? Excel ma Solver, Power Query, VBA i szybszy dla 10k wierszy. Sheets ma lepsze współdzielenie i GOOGLEFINANCE. Dla laboratorium 100-5000 transakcji oba wystarczą. Wybierz ten który naprawdę otworzysz.
Czy muszę znać VBA? Nie na start. RANDBETWEEN + INDEX wystarczą na 100-500 symulacji Monte Carlo. VBA przyspiesza do 10k symulacji, ale to już temat Pythona w lekcji 5 i 7.
Skąd wziąć MFE/MAE w Excelu? Z TradingView nie wyeksportujesz bezpośrednio. W Pythonie policzysz łatwo: max profit w trakcie trwania transakcji vs close. W Excelu przybliż: High-Low bara z MFE jeśli masz dane 1min.
Ile systemów mogę trzymać w jednym pliku? Jeden plik = jeden system = jedna logika. Nie mieszaj 3 systemów w jednym arkuszu bo pomieszasz PF i MaxDD. Twórz wersje: v01, v02_filtrowany itd.
Czy mogę użyć Excela do forward testu live? Tak, przez DDE lub API brokera i Power Query. Ale to jest ułomny bot. Używaj Excela do audytu, nie do egzekucji. Egzekucja to Python / broker API z lekcji 6.
Reklama
Najważniejsze wnioski
- Zanim napiszesz pierwszą klasę w Pythonie, Twoim najlepszym przyjacielem jest Excel lub Google Sheets. Dlaczego? Bo w Excelu widzisz każdą transakcję, każdy R-multiple, każdą formułę. Nie chowasz się za biblioteką. Trading systemowy wymaga audytu, a audyt najłatwiej zrobić w...
Źródła i dokumenty
Materiał opieramy na dokumentach źródłowych. Wartości zmienne — opłaty, limity, wskaźniki regulacyjne — sprawdź u źródła przed podjęciem decyzji.
- TradingView — Pine Script reference
- Python for Finance — Yves Hilpisch
Zastrzeżenie
- KursTradera.pl to serwis edukacyjny o charakterze informacyjnym. Nie prowadzimy działalności maklerskiej, nie przyjmujemy i nie przekazujemy zleceń, nie zarządzamy portfelem, nie oferujemy instrumentów finansowych i nie świadczymy usług doradztwa inwestycyjnego w rozumieniu ustawy o obrocie instrumentami finansowymi. Materiały opisują mechanizmy rynkowe i proces decyzyjny — nie są instrukcją kupna lub sprzedaży jakiegokolwiek instrumentu.
- Żadna z publikowanych treści nie stanowi rekomendacji inwestycyjnej, informacji rekomendującej ani rekomendacji w rozumieniu Rozporządzenia Parlamentu Europejskiego i Rady (UE) nr 596/2014 (MAR) oraz aktów wykonawczych. Nie jest też ofertą nabycia lub zbycia instrumentów finansowych ani zaproszeniem do składania ofert. Wszelkie przykłady, wykresy, zrzuty ekranu i liczby mają charakter ilustracyjny i odnoszą się do sytuacji hipotetycznych lub historycznych.
- Inwestowanie i trading wiążą się z ryzykiem utraty części lub całości zainwestowanego kapitału. Wyniki osiągnięte w przeszłości — w tym wyniki przedstawione w materiałach edukacyjnych, backtestach i przykładach — nie gwarantują wyników przyszłych i nie są ich wiarygodnym wskaźnikiem. Żadna opisana metoda ani strategia nie eliminuje ryzyka. Decyzje inwestycyjne podejmujesz samodzielnie, na własną odpowiedzialność i po zapoznaniu się z aktualnymi dokumentami swojego brokera.
- Instrumenty z dźwignią (CFD, kontrakty terminowe, opcje, transakcje typu margin) mogą generować straty przewyższające wartość wpłaconych środków — możesz stracić więcej, niż zainwestowałeś, i zostać wezwanym do uzupełnienia depozytu (margin call). W Unii Europejskiej dźwignia dla klientów detalicznych handlujących CFD na głównych parach walutowych jest ograniczona decyzją ESMA (interwencja produktowa w sprawie CFD i opcji binarnych), ale ograniczenie dźwigni nie usuwa ryzyka. Odsetek rachunków detalicznych przynoszących straty różni się między brokerami i zmienia się w czasie — aktualną wartość odczytaj z ostrzeżenia ryzyka u swojego brokera i zapisz razem z datą.
- Backtesty, symulacje i przykładowe wyniki nie są rzeczywistymi wynikami transakcyjnymi. Powstają w warunkach odtwarzanych z danych historycznych, nie uwzględniają w pełni poślizgu cenowego, płynności, spreadu, prowizji, swapu, wpływu własnych zleceń na rynek ani czynnika psychologicznego — a wszystkie te elementy pogarszają wynik w praktyce. Wyniki historyczne nie chronią przed przyszłymi stratami.
Kto to pisze i jak to sprawdzamy
Materiały pisze i weryfikuje Redakcja Kurs Tradera — zasady opisuje o serwisie: każda liczba ma źródło, a braki pokazujemy jawnie. Błąd merytoryczny zgłosisz przez kontakt — poprawki opisujemy w treści.
Postęp zapisujemy wyłącznie w tej przeglądarce (localStorage) — nie ma konta ani kopii na serwerze. Wyczyszczenie danych witryny go usunie. Zarządzaj swoimi danymi