
La estrategia de reversión de la zona de valor de los futuros basada en la regla del 80% es un sistema de negociación cuantitativa diseñado específicamente para validar la clásica configuración de la regla del 80%. La idea central de la estrategia es capturar las oportunidades de reversión después de que el precio vuelva a entrar en la zona de valor del día de negociación anterior (Value Area). La estrategia se ejecuta dentro de un período de tiempo de negociación de futuros ETH bien definido, cuando el precio vuelve a entrar en la zona de valor del día anterior y permanece dentro de la zona durante un tiempo suficiente, el sistema dispara una señal de negociación, el objetivo principal es el punto de control de precios (Point of Control, POC), mientras que también se rastrea el recorrido completo de la zona de valor para el estudio y el análisis.
La estrategia se basa en el principio de la regresión de la media de las tendencias del mercado, con especial atención a la relación entre los precios y las zonas de valor. La lógica central de la estrategia incluye:
La hora de la transacción: La estrategia se fija en la ventana real de 22 horas de ETH (desde las 5:00 p.m. hora del Pacífico hasta las 3:00 p.m. del día siguiente) y admite la configuración de la zona horaria global. Esto asegura que la estrategia se ejecute en el entorno de mercado correcto.
Cálculo de las zonas de valorEl sistema calcula automáticamente los puntos altos de la zona de valor (VAH), los puntos bajos de la zona de valor (VAL) y los puntos de control de precios (POC):
Mecanismo de reconocimiento de señales: El precio debe volver a entrar en la zona de valor y permanecer dentro de la zona durante al menos 45 minutos (las 3 líneas K en el gráfico de 15 minutos) para confirmar la señal de entrada. Esta exigencia asegura la veracidad de la intención de inversión del precio.
Filtración de la fecha de vigencia:
Condiciones de activación:
Las estrategias de salidaEl objetivo principal es salir cuando el precio alcanza el POC, lo que está en consonancia con la idea central de la regresión a la media.
Estadísticas básicasLa estrategia se basa en las zonas de valor y la regla del 80%, ambas con una sólida base estadística. Las zonas de valor representan las zonas donde se produce el 68% de la actividad de precios, similar a una diferencia estándar de la distribución normal.
Definición exacta de la ventana de operacionesLa estrategia utiliza una ventana real de 22 horas de ETH en lugar de un simple intervalo de días, lo que refleja con mayor precisión la estructura del mercado.
Soporte de zona horaria flexibleLos operadores globales pueden ajustar sus estrategias según su ubicación geográfica para que el sistema funcione en cualquier zona horaria.
Estricta confirmación de la señalRequiere que el precio mantenga al menos 3 líneas K dentro de la zona de valor para confirmar la señal, lo que reduce considerablemente la posibilidad de señales falsas.
Establecer objetivos precisos: El uso de POC como objetivo principal ofrece claras ventajas, en consonancia con la característica de regreso a la media común en el mercado de futuros.
Mecanismo de doble verificación: Requiere no solo que el precio vuelva a entrar en la zona de valor, sino también que se vuelva a medir el límite ((VAL o VAH), lo que aumenta la fiabilidad de la señal.
Modo de cobertura manual: Cuando la lógica automática no es suficiente para responder a condiciones especiales del mercado, la estrategia permite al comerciante usar niveles de zona de valor configurados manualmente.
Funcionalidad de la desinstalación: Proporciona etiquetas de diagnóstico detalladas que ayudan a desarrollar estrategias y pruebas de avance.
Regreso al promedio y riesgo de fracasoA pesar de que la regla del 80% es efectiva en muchas situaciones, el mercado también puede experimentar una fuerte tendencia que impide que los precios regresen a la POC. Para mitigar este riesgo, se puede considerar agregar un filtro de tendencia o establecer un punto de parada.
Sensibilidad de los parámetrosEl requisito de confirmación de 3 líneas K (<45 minutos) es un parámetro clave. Si es demasiado corto, puede provocar una entrada prematura, y si es demasiado largo, puede perderse una oportunidad. Se recomienda probar diferentes configuraciones de tiempo de confirmación en diferentes condiciones de mercado.
Dependencia del entorno de mercado: Esta estrategia funciona mejor en mercados convulsionados por rangos, pero puede funcionar mal en un entorno de fuerte tendencia o alta volatilidad. Se debe considerar la adición de un filtro de entorno de mercado.
El momento de elegir el riesgo: El rendimiento de la estrategia puede verse afectado por el período de negociación elegido (Nueva York, Londres, Tokio o todo el tiempo). Se recomienda analizar el rendimiento histórico de los diferentes períodos de negociación para elegir el mejor momento.
Limites en el método de cálculo de la zona de valor: El uso de un rango fijo del 68% y el cálculo simplificado de POC puede no reflejar con precisión la distribución de valor real en algunos mercados. Considerar el uso de un método de cálculo de la zona de valor basado en el volumen de transacciones puede ser más preciso.
La falta de un mecanismo de detención de pérdidas: La estrategia actual carece de un mecanismo de stop loss claro, lo que puede causar pérdidas graves en situaciones extremas de mercado. Se recomienda la implementación de un sistema de stop loss basado en ATR o porcentaje fijo.
Condiciones de confirmación dinámica: La estrategia actual utiliza una línea de 3 K fija como condición de confirmación, y se puede considerar ajustar este parámetro en función de la volatilidad del mercado. En períodos de alta volatilidad, puede necesitar un tiempo de confirmación más largo, mientras que en períodos de baja volatilidad, puede ser más corto.
Zonas de valor basadas en el volumen de transaccionesEl cálculo de la zona de valor actual es una simplificación basada en el precio. Se puede actualizar a un análisis basado en la cantidad de transacciones (TPO) o una distribución de transacciones (perfil de volumen), que reflejará con mayor precisión la zona de valor consensuada por los participantes en el mercado.
Confirmación del marco temporal múltiple: La dirección de la tendencia combinada con un marco de tiempo más amplio, puede filtrar las señales de contratiempo, sólo el 80% de las señales de la regla de la marcha de las operaciones, y puede mejorar la tasa de éxito de la estrategia.
Establecimiento de objetivos de adaptaciónSe puede considerar el establecimiento de objetivos dinámicos en función de la volatilidad del mercado, por ejemplo, el establecimiento de objetivos más lejanos (como VAH o VAL) en mercados de alta volatilidad.
Filtros de fluctuación: Añadir el ATR u otros indicadores de volatilidad como condición de filtración para evitar la negociación en un entorno de mercado de muy baja o muy alta volatilidad.
Optimización de la configuración de la franja horaria: Análisis profundo del rendimiento de la estrategia en diferentes zonas horarias y horarios de negociación para encontrar la mejor combinación de horarios de negociación
Mecanismo inteligente para detener el dañoImplementación de lógica de stop loss inteligente, por ejemplo, stop loss basado en puntos de soporte/resistencia o stop loss de seguimiento basado en fluctuaciones de precios, para una mejor gestión del riesgo.
Calificación de la intensidad de la señal: Desarrollar un sistema de calificación de la calidad de la señal, combinando la intensidad de la reentrada de precios, la identificación de las características de la línea K y otros factores del mercado, para asignar una calificación de intensidad a cada señal para determinar el tamaño de la posición.
La estrategia de reversión de la zona de valor de los futuros basada en la regla del 80% es un sistema de negociación cuantitativo cuidadosamente diseñado para capturar oportunidades de reversión de precios de reingreso a la zona de valor. A través de un riguroso mecanismo de confirmación de señales, una definición precisa de los períodos y una configuración de objetivos clara, ofrece a los operadores una forma sistematizada de aplicar la clásica regla del 80% de negociación.
Las principales ventajas de las estrategias residen en su base estadística, sus estrictos requisitos de confirmación de señales y sus opciones de configuración flexibles. Sin embargo, también existen riesgos como el fracaso de la regresión promedio, la sensibilidad de los parámetros y la dependencia del entorno del mercado. La solidez y la adaptabilidad de las estrategias se pueden mejorar significativamente mediante la implementación de medidas de optimización, como la confirmación de condiciones dinámicas, el cálculo de áreas de valor basadas en el volumen de transacciones, la confirmación de marcos temporales múltiples y la configuración de objetivos de adaptación.
Este sistema basado en la regla del 80% ofrece un punto de partida sólido para los comerciantes que buscan estrategias de retorno de la media para su aplicación en el mercado de futuros, que se pueden personalizar y optimizar aún más en función de las preferencias de riesgo personales y las perspectivas del mercado.
/*backtest
start: 2025-07-09 00:00:00
end: 2025-07-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_OKX","currency":"SOL_USDT","balance":200000}]
*/
// This Pine Script® code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dscottmuller
// === Update July 15, 2025 ===
// • Converted to strategy for backtesting
// • POC-based exits for precision targeting
// • Full move markers for research tracking
// • Global time zone input (default: America/Los_Angeles)
//@version=5
strategy("80% Rule Backtest", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// === General Inputs ===
useAllMarkets = input.bool(false, "Use 24-Hour Session (All Markets)")
sessionChoice = input.string("New York", "Market Session", options=["New York", "London", "Tokyo"])
showSessionBox = input.bool(false, "Highlight Selected Session")
enableSounds = input.bool(false, "Enable Audible Alerts")
extendLines = input.bool(true, "Extend Lines Right")
// === Advanced Session Settings ===
group = "Advanced Session Settings"
showAutoLevels = input.bool(true, "Show Auto-Calculated VAH/POC/VAL", group=group)
useManualLevels = input.bool(false, "Use Manual VAH/POC/VAL", group=group)
manualVAH = input.float(0.0, "Manual VAH", group=group)
manualVAL = input.float(0.0, "Manual VAL", group=group)
manualPOC = input.float(0.0, "Manual POC", group=group)
debugMode = input.bool(false, "Enable Debug Mode", group=group)
// === Time Zone Selection ===
sessionTZ = input.string("America/Los_Angeles", "ETH Session Timezone",
options=[
"America/Los_Angeles", // Default: Pacific Time
"America/New_York",
"America/Chicago",
"America/Denver",
"Europe/London",
"Europe/Paris",
"Asia/Tokyo",
"Australia/Sydney"
], group=group)
// === Market Session Filter ===
nySession = time(timeframe.period, "0930-1600", "America/New_York")
londonSession = time(timeframe.period, "0800-1630", "Europe/London")
tokyoSession = time(timeframe.period, "0900-1500", "Asia/Tokyo")
allSession = time(timeframe.period, "0000-0000")
inSession = useAllMarkets ? not na(allSession) : sessionChoice == "New York" ? not na(nySession) : sessionChoice == "London" ? not na(londonSession) : sessionChoice == "Tokyo" ? not na(tokyoSession) : false
bgcolor(showSessionBox and inSession ? color.new(color.blue, 90) : na)
// === ETH Session Window (22-Hour Futures) ===
ethStart = timestamp(sessionTZ, year, month, dayofmonth - 1, 17, 00)
ethEnd = timestamp(sessionTZ, year, month, dayofmonth, 15, 00)
inEthWindow = time("30") >= ethStart and time("30") <= ethEnd
ethHigh = inEthWindow ? high : na
ethLow = inEthWindow ? low : na
ethClose = inEthWindow ? close : na
extHigh = ta.highest(ethHigh, 100)
extLow = ta.lowest(ethLow, 100)
extClose = ta.valuewhen(not na(ethClose), ethClose, 0)
// === Value Area Calculations ===
vaRange = (extHigh - extLow) * 0.68
vah = extHigh - ((extHigh - extLow - vaRange) / 2)
val = extLow + ((extHigh - extLow - vaRange) / 2)
poc = (extHigh + extLow + extClose) / 3
finalVAH = useManualLevels ? manualVAH : vah
finalVAL = useManualLevels ? manualVAL : val
finalPOC = useManualLevels ? manualPOC : poc
// === Signal Logic ===
validLongDay = extClose < finalVAL
validShortDay = extClose > finalVAH
insideVA = close > finalVAL and close < finalVAH
reenteredFromBelow = validLongDay and close > finalVAL
reenteredFromAbove = validShortDay and close < finalVAH
var int barsInside = 0
barsInside := ta.change(time("D")) ? 0 : insideVA ? barsInside + 1 : 0
insideConfirmed = barsInside >= 3
retestVAL = validLongDay and low <= finalVAL
retestVAH = validShortDay and high >= finalVAH
longSignal = inSession and validLongDay and reenteredFromBelow and insideConfirmed and retestVAL
shortSignal = inSession and validShortDay and reenteredFromAbove and insideConfirmed and retestVAH
longBar = longSignal and not longSignal[1]
shortBar = shortSignal and not shortSignal[1]
// === Strategy Entries ===
if longBar
strategy.entry("Long", strategy.long, comment="80% Long Signal")
if shortBar
strategy.entry("Short", strategy.short, comment="80% Short Signal")
// === Strategy Exits at POC ===
strategy.exit("Long to POC", from_entry="Long", limit=finalPOC)
strategy.exit("Short to POC", from_entry="Short", limit=finalPOC)
// === Track Full Move (Visual Only) ===
longFullHit = longBar and high >= finalVAH
shortFullHit = shortBar and low <= finalVAL
plotshape(longFullHit, title="Full Move Long", location=location.abovebar, color=color.green, style=shape.triangleup, text="FULL")
plotshape(shortFullHit, title="Full Move Short", location=location.belowbar, color=color.red, style=shape.triangledown, text="FULL")
// === Debug Diagnostics ===
if debugMode and (longBar or shortBar)
debugText = (useManualLevels ? "Manual Mode" : "Auto Mode") + " | TZ: " + sessionTZ + " | 80% Triggered | barsInside: " + str.tostring(barsInside)
label.new(bar_index, close, debugText, xloc.bar_index, longBar ? yloc.belowbar : yloc.abovebar, style=label.style_label_left, textcolor=color.white, size=size.small, color=color.new(color.gray, 70))