
La estrategia de retroceso de la mediana para llenar brechas dinámicas es un sistema de negociación cuantitativo que se enfoca específicamente en el llenado de brechas en un día. La estrategia se basa en la tendencia natural de los mercados de llenar estas brechas con retroceso después de que surjan brechas significativas. La estrategia se ejecuta en un marco de tiempo de 3 minutos, utilizando un patrón de precio específico, dirección de la tendencia y confirmación de volumen de transacción para filtrar oportunidades de negociación de alta probabilidad.
La lógica central de esta estrategia gira en torno a la detección y el llenado de brechas:
Mecanismo de detección de brechasLa estrategia comienza por identificar las brechas de precio de más del 0,5% en el día. Se determina si la brecha es hacia arriba o hacia abajo comparando el precio de cierre del día de negociación anterior con el precio de apertura del día.
Confirmación de la tendenciaUtilice el promedio móvil indexado de 50 y 200 periodos (EMA) para determinar la tendencia actual del mercado. Considere el plus sólo si el EMA50 es mayor que el EMA200; considere el short sólo si el EMA50 es menor que el EMA200.
Modo de reversión de la trípodeLa estrategia requiere que tres tramos consecutivos formen un patrón de reversión. Para hacer más, se necesita “close”[2] < close[1] close[1] > close en el modo de caída.
Filtrado por volumen de transacciones: El filtro de volumen de transacción opcional asegura que las transacciones se realicen solo cuando el volumen de transacciones es superior a la media de 20 ciclos, lo que aumenta la fiabilidad de la señal.
El filtro RSI: Para las operaciones de shorting, se agregan condiciones adicionales de RSI > 60 para garantizar que el mercado esté en un estado de sobrecompra relativa y mejorar la calidad de las señales de venta baja.
Los requisitos de admisión incluyen todos los factores mencionados anteriormente:
Identificación clara de las anomalías del mercadoLa estrategia se centra en la brecha de precios del aluminio en el mercado, un fenómeno de mercado estadísticamente significativo que proporciona un margen de predicción.
Mecanismo de confirmación múltipleLa combinación de brechas, filtros de tendencias, confirmación de volumen de transacciones y modelos de precios reduce considerablemente la posibilidad de falsas señales.
La gestión de riesgos precisaUtiliza ATR para establecer objetivos de stop loss y profit, asegurando que la administración de riesgos se adapte a los cambios en la volatilidad del mercado. Establece el máximo monto de stop loss en dólares, controlando efectivamente el umbral de riesgo de cada operación.
Detener el seguimiento dinámicoUna vez que el comercio alcanza un nivel de ganancias de 2×ATR, se puede activar el stop loss de seguimiento, lo que permite que el comercio de ganancias continúe funcionando mientras se mantiene parte de las ganancias.
Ajustes de parámetros flexiblesLa estrategia ofrece una variedad de parámetros ajustables (tamaño de la brecha, multiplicador de ATR, cantidad máxima de parada, etc.) que se pueden optimizar en función de las preferencias de riesgo del comerciante y las condiciones del mercado.
Protección por tiempo limitado: Optimiza la eficiencia de uso de fondos al establecer el tiempo máximo de tenencia de la posición (de 50 columnas) para evitar que las operaciones estén en pérdidas durante mucho tiempo.
En consonancia con la microestructura del mercadoLa estrategia está diseñada de acuerdo con la microestructura de los mercados, centrándose en las operaciones diarias y evitando el riesgo de la noche a la mañana.
Cantidad de ganancias moderadasUna estrategia con una probabilidad de éxito de aproximadamente el 46% significa que el número de operaciones perdedoras es ligeramente mayor que el de operaciones ganadoras. Si bien es ganadora en general, puede requerir una buena capacidad de resistencia psicológica para pasar por períodos de pérdidas consecutivas.
Dependencia del mercado: La estrategia indica claramente que solo se aplica al gráfico de 3 minutos del NASDAQ (US100) y no se ha probado ni optimizado en otros activos o marcos de tiempo. Esto limita el alcance de la estrategia.
Sensibilidad de los parámetrosComo la mayoría de las estrategias de cuantificación, el rendimiento puede ser altamente sensible a la selección de parámetros. La optimización excesiva puede conducir a un buen rendimiento de la retroalimentación pero un mal rendimiento de las operaciones en el disco.
Frecuencia limitada de las transaccionesEl hecho de ejecutar solo una operación al día limita el potencial de ganancias, especialmente en días de baja volatilidad, donde se puede perder otras oportunidades.
Riesgo de una brecha frecuenteLa estrategia depende de que ocurran brechas de cierta magnitud, que pueden pasar sin señales de negociación durante largos períodos de calma en el mercado.
El riesgo de una recesión estratégicaEl efecto de llenar el vacío puede debilitarse a medida que más comerciantes utilicen estrategias similares, lo que reduce la eficiencia de las estrategias.
Las medidas de mitigación:
Mejorar el filtro de tendenciasLas estrategias actuales utilizan un simple cruce EMA como indicador de tendencia. Se puede considerar la integración de métodos de identificación de tendencias más complejos, como el ADX (indice de dirección promedio) o el análisis de tendencias de múltiples marcos de tiempo, para mejorar la calidad de los filtros.
Optimizar el tiempo de ingresoEl modelo de reversión de Mitsubishi en la actualidad puede ser demasiado simple. Considere la posibilidad de agregar confirmaciones técnicas, como la forma de la barra, los niveles de soporte / resistencia o el análisis de la conducta del precio, para optimizar el momento de entrada.
Objetivos de pérdidas y ganancias dinámicas: Aunque es razonable usar un multiplicador ATR fijo, se puede realizar un ajuste dinámico basado en la volatilidad del mercado o la hora del día. Por ejemplo, aumentar el multiplicador ATR en períodos de alta volatilidad o ajustar los parámetros de riesgo según el momento de la negociación.
Aprendizaje automáticoEl análisis de las características de la tasa de éxito de llenado de la brecha histórica (como el tamaño de la brecha, las condiciones del mercado, el tiempo, etc.) a través de modelos de aprendizaje automático puede mejorar aún más el rendimiento de la estrategia.
Aumentar la frecuencia de las transaccionesConsidere la posibilidad de modificar la estrategia para permitir múltiples operaciones en el mismo día de negociación, especialmente cuando la operación actual ya ha terminado y hay una nueva señal válida. Esto puede aumentar los ingresos generales, pero se debe probar cuidadosamente para garantizar que no se introduzcan operaciones excesivas.
Integración de las señales de mercado relevantesConsidere la integración de señales de mercados relevantes (como futuros, ETFs o índices de industrias relevantes) como confirmación. Esto puede proporcionar un margen de información adicional, especialmente en la determinación de si el vacío se va a llenar.
El filtro del tiempo: El mercado puede comportarse de manera diferente en diferentes períodos de tiempo. La adición de filtros basados en el tiempo de negociación puede mejorar el rendimiento de la estrategia, por ejemplo, evitar los períodos de alta volatilidad de apertura y cierre del mercado.
La estrategia de devolución de medias de llenado de brechas dinámicas es un sistema de negociación intradiaria cuidadosamente diseñado que se centra en la tendencia estadística de aprovechar las brechas de mercado. La estrategia combina detección de brechas, confirmación de tendencias, filtración de volúmenes de negociación e identificación de patrones de precios para crear un marco de decisión de negociación en varios niveles.
Las ventajas centrales de la estrategia residen en sus reglas de entrada claramente definidas, la gestión de riesgos basada en ATR y el mecanismo de confirmación múltiple. Aunque la tasa de victoria es moderada (alrededor del 46%), la estrategia puede generar un rendimiento positivo en la retrospectiva a través de un ajuste preciso de la rentabilidad del riesgo (una relación de rentabilidad del riesgo de 2: 1).
La estrategia es especialmente adecuada para aquellos operadores que buscan aprovechar las anomalías de un mercado específico, especialmente para los inversores interesados en operar en el NASDAQ durante el día. Sin embargo, los usuarios potenciales deben tener en cuenta las limitaciones de la estrategia, incluida la dependencia del mercado y la sensibilidad de los parámetros.
La estrategia podría mejorar aún más su rendimiento y robustez mediante la implementación de las medidas de optimización recomendadas, en particular, la mejora de los filtros de tendencia y la modificación de la hora de entrada en el campo. La reevaluación y ajuste periódico de los parámetros será clave para mantener el éxito a largo plazo a medida que cambian las condiciones del mercado.
En última instancia, esta estrategia representa un método de negociación cuantitativo equilibrado, que combina el análisis técnico y los conceptos estadísticos para capturar de manera sistematizada los patrones de comportamiento específicos del mercado.
/*backtest
start: 2025-04-15 00:00:00
end: 2025-05-14 08:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"SOL_USDT"}]
*/
//@version=5
strategy("Gap Fill Mean Reversion Strategy – NASDAQ 3-Minute", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1)
// === INPUTS ===
gapPct = input.float(0.5, title="Minimum Gap (%)") / 100
useVolume = input.bool(true, title="Use Volume Filter")
atrMultTP = input.float(2.0, title="TP Multiplier (ATR)")
atrMultSL = input.float(1.0, title="SL Multiplier (ATR)")
trailStartATR = input.float(2.0, title="Trailing Trigger (ATR)")
trailOffsetATR = input.float(1.0, title="Trailing Offset (ATR)")
maxSLusd = input.float(100, title="Max Stop Loss (USD)")
maxBars = input.int(50, title="Max Bars in Trade")
// === INDICATORS ===
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
trendUp = ema50 > ema200
trendDown = ema50 < ema200
rsi = ta.rsi(close, 14)
rsiShortCond = rsi > 60
// === GAP DETECTION ===
prevClose = request.security(syminfo.tickerid, "D", close[1])
todayOpen = request.security(syminfo.tickerid, "D", open)
gapUp = todayOpen > prevClose * (1 + gapPct)
gapDown = todayOpen < prevClose * (1 - gapPct)
// === VOLUME FILTER ===
volumeOK = not useVolume or (volume > ta.sma(volume, 20))
// === 3-CANDLE REVERSAL CONFIRMATION ===
threeDown = close[2] > close[1] and close[1] > close
threeUp = close[2] < close[1] and close[1] < close
// === ENTRY CONDITIONS ===
longCond = gapDown and threeUp and volumeOK and trendUp
shortCond = gapUp and threeDown and volumeOK and trendDown and rsiShortCond
// === ATR AND CALCULATIONS ===
atr = ta.atr(14)
entryPrice = strategy.opentrades > 0 ? strategy.opentrades.entry_price(0) : na
inLong = strategy.position_size > 0
inShort = strategy.position_size < 0
// === TRAILING STOP CONDITIONS ===
trailTrigger = atr * trailStartATR
trailOffset = atr * trailOffsetATR
longTrailCond = inLong and close > entryPrice + trailTrigger
shortTrailCond = inShort and close < entryPrice - trailTrigger
// === STOP LOSS DISTANCE (fixed USD limit applied) ===
slDistance = math.min(atr * atrMultSL, maxSLusd / syminfo.pointvalue)
// === ENTRIES ===
if (longCond)
strategy.entry("Gap Long", strategy.long)
if (shortCond)
strategy.entry("Gap Short", strategy.short)
// === EXITS ===
// LONG
if (longTrailCond)
strategy.exit("Trail Long", from_entry="Gap Long", trail_points=trailOffset, trail_offset=trailOffset)
else if (inLong)
strategy.exit("SL/TP Long", from_entry="Gap Long", stop=entryPrice - slDistance, limit=entryPrice + atr * atrMultTP)
// SHORT
if (shortTrailCond)
strategy.exit("Trail Short", from_entry="Gap Short", trail_points=trailOffset, trail_offset=trailOffset)
else if (inShort)
strategy.exit("SL/TP Short", from_entry="Gap Short", stop=entryPrice + slDistance, limit=entryPrice - atr * atrMultTP)
// === MAXIMUM TRADE DURATION CONTROL ===
strategy.close("Gap Long", when=inLong and (bar_index - strategy.opentrades.entry_bar_index(0)) >= maxBars)
strategy.close("Gap Short", when=inShort and (bar_index - strategy.opentrades.entry_bar_index(0)) >= maxBars)
// === VISUALS ===
plotshape(longCond, title="Long Signal", location=location.belowbar, style=shape.triangleup, color=color.green)
plotshape(shortCond, title="Short Signal", location=location.abovebar, style=shape.triangledown, color=color.red)
plot(ema50, color=color.orange, title="EMA 50")
plot(ema200, color=color.blue, title="EMA 200")