
La estrategia de negociación intradiaria de brecha de valor justo dinámico es un sistema de negociación cuantitativa basado en la teoría de la estructura del mercado que se centra en la identificación y negociación de brechas de valor justo en los precios (Fair Value Gap, abreviado FVG). La estrategia utiliza tres formas de hilos para detectar desequilibrios de oferta y demanda en el comportamiento de los precios y realizar operaciones de entrada en estas áreas cuando se evalúa el precio.
El principio central de la estrategia de negociación de brecha de justo valor se basa en las “zonas sin negociar” o “brechas” que los precios dejan cuando se mueven rápidamente. Estas áreas representan un grave desequilibrio de oferta y demanda, que generalmente se “llenan” o “re-prueba” en el futuro. En concreto, la estrategia funciona de la siguiente manera:
Mecanismo de detección de brechasLa estrategia utiliza un modelo de tres hilos para identificar dos tipos de FVG:
Logía de entrada de retroalimentaciónLa estrategia no es entrar en el mercado inmediatamente después de la formación de un FVG, sino esperar a que los precios se reafirmen en las siguientes áreas:
Gestión de riesgos:
Niveles al cierre de la jornadaEstrategia: Automatizar la liquidación de todas las posiciones y la eliminación de todas las matrices de FVG todos los días a las 3:15 p.m. (hora estándar india) para prepararse para el próximo día de negociación.
Transacciones superpuestasLa estrategia permite un máximo de 5 operaciones de superposición, lo que significa que se pueden mantener varias posiciones en la misma dirección, lo que aumenta los beneficios en un mercado de fuerte tendencia.
Este método utiliza la discontinuidad en la estructura del mercado y la teoría del comportamiento de los precios para tratar de capturar el comportamiento predecible de los precios al llenar estas zonas de desequilibrio.
Después de analizar el código en profundidad, la estrategia mostró varias ventajas:
Criterios objetivos de negociaciónLa estrategia utiliza condiciones matemáticas bien definidas para identificar los FVG y los puntos de entrada, eliminando el juicio subjetivo y aumentando la disciplina y la consistencia de las transacciones.
Transacciones basadas en la estructura del mercadoA través de la negociación de brechas de justo valor, la estrategia se centra en las áreas de verdadero desequilibrio de la oferta y la demanda en el mercado, en lugar de depender de las señales de los indicadores tradicionales, que a menudo se quedan atrás en la acción de los precios.
Mecanismo de control de riesgos:
Potencial de ganancias combinadas: Al permitir la superposición de operaciones (hasta 5 posiciones), la estrategia puede aumentar significativamente los ingresos en un mercado de fuerte tendencia, mientras que controla el riesgo de cada posición mediante el stop loss.
La adaptabilidadLa estrategia no depende de un nivel de precios fijo, sino que identifica dinámicamente las áreas clave en las condiciones actuales del mercado, lo que las hace adaptables en diferentes entornos y herramientas del mercado.
Eficiencia de la programaciónEl código utiliza una matriz para almacenar la información de FVG y gestionar eficazmente múltiples oportunidades de transacción potenciales, asegurando que el sistema pueda rastrear y responder a varios niveles de precios.
Ayuda visual: estrategia muestra las zonas de FVG de forma intuitiva en el gráfico (verde para FVG optimista, rojo para FVG bajista) para ayudar a los operadores a entender el proceso de toma de decisiones del sistema.
A pesar de las sólidas bases teóricas y ventajas de la estrategia, existen varios factores de riesgo a tener en cuenta:
Riesgo de una falsa brechaEn el mercado de reajuste, los precios pueden tocar el límite de FVG varias veces sin formar una tendencia continua, lo que lleva a múltiples paradas de pérdidas. La solución puede incluir la adición de filtros de entorno de mercado adicionales o indicadores de confirmación de tendencia.
Riesgo de las transacciones superpuestas: Permitir un máximo de 5 posiciones simultáneas puede conducir a una exposición excesiva en la dirección equivocada, especialmente cuando la tendencia se invierte repentinamente. Se recomienda la aplicación de restricciones de riesgo generales, por ejemplo, que el máximo riesgo de todas las posiciones no exceda un porcentaje específico de la cuenta.
Limitaciones de las tasas fijas de riesgo-beneficioEl uso de una relación de riesgo-rentabilidad de 1:2 fija puede no ser adecuado para todas las condiciones del mercado. En mercados con baja volatilidad, tal objetivo puede ser difícil de alcanzar; en mercados con alta volatilidad, puede salir prematuramente de operaciones rentables. Considere objetivos de ganancias ajustados en función de la volatilidad del mercado.
Falta de filtros en el entorno del mercado: La estrategia genera señales en todas las condiciones del mercado, sin tener en cuenta la tendencia general o el estado de fluctuación. En un entorno de fuerte tendencia, la adversidad de la FVG puede causar pérdidas continuas. La adición de filtros de tendencia puede mejorar significativamente el rendimiento.
No hay confirmación de volumenLa estrategia se basa únicamente en el comportamiento del precio, sin tener en cuenta la confirmación del volumen de transacciones, lo que puede generar falsas señales en áreas de bajo volumen de transacciones. La integración del análisis del volumen de transacciones puede mejorar la calidad de la señal.
Problemas potenciales con el tiempo fijo de salida: La salida en un momento determinado del día puede conducir a una salida prematura en una posición ventajosa o a perder una mejor oportunidad de salida en una posición desfavorable. Considere las condiciones de salida en combinación con la acción del precio.
Se basa en la hipótesis de retroceso histórico: La estrategia asume que el comportamiento de los futuros FVG será similar a los patrones observados en el pasado. La dinámica del mercado puede cambiar y debilitar la eficacia de estos patrones. Es muy importante re-optimizar periódicamente los parámetros y verificar las hipótesis.
Basado en un análisis profundo del código, las siguientes son algunas posibles direcciones de optimización:
El filtro de la estructura del mercado:
Ajuste por volatilidad:
Confirmación de la transacción:
Adaptación al tamaño de la posición:
Análisis de marcos de tiempo múltiples:
Transacciones de superposición inteligente:
Aprendizaje automático:
Marco de retroalimentación estadística:
La estrategia de trading intradiario de brecha de valor justo dinámico ofrece un método sistemático para identificar y negociar áreas de desequilibrio de oferta y demanda en el mercado. Utilizando el modelo de tres hilos de FVG y una regla de entrada de retracción clara, la estrategia tiene tanto solidez teórica como operabilidad práctica. Su robusto marco de gestión de riesgos, que incluye un stop loss predefinido, un índice de retorno de riesgo fijo y un mecanismo de posición de cierre de día, proporciona una base sólida para la disciplina de trading.
La principal ventaja de la estrategia reside en su objetividad y en su enfoque basado en la estructura del mercado, que le permite mantener la relevancia en diferentes entornos de mercado. Sin embargo, la eficacia de la estrategia puede ser mejorada significativamente mediante la implementación de la dirección de optimización de las recomendaciones, especialmente mediante la adición de filtros de entornos de mercado, ajustes basados en la volatilidad y confirmación de volúmenes de transacciones.
Cabe señalar que ninguna estrategia de negociación, por perfecta que sea, garantiza el éxito. La negociación exitosa requiere no solo una estrategia sólida, sino también una estricta disciplina de ejecución, una gestión adecuada de los fondos y un profundo conocimiento del mercado.
/*backtest
start: 2024-03-26 00:00:00
end: 2025-03-25 00:00:00
period: 2d
basePeriod: 2d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Intraday FVG", overlay=true, pyramiding=5, max_bars_back=500, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent)
// 2. FVG Detection (Three-Candle Pattern)
var bullFVGHigh = array.new_float()
var bullFVGLow = array.new_float()
var bullFVGIndex = array.new_int()
var bearFVGHigh = array.new_float()
var bearFVGLow = array.new_float()
var bearFVGIndex = array.new_int()
detectFVG() =>
// Bullish FVG: Current low > prior high AND next high < current low
bullCondition = low > high[2] and close[1] > high[2]
// Bearish FVG: Current high < prior low AND next low > current high
bearCondition = high < low[2] and close[1] < low[2]
if bullCondition
// log.info("bull condition met: {0} {0} {0}", high[2], close[1], low)
array.push(bullFVGHigh, low)
array.push(bullFVGLow, low[2])
array.push(bullFVGIndex, bar_index)
if bearCondition
// log.info("bear condition met: {0} {0} {0}", low[2], close[1], high)
array.push(bearFVGHigh, high[2])
array.push(bearFVGLow, high)
array.push(bearFVGIndex, bar_index)
detectFVG()
// 3. Retest Execution Logic
checkRetests(arrayHigh, arrayLow, barIndex, direction) =>
// log.info("{0} : {1}", bar_index, time)
i = array.size(arrayHigh) - 1
while i >= 0
// log.info("barIndex : {0}" , array.get(barIndex, i))
// log.info("bar_index : {0}" , bar_index)
if array.get(barIndex, i) < bar_index
fvgHigh = array.get(arrayHigh, i)
fvgLow = array.get(arrayLow, i)
// log.info("visting : {0} : {1} : {2} : {3} ", array.get(barIndex, i), bar_index, fvgHigh, fvgLow)
if direction == "long" and low <= fvgHigh
// log.info("entering long")
sl = array.get(arrayLow, i) // Previous candle's low
entry = close
tp = entry + (entry - sl)*2
strategy.entry("L"+str.tostring(array.get(barIndex, i)), strategy.long)
strategy.exit("XL"+str.tostring(array.get(barIndex, i)), "L"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
array.remove(arrayHigh, i)
array.remove(arrayLow, i)
array.remove(barIndex, i)
if direction == "short" and high >= fvgLow
// log.info("entering short")
sl = array.get(arrayHigh, i) // Previous candle's low
entry = close
tp = entry - (sl - entry)*2
strategy.entry("S"+str.tostring(array.get(barIndex, i)), strategy.short)
strategy.exit("XS"+str.tostring(array.get(barIndex, i)), "S"+str.tostring(array.get(barIndex, i)), stop=sl, limit=tp)
array.remove(arrayHigh, i)
array.remove(arrayLow, i)
array.remove(barIndex, i)
i := i - 1
checkRetests(bullFVGHigh, bullFVGLow, bullFVGIndex, "long")
checkRetests(bearFVGHigh, bearFVGLow, bearFVGIndex,"short")
// 5. Daily Exit at 3:15 PM IST
exitTime = hour == 15 and minute >= 15
if exitTime
strategy.close_all()
array.clear(bullFVGHigh)
array.clear(bullFVGLow)
array.clear(bearFVGHigh)
array.clear(bearFVGLow)
array.clear(bullFVGIndex)
array.clear(bearFVGIndex)