Myślenie algorytmiczne
9 min czytania
Jak myśleć jak algorytm — sprowadzanie decyzji do reguł, które można testować, mierzyć i powtarzać.
9 min czytania
Jak myśleć jak algorytm — sprowadzanie decyzji do reguł, które można testować, mierzyć i powtarzać.
Wymagane wcześniej: Zbuduj prostą strategię tradingową. Następnie: Budowanie planu transakcji.
Profesjonalni traderzy nie zgadują.
Podążają za systemami — regułami opartymi na logice, prawdopodobieństwie i powtarzalności. Nawet traderzy dyskrecjonalni radzą sobie znacznie lepiej, gdy myślą jak algo.
Celem nie jest zbudowanie robota. Celem jest uczynienie procesu decyzyjnego powtarzalnym, mierzalnym i skalowalnym.
W tej lekcji nauczysz się:
Nie chodzi o kodowanie.
Myślenie algorytmiczne oznacza przekształcanie pomysłów tradingowych w logikę warunkową:
„Jeśli wydarzy się X i Y i Z → wchodzę. Jeśli nie → czekam."
Usuwa wątpliwości. Usuwa szum. Buduje pewność i powtarzalność — ale tylko wtedy, gdy każdy predykat sprowadza się do liczb, które skrypt mógłby policzyć.
Jeśli BTC jest w byczej strukturze 1H (close > EMA(200, 1H) utrzymane przez 24 świece) I ostatni swing low (najniższy z ostatnich 20 świec, offset 1) zostaje przełamany śródsesyjnie I cena odzyskuje przełamany dołek z byczym engulfing close w ciągu 3 świec Wtedy wejdź long ze stopem poniżej tego zmiecionego dołka.
To nie jest ta sama lekcja co „long na byczym odzyskaniu". Każda klauzula ma liczbę.
Weź jeden setup, którym handlujesz. Rozłóż go na testowalne kroki, gdzie każdy predykat ma (a) serię danych, (b) wyrażenie matematyczne, (c) próg i (d) okno wstecz.
MSS = wyższy dołek zostaje naruszony w trendzie wzrostowym. Wersja dyskrecjonalna to „struktura się łamie"; wersja operacyjna jest poniżej. Zobacz Order Flow i DOM, aby poznać podstawową mikrostrukturę.
IF
- HTF bias = (close[1H] > EMA(200, 1H) for last 24 bars)
AND
- Swing low broken: low[i] < min(low[i-20:i-1]) within last 5 bars
AND
- Reclaim: next close > broken low within 3 bars
AND
- Engulfing: close > open AND close > high[i-1] AND open < low[i-1]
THEN
- Enter long at engulfing-bar close
- Stop below the broken low
- Target: 2R or previous swing high (whichever is closer)
To jest strategia jako proces. Nie przeczucie.
Uwaga: zapisanie „MSS" lub „BOS" w pseudokodzie nie czyni go algorytmicznym. Dopóki każdy predykat nie sprowadza się do liczb, które skrypt może policzyć, masz listę kontrolną, a nie algorytm.
Predykaty takie jak wsparcie się utrzymuje, struktura się łamie, delta się zmienia, płynność zostaje zabrana brzmią jak reguły, ale są ocenami wzorców. Aby uczynić je algorytmicznymi, nazwij:
Jeśli nie potrafisz wypełnić wszystkich czterech, nadal jesteś dyskrecjonalny — tylko z dodatkowymi krokami.
Filtry zacieśniają egzekucję i usuwają słabe transakcje. Dodają też stopnie swobody — a każdy stopień swobody, który dodasz, zawyża dopasowanie in-sample i twój drawdown na żywo.
Możliwe dodatkowe klauzule IF, każda z czteroczęściową regułą powyżej:
Możesz też zdefiniować reguły dla:
Każdy dodatkowy filtr obniża drawdown in-sample i zwykle zawyża drawdown na żywo. Trzy filtry z silnym indywidualnym uzasadnieniem biją siedem filtrów strojonych razem.
Gdy Twoja strategia jest zdefiniowana w czystych krokach If/Then, możesz przejść w dół drabiny formalizacji.
| Etap | Narzędzie | Wymagany kod | Uwagi |
|---|---|---|---|
| Sanity-check krzywej kapitału jednego symbolu | TradingView Pine v5 | Lekki | Brak realistycznych opłat, brak częściowych wypełnień |
| Badania wektorowe wielu symboli | vectorbt | Tak (Python) | Szybkie, brak realizmu zdarzeniowego |
| Zdarzeniowe, realistyczne pod kątem brokera | NautilusTrader | Tak (Python/Rust) | Backtest + live klasy produkcyjnej |
| Klasyczne zdarzeniowe | Backtrader | Tak (Python) | Dojrzałe, wolniejsze, duża społeczność |
| Hostowane w chmurze | QuantConnect | Tak (C#/Python) | Dane, opłaty, modele slippage w pakiecie |
(Referencja Pine: tradingview.com/pine-script-reference/v5.)
//@version=5
strategy('MSS Long', overlay=true)
htf_bull = request.security(syminfo.tickerid, '60',
close > ta.ema(close, 200))
swept_level = ta.lowest(low, 20)[1]
swept = low < swept_level and close > swept_level
engulf = close > open and close > high[1] and open < low[1]
if htf_bull and swept and engulf
strategy.entry('long', strategy.long)
sl = low[1]
strategy.exit('x', from_entry='long', stop=sl,
profit=close + (close - sl) * 2)
Ta sama reguła w pseudokodzie Pythona (styl data-frame):
df['htf_bull'] = (df['close_1h'] > df['ema200_1h']).rolling(24).min().astype(bool)
df['swept_lvl'] = df['low'].rolling(20).min().shift(1)
df['swept'] = (df['low'] < df['swept_lvl']) & (df['close'] > df['swept_lvl'])
df['engulf'] = (df['close'] > df['open']) & \
(df['close'] > df['high'].shift(1)) & \
(df['open'] < df['low'].shift(1))
entries = df['htf_bull'] & df['swept'] & df['engulf']
# stop = df['low'].shift(1); target = entry + 2 * (entry - stop)
Czego brakuje w obu fragmentach i co trzeba dodać przed wystawieniem kapitału na ryzyko:
We wszystkich tych przypadkach wyjdź poza Pine i przejdź do NautilusTrader, vectorbt lub Backtrader.
Bramki przed kapitałem na żywo:
System oparty na regułach traci pieniądze efektywniej niż trader dyskrecjonalny. Trzy pułapki do nazwania:
„Stroj powoli i testuj ponownie" to podręcznikowa pętla optymalizacji in-sample. Bez foldu out-of-sample lub okna walk-forward nie walidujesz edge'a — zapamiętujesz przeszłość.
Systematyzacja nie jest monotonicznie dobra. Człowiek nadal wygrywa, gdy:
Czyste systemy przykuwają cię do przeszłego rozkładu. Ludzie potrafią aktualizować się szybciej — kosztem konsystencji. Dojrzali traderzy jeżdżą na obu.
| Podejście | Konsystencja | Adaptacja do reżimu | Backtestowalne | Skala kapitału |
|---|---|---|---|---|
| Czysto dyskrecjonalne | Niska | Wysoka | Nie | Niska |
| Czysto systematyczne | Wysoka | Niska | Tak | Wysoka |
| Hybryda (reguły + budżet odstępstw) | Średnio-wysoka | Średnia | Częściowa | Wysoka |
Wiersz hybrydy to miejsce, w którym faktycznie żyje większość profesjonalnej dyskrecji: spisany zestaw reguł plus mała, zabudżetowana liczba odstępstw na miesiąc, dziennikowana, abyś mógł później oddzielić umiejętność od szczęścia.
Wielu traderów mówi: „Jestem traderem dyskrecjonalnym."
Ale jeśli za Twoją dyskrecją nie stoi logika, nie masz śladu audytowego.
Nietrenowana dyskrecja = niezmierzony osąd — nie odróżnisz, czy decyzja była umiejętnością, czy szczęściem. Myślenie algorytmiczne daje ci ślad audytowy.
Ten ślad audytowy jest całym powodem, by wykonać tę pracę, nawet jeśli nigdy nie zautomatyzujesz. Pozwala też śledzić i optymalizować setupy w czasie.
Gdy Twoja logika jest spisana:
Jeśli obchodzisz, odstępstwo liczy się tylko wtedy, gdy było zabudżetowane z wyprzedzeniem. Niespodziewane odstępstwa to nie dyskrecja — to tilt z opowieścią.
Myślenie algorytmiczne oznacza przekształcanie pomysłów tradingowych w logikę warunkową — „jeśli wydarzy się X i Y i Z, wchodzę; w przeciwnym razie czekam" — gdzie każdy predykat (X, Y, Z) sprowadza się do reguły liczbowej, którą skrypt mógłby policzyć.
Nie. Pseudokod i arkusz kalkulacyjny wystarczą, by uchwycić logikę reguł. Kodowanie (Pine, Python) staje się konieczne dopiero, gdy chcesz robić backtesty z opłatami, slippage i analizą walk-forward, albo gdy chcesz automatyzować.
Wybierz jeden setup. Dla każdej klauzuli nazwij serię danych, wyrażenie matematyczne, próg i okno wstecz. Jeśli klauzula odmawia zwinięcia się do tych czterech części, to nadal jest rozpoznawanie wzorców — oznacz ją jako dyskrecjonalną, zamiast ubierać ją w kod.
Trading systematyczny wykonuje spisany zestaw reguł identycznie za każdym razem, co daje wysoką konsystencję i backtestowalny zapis kosztem adaptacji do reżimu. Trading dyskrecjonalny używa ludzkiego osądu wzorców, który adaptuje się szybciej do nowych reżimów, ale nie produkuje śladu audytowego, chyba że jest jawnie dziennikowany.
Pod względem konsystencji — tak. Pod względem zwrotów — niekoniecznie. Czyste systemy są przykute do historycznego rozkładu, na którym zostały dopasowane; ludzie potrafią szybciej aktualizować się, gdy zmiany reżimu nie mają analogu in-sample. Większość profesjonalnych traderów prowadzi hybrydę z zabudżetowanym dopuszczeniem odstępstw.
Do wielosymbolowej, dokładnej pod względem opłat analizy walk-forward używaj vectorbt do badań wektorowych, NautilusTrader lub Backtrader dla realizmu zdarzeniowego, albo QuantConnect do hostowanych w chmurze backtestów z wbudowanymi danymi i modelami slippage.
Wybierz setup, który brałeś najczęściej w zeszłym miesiącu. Zapisz jego IF/THEN z każdym predykatem zoperacjonalizowanym do liczby — seria danych, matematyka, próg, okno wstecz. Jeśli predykat odmawia zwinięcia się do matematyki, znalazłeś tę część swojego edge'a, która nadal jest rozpoznawaniem wzorców. Oznacz ją i albo ją zdefiniuj, albo zaakceptuj, że pozostaje dyskrecjonalna.
Stamtąd naturalną następną lekcją jest Budowanie planu transakcji, która składa zestaw reguł w kompletny spisany playbook (ryzyko, psychologia, dowody na edge).