Naciśnij ESC, aby zamknąć

Momentum w Crypto: Strategia Z-Score i Pine Script

Klasyczny RSI to straszna tępota – bierze pod uwagę tylko stosunek średnich cen zamknięcia w górę i w dół z $N$ okresów. Zupełnie nie widzi tego, co najważniejsze: wolumenu likwidacji, imbalance'u w orderbooku (Order Book Imbalance) czy dynamiki zleceń wpadających na taśmę (Time & Sales).

Żeby wskaźnik momentum realnie pokazywał mechanikę rynku, musimy połączyć samą prędkość ceny z dynamicznym filtrem zmienności ($ATR$) oraz wolumenem. Do tego idealnie sprawdzi się zmodyfikowany Z-Score Momentum wrzucony razem z Chande Momentum Oscillator (CMO), dostosowanym typowo pod krypto (czyli z uwzględnieniem przemielonego wolumenu).

cmo
 

Gdzie S_u to suma wzrostów cen zamknięcia z danego okresu zważona wolumenem, a S_d to zważona wolumenem suma absolutnych strat. Takie podejście chroni oscylator przed permanentnym wiszeniem w strefie wykupienia, kiedy mocny ruch idzie na zamierającym wolumenie (czyli przy klasycznej dywergencji).

Dobór metryk: Szybkie porównanie oscylatorów momentum

Wskaźnik / MetrykaCo tak naprawdę mierzyGłówny ból dupy na kryptoModyfikacja pod Pro-trading
Klasyczny RSIRelatywną siłę zamykania świeczek.Całkowite zawieszanie się na poziomach 70+ / 30- podczas short squeeze'ów.Wymiana zwykłej średniej na VWMA (Volume Weighted).
Rate of Change (ROC)Czystą prędkość zmiany ceny (P_t - P_{t-n}).Strasznie szarpie; zbiera każdy losowy szum rynkowy i gapy.Wygładzenie tematu przez EMA.
Z-Score MomentumOdchylenie obecnego impulsu od średniej oczekiwanej.Wymaga ciągłego ruszania okna lookbacku.Dynamiczne okno podpięte bezpośrednio pod cykl zmienności.

Implementacja strategii: Pine Script v5

Ten skrypt wypluwa wolumenowo ważony impuls (Volume-Weighted Momentum Score). Polujemy na momenty wyczerpania trendu poprzez wyłapywanie ekstremalnych odczytów Z-Score i przecięcia linii sygnałowych. Optymalny interwał: 15m – 1h (pod typowy intraday scalping na perpach BTC/USDT lub ETH/USDT).

Pine Script

//@version=5
strategy("Volume-Weighted Momentum Z-Score Strategy", overlay=false, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// Parametry wejściowe
len = input.int(14, title="Momentum Period")
smooth = input.int(5, title="Signal Smoothing")
z_len = input.int(20, title="Z-Score Lookback")
upper_band = input.float(2.0, title="Overbought (Z-Score)")
lower_band = input.float(-2.0, title="Oversold (Z-Score)")
// Impuls ważony wolumenem
price_change = ta.change(close)
vol_momentum = price_change * volume
// Wygładzenie impulsu
smoothed_mom = ta.ema(vol_momentum, len)
// Z-Score dla wygładzonego momentum
mean_mom = ta.sma(smoothed_mom, z_len)
std_mom = ta.stdev(smoothed_mom, z_len)
z_score = std_mom != 0 ? (smoothed_mom - mean_mom) / std_mom : 0.0
// Linia sygnałowa
signal_line = ta.ema(z_score, smooth)
// Wykresy
plot(z_score, color=color.white, title="Z-Score Momentum", linewidth=2)
plot(signal_line, color=color.yellow, title="Signal Line")
hline(upper_band, "Upper Bound", color=color.red, linestyle=hline.style_dashed)
hline(lower_band, "Lower Bound", color=color.green, linestyle=hline.style_dashed)
hline(0, "Zero Line", color=color.gray)
// Triggery pod mean reversion na wyczerpaniu ruchu
long_condition = ta.crossover(z_score, lower_band) or (z_score < lower_band and ta.crossover(z_score, signal_line))
short_condition = ta.crossunder(z_score, upper_band) or (z_score > upper_band and ta.crossunder(z_score, signal_line))
if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)

Zarządzanie ryzykiem przy graniu pod momentum

Wchodzenie w pozycję z łapy (marketem) od razu po przecięciu linii sygnałowej to finansowe samobójstwo. Impuls może dostać drugie życie na kaskadzie likwidacji i po prostu cię rozjechać.

Rozstawiamy sztywne ramy pod zarządzanie kapitałem:

  • Punkt wejścia (Trigger): Odpalamy pozycję dopiero po zamknięciu świecy, która potwierdzi, że Z-Score wrócił do wnętrza konsoli [-2.0; 2.0]. To daje pewność, że najgorszy squeeze wyhamował.
  • Stop Loss (SL): Wiążemy go twardo z lokalnym ekstremum (high/low świecy, która zrobiła ten cały srogie przecięcie) plus zapas rzędu 0.5 x ATR (14). Jeśli stop wychodzi za szeroki, po prostu zmniejszamy size pozycji, zamiast podciągać stopa bliżej ceny.
  • Take Profit (TP): Ściągamy zyski partiami. Połowę (50% pozycji) zamykamy na linii zero (średnia matematyczna całego impulsu). Reszta leci na break-even (BE) i próbujemy dociągnąć ruch do przeciwnej bandy.
  • Stosunek Ryzyka do Zysku (R:R): Minimalny akceptowalny setup to 1:2.5. Wszystko poniżej w długim terminie matematycznie nie obroni winrate'u strategii grających pod odwrócenie trendu (mean-reversion).

Żaden oscylator nie wywróży przyszłości, jeśli ignoruje wolumeny ludzi, którym właśnie giełda zamyka pozycje na Margin Callu. Traktuj Z-Score momentum jako filtr kontekstu rynkowego: jeśli wskaźnik wypierdala poza krytyczne poziomy, jest już za późno na fomo i pakowanie się z trendem – czas szykować pozycje pod kontrę albo po prostu inkasować profit.

Piter Wacker

I am a trading specialist with expertise in market analysis, risk management, and investment strategies. I focus on identifying opportunities, executing trades with discipline, and delivering consistent results.

...

Dodaj opinię

Twój adres e-mail nie zostanie opublikowany. Obowiązkowe pola są oznaczone*