Los soportes y resistencias a menudo se conciben como líneas horizontales: niveles de precio estáticos trazados desde máximos y mínimos anteriores. Pero en tendencias dinámicas, estas estructuras se forman dentro del movimiento. Estas zonas internas, construidas a partir de reacciones de pivote, son a menudo donde el precio se consolida, rechaza o continúa.
Lo que falta en la mayoría de los indicadores es una forma de representar esta estructura en movimiento.
Eso es lo que este script resuelve.
En esta publicación, construiremos un Oscilador de Percentil de Pivote en Pine Script de TradingView: una herramienta que rastrea la posición del precio entre pivotes estructurales recientes. No mide el momentum ni el volumen. Simplemente mapea dónde se sitúa el precio en relación con las zonas recientes de soporte y resistencia que se formaron durante la tendencia.
La Idea Central: Estructura a partir de Pivotes
En lugar de anclar el soporte y la resistencia a niveles estáticos, los definimos dinámicamente rastreando los pivotes altos y pivotes bajos recientes. Una vez identificados, comparamos el precio actual con este rango dinámico para entender su posición relativa.
El resultado es un oscilador escalado entre:
- 0: El precio está cerca del pivote bajo reciente (contexto de soporte)
- 100: El precio está cerca del pivote alto reciente (contexto de resistencia)
- 50: El precio está a mitad de estructura (zona neutral)
Esta perspectiva es útil al evaluar retrocesos, consolidaciones, o identificar si el precio se mantiene por encima de la estructura reciente o se desliza por debajo de ella.
Construyendo el Oscilador en Pine Script
Paso 1: Identificar Pivotes Altos y Bajos
Usaremos las funciones integradas de Pinescript ta.pivothigh() y ta.pivotlow() para detectar puntos de giro estructurales.
//@version=6
indicator("Oscilador de Percentil de Pivote", overlay=false)
pivotLookback = input.int(5, "Pivot Lookback")
pivotHigh = ta.pivothigh(high, pivotLookback, pivotLookback) pivotLow = ta.pivotlow(low, pivotLookback, pivotLookback)
Estas funciones encuentran máximos y mínimos locales verificando si un alto o bajo es el máximo/mínimo sobre una ventana de barras.
Paso 2: Almacenar los Pivotes Confirmados Más Recientes
Almacenaremos los valores más recientes usando variables persistentes.
var float recentHigh = na
var float recentLow = na
if not na(pivotHigh)
recentHigh := pivotHigh
if not na(pivotLow)
recentLow := pivotLow
Esta lógica asegura que siempre mantengamos los valores de pivote más recientes, incluso mientras el precio continúa actualizándose.
Paso 3: Normalizar el Precio Dentro de Ese Rango de Pivote
Calculamos dónde está el precio actual entre el máximo y mínimo recientes:
range = recentHigh - recentLow percentile = range > 0 ? (close - recentLow) / range * 100 : na
Esto nos da un valor normalizado de 0 a 100: una lectura de percentil de dónde se sitúa el precio dentro de la estructura definida por los últimos puntos de swing.
Paso 4: Graficar el Oscilador
plot(percentile, title="Pivot Percentile", color=color.blue, linewidth=2) hline(80, "Upper Range", color=color.red) hline(20, "Lower Range", color=color.green) hline(50, "Midpoint", color=color.gray)
El oscilador ahora refleja visualmente si el precio está presionando contra los máximos recientes, manteniendo la estructura cerca de los mínimos, o flotando en el medio.
Mejoras
Esta herramienta es útil en su forma básica, pero puede hacerse más accionable con algunas mejoras simples.
1. Resaltado de Fondo para el Contexto de Zona
Resaltar zonas mejora la claridad, especialmente durante las fases de tendencia.
bgcolor(percentile >= 80 ? color.new(color.red, 90) :
percentile <= 20 ? color.new(color.green, 90) : na)
Esto resalta el fondo del gráfico cuando el precio está en extremos estructurales: útil para identificar posibles zonas de reacción dentro de las tendencias.
2. Detección de Reentrada a la Estructura de Entrada/Salida
Podemos resaltar cuando el precio regresa a la zona de estructura después de haber estado fuera.
aboveRange = percentile > 100 belowRange = percentile < 0 reenterStructure = (aboveRange[1] and percentile <= 100) or (belowRange[1] and percentile >= 0) plotshape(reenterStructure, location=location.belowbar, style=shape.triangleup, color=color.orange, title="Reenter Structure")
Esto puede ser útil para señalar la estabilización del precio después de un comportamiento de ruptura o quiebre.
3. Filtro con Alineación de Tendencia
Este oscilador funciona bien cuando se combina con un filtro de tendencia simple. Aquí hay un ejemplo usando EMAs:
emaFast = ta.ema(close, 8) emaSlow = ta.ema(close, 21) trendUp = emaFast > emaSlow trendDown = emaFast < emaSlow plot(trendUp ? percentile : na, title="Uptrend Only", color=color.green) plot(trendDown ? percentile : na, title="Downtrend Only", color=color.red)
Esto te permite aislar las lecturas del oscilador durante fases direccionales definidas.
4. Mostrar el Rango que se Está Midiendo
Si quieres visualizar los niveles actuales de estructura alta y baja en tu gráfico de precios:
plot(recentHigh, title="Recent Pivot High", color=color.red, linewidth=1, style=plot.style_linebr) plot(recentLow, title="Recent Pivot Low", color=color.green, linewidth=1, style=plot.style_linebr)
Esto ayuda a contextualizar el valor del oscilador con los niveles de precio estructurales reales en el gráfico.
Una vez que implementamos este código tenemos el siguiente resultado en forma de un indicador tipo oscilador debajo del gráfico:

Conclusión
La mayoría de los indicadores miden el momentum o la dirección. Este mide la ubicación — específicamente, dónde está operando el precio dentro de su rango estructural más reciente.
No es una herramienta de señales. Es una herramienta de contexto.
Ya sea que estés construyendo un sistema de seguimiento de tendencia, un marco de swing, o una estrategia de retroceso basada en estructura, este oscilador te ayuda a definir:
- Cuándo el precio está presionando hacia la resistencia durante la continuación de la tendencia
- Si está respetando el soporte reciente durante la consolidación
- Cuándo está flotando a través de la mitad de la estructura sin una dirección clara
Pruébalo en diferentes activos. Intenta ajustar el período de retrospección del pivote para una detección de estructura más rápida o más lenta. Úsalo para informar — no dictar — tu lógica de trading.
Pueden acceder a más códigos de indicadores gratuitos para TradingView en: Indicadores de TradingView gratuitos
¿Que broker de Tradingview recomendamos para aplicar nuestras estrategias? IC Markets es una muy buena opción. Más información en: Análisis del broker IC Markets















