El RSI de toda la vida es demasiado básico: solo mide la proporción promedio de los cierres al alza y a la baja durante $N$ períodos. El problema es que opera completamente a ciegas respecto al volumen de liquidaciones, el Order Book Imbalance (el desequilibrio de las órdenes límite) y la velocidad con la que entran las órdenes en el Time & Sales (la cinta).
Para que un indicador de momentum capte de verdad la física del mercado, tenemos que fusionar la velocidad del precio con un filtro dinámico de volatilidad ($ATR$) y el volumen. En lugar de lo clásico, vamos a meter un Z-Score Momentum modificado junto con el Chande Momentum Oscillator (CMO), pero adaptado al ecosistema cripto (es decir, ponderado por el volumen negociado).

Donde S_u es la suma de los incrementos en los precios de cierre ponderada por el volumen del período, y S_d es la suma de las pérdidas absolutas, también con el peso del volumen. Con este enfoque evitamos que el oscilador se quede clavado en overbought (sobrecompra) permanente si el movimiento sube con volúmenes agonizantes (la típica divergencia).
Elección de Métricas: Análisis Comparativo de Osciladores de Momentum
| Indicador / Métrica | Lo que mide realmente | Su gran contra en cripto | Modificación para Pro-Trading |
|---|---|---|---|
| RSI Clásico | La fuerza relativa del cierre de las velas. | Se queda "pegado" en las zonas de 70+ / 30- durante los short squeezes. | Cambiar la media simple por una VWMA (Volume Weighted). |
| Rate of Change (ROC) | La velocidad pura del cambio de precio (P_t - P_{t-n}). | Es puro ruido; ultrasensible a fluctuaciones absurdas y gaps de mercado. | Suavizar la señal mediante una EMA. |
| Z-Score Momentum | La desviación del momentum actual frente a su media matemática esperada. | Requiere estar recalibrando la ventana de lookback constantemente. | Ventana dinámica vinculada directamente al ciclo de volatilidad. |
Implementación de la Estrategia: Pine Script v5
Este script calcula el score de momentum ponderado por volumen (Volume-Weighted Momentum Score). Buscamos puntos de agotamiento de la tendencia filtrando valores extremos del Z-Score y cruces de líneas de señal. Timeframe principal para operarlo: 15m a 1h (diseñado para scalping intradía en futuros de contratos perpetuos de BTC/USDT o 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)
// Configuración de parámetros
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)")
// Cálculo del momentum con volumen
price_change = ta.change(close)
vol_momentum = price_change * volume
// Suavizado del momentum
smoothed_mom = ta.ema(vol_momentum, len)
// Z-Score del momentum suavizado
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
// Línea de señal
signal_line = ta.ema(z_score, smooth)
// Plots e interfaz visual
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)
// Gatilleros contratendencia por agotamiento
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)Gestión de Riesgo al Operar Momentum
Entrar a mercado (market order) justo cuando la línea de señal se cruza es un suicidio financiero. El momentum puede reactivarse con fuerza si se desata una cascada de liquidaciones en cadena.
Para evitarlo, estructuramos un plan estricto de gestión de capital:
- Punto de Entrada (Trigger): No se toca el gatillo hasta que cierre la vela y confirme que el Z-Score ha regresado al rango de [-2.0; 2.0]. Esto nos asegura que el squeeze ya perdió gasolina.
- Stop Loss (SL): Se coloca estrictamente en el extremo local (el High/Low de la vela del squeeze) más un filtro de 0.5 x ATR (14). Si el stop queda demasiado ancho, se reduce el size de la posición, pero el stop no se mueve más cerca ni un pixel.
- Take Profit (TP): Tomamos ganancias por partes. Cerramos el 50% de la posición al tocar la línea cero (la media matemática del momentum). El resto se pasa a break-even (BE) y lo dejamos correr hasta el extremo opuesto del rango.
- Relación Riesgo/Beneficio (R:R): Objetivo mínimo de 1:2.5. Cualquier operación por debajo de esto matemáticamente no compensa el winrate que tienen los modelos contratendencia a largo plazo.
Ningún oscilador va a adivinar el futuro si ignora el volumen de aquellos a quienes les están cerrando las posiciones a la fuerza por Margin Call en este preciso instante. Usa el Z-Score de momentum como un filtro de contexto: si el indicador revienta los niveles críticos, ya es tardísimo para meterse a favor de la tendencia por puro FOMO; toca ir preparando las órdenes de reversión o asegurar las ganancias acumuladas.