
La estrategia es un sistema de negociación basado en un marco de tiempo de 1 hora, que combina la confirmación de tendencias en el marco de tiempo superior, la identificación de trampas de liquidez, la alineación de indicadores MACD y el mecanismo de gestión de riesgos basado en ATR. La estrategia confirma la tendencia general del mercado a través del análisis de múltiples marcos de tiempo, mientras que utiliza la estructura de precios y las zonas de liquidez para buscar puntos de entrada de alta probabilidad.
El principio central de esta estrategia es asegurar que la dirección de las operaciones esté en consonancia con las principales tendencias mediante el análisis de múltiples marcos temporales. En concreto:
Confirmación de la tendencia en el marco de tiempo altoLa estrategia utiliza los indicadores EMA200 y MACD en el marco de tiempo de 4 horas para determinar la tendencia general del mercado. Sólo se considera hacer más cuando el precio está por encima de la EMA200 de 4 horas y la línea MACD está por encima de la línea de señal; y viceversa.
Confirmación de movimiento localUtiliza el indicador MACD de 1 hora para confirmar la dirección de la dinámica en el marco de tiempo actual y asegurarse de que está en consonancia con la tendencia de los marcos de tiempo más altos.
Mecanismo de captura de liquidezLa estrategia es identificar dos puntos de entrada potencialmente de alta probabilidad:
Gestión de riesgos basada en ATR:
El filtro del tiempo: estrategia para generar señales solo en los períodos de transacción definidos por el usuario, evitando falsas señales en los períodos no activos.
Después de profundizar en el código de esta estrategia, podemos resumir las siguientes ventajas:
Resonancia de tendencia y fuerza: Confirmación de indicadores de tendencia y dinámica en varios marcos de tiempo, mejora significativamente la fiabilidad de la señal de negociación. La probabilidad de éxito de la señal de negociación aumenta considerablemente cuando la dirección de los indicadores de 4 horas y 1 hora coincide.
Identificación inteligente de la movilidadLa estrategia es capaz de identificar trampas de liquidez en el mercado y cambios en la estructura de los precios, que suelen ser signos de actividad de los fondos de las instituciones. Por ejemplo, cuando los precios se encuentran en los mínimos previos que atraen a las órdenes de venta y luego se revierten rápidamente, la estrategia es capaz de capturar esta oportunidad de reversión.
La adaptación a la gestión de riesgosEl uso de ATR para establecer paradas y paradas de pérdidas permite a la administración de riesgos ajustar automáticamente según la volatilidad del mercado, ampliando automáticamente el alcance de los parados cuando aumenta la volatilidad y ajustando los parados cuando disminuye la volatilidad.
El filtro del tiempoLa estrategia evita la interferencia de los períodos de baja liquidez o de fluctuación irregular del mercado al negociar solo en períodos de tiempo específicos, centrándose en el comercio en los períodos más activos del mercado.
Ratio fijo de riesgo-retornoEl retorno por riesgo previsto es mayor que el retorno potencial de cada operación, que es al menos el doble del riesgo, lo que favorece el crecimiento positivo de la curva de capital en el largo plazo.
A pesar del buen diseño de la estrategia, existen algunos riesgos a tener en cuenta:
Riesgo de una falsa brecha: El mercado puede presentar falsas rupturas o falsas inversiones, lo que lleva a la estrategia a entrar en operaciones equivocadas. La solución es considerar la adición de filtros de confirmación, como la confirmación de volumen de transacciones o la retroalimentación de precios.
Exceso de dependencia del MACD: La estrategia utiliza el MACD en varios marcos de tiempo, pero el MACD es un indicador de retraso que puede generar una señal de retraso en un mercado muy volátil. Se puede considerar combinarlo con un indicador de dinámica más sensible como el RSI o un indicador aleatorio.
Limitaciones de las tasas fijas de riesgo-beneficioSi bien la relación de riesgo-retorno de 2: 1 es un punto de partida razonable, puede no ser siempre óptima en diferentes condiciones de mercado. En los mercados de tendencia fuerte, puede perderse mayores ganancias; en los mercados intermedios, puede ser difícil alcanzar el objetivo.
Problemas potenciales con el filtro de tiempo: Las horas fijas de negociación pueden perder oportunidades importantes en las horas no comerciales, o las horas óptimas de negociación pueden variar según la estación y el entorno del mercado.
Falta de análisis de volumenLa estrategia actual no tiene en cuenta el factor volumen de transacciones, que a menudo es un indicador importante para confirmar un repunte o una reversión de los precios.
Basado en un análisis profundo del código, las siguientes son algunas posibles direcciones de optimización:
Dinámica de la relación de riesgo-retorno: Se puede ajustar automáticamente la relación entre el riesgo y el rendimiento en función de la volatilidad del mercado o de la intensidad de la tendencia. Por ejemplo, se puede usar una relación de riesgo-rendimiento más alta (por ejemplo, 3: 1 o 4: 1) en un mercado de tendencia fuerte, mientras que se usa una proporción más conservadora (por ejemplo, 1,5: 1) en un mercado de intervalo.
Aumentar el filtro de volumen de operaciones: La confirmación de volumen de transacciones incluida en los requisitos de entrada se ejecuta solo cuando se produce una ruptura o una captura de liquidez acompañada de un aumento significativo en el volumen de transacciones.
Acompañar la evaluación de la intensidad de la tendenciaIntroducción de indicadores de intensidad de tendencias como el ADX, para una entrada más activa en entornos de tendencias fuertes y más conservadora en entornos de tendencias débiles.
Filtrado de tiempo dinámicoBasado en el análisis de datos históricos, ajusta automáticamente el mejor momento de negociación para diferentes fases del mercado o estaciones, en lugar de usar un rango de tiempo fijo.
Mecanismo de frenado parcialImplementar estrategias de parada por etapas, por ejemplo, mover el stop loss al nivel de costo cuando se alcanza un rendimiento de riesgo de 1:1, para que algunas posiciones continúen funcionando para capturar una situación más grande.
Adaptación al estado del mercado: agregar mecanismos de identificación de entornos de mercado para ajustar automáticamente los parámetros de la estrategia o suspender la negociación en caso de alta volatilidad o de un patrón de mercado específico
Una estrategia de trading de resonancia dinámica de marco temporal múltiple con detección de liquidez y un sistema de gestión de riesgo ATR es una estrategia de negociación cuantitativa de diseño razonable que asegura que la dirección de la negociación está en consonancia con las principales tendencias mediante el análisis de marcos temporales múltiples, que utiliza la captura de liquidez y la estructura de precios para encontrar puntos de entrada de alta probabilidad y que utiliza un sistema de gestión de riesgo adaptativo basado en ATR.
Las ventajas centrales de esta estrategia residen en la confirmación de tendencias y dinámicas en múltiples capas, mecanismos inteligentes de identificación de la liquidez y un sistema de gestión de riesgos adaptativo. Sin embargo, como cualquier estrategia de negociación, también enfrenta riesgos como falsos breaks, atrasos en los indicadores y limitaciones de parámetros fijos.
La estrategia tiene el potencial de mejorar aún más su rendimiento y adaptabilidad mediante la introducción de medidas de optimización tales como la proporción de retorno de riesgo dinámico, el filtro de volumen de operaciones, la evaluación de la intensidad de la tendencia y el mecanismo de bloqueo parcial. Es un sistema de negociación cuantitativo que vale la pena considerar para los operadores que buscan capturar oportunidades de negociación de alta probabilidad en mercados volátiles mientras mantienen un control razonable del riesgo.
/*backtest
start: 2024-07-21 00:00:00
end: 2025-07-19 08:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":2000000}]
*/
// MNQ 1H Trading Bot with Liquidity Grab, MACD, EMA200 and ATR R:R Filter (Version 6)
//@version=5
strategy("MNQ 1H Liquidity + MTF Bot", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === INPUTS ===
slATRMult = input.float(1.0, "ATR Multiplier for Stop Loss", minval=0.1)
riskReward = input.float(2.0, "Risk-Reward Ratio", minval=1.0)
timeFilterStart = input.int(0, "Start Hour (UTC)", minval=0, maxval=23)
timeFilterEnd = input.int(23, "End Hour (UTC)", minval=0, maxval=23)
// === HIGHER TIMEFRAME FILTERS (4H) ===
htf = "240"
htfPrice = request.security(syminfo.tickerid, htf, close)
htfEMA200 = request.security(syminfo.tickerid, htf, ta.ema(close, 200))
[macdHTF, signalHTF, _] = request.security(syminfo.tickerid, htf, ta.macd(close, 12, 26, 9))
longHTF = htfPrice > htfEMA200 and macdHTF > signalHTF
shortHTF = htfPrice < htfEMA200 and macdHTF < signalHTF
// === MAIN TIMEFRAME (1H) ===
[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)
bullBreakout = close > ta.highest(close[1], 5)
bearRejection = close < ta.lowest(close[1], 5)
// === LIQUIDITY GRAB FILTER ===
liqHigh = high[1] > ta.highest(high[2], 10) and close < high[1]
liqLow = low[1] < ta.lowest(low[2], 10) and close > low[1]
// === TIME FILTER ===
withinTime = (hour >= timeFilterStart and hour <= timeFilterEnd)
// === ENTRY CONDITIONS ===
longCond = withinTime and longHTF and macdLine > signalLine and (bullBreakout or liqLow)
shortCond = withinTime and shortHTF and macdLine < signalLine and (bearRejection or liqHigh)
// === ATR-BASED RISK ===
atr = ta.atr(14)
longSL = close - atr * slATRMult
longTP = close + atr * slATRMult * riskReward
shortSL = close + atr * slATRMult
shortTP = close - atr * slATRMult * riskReward
// === EXECUTION ===
if (longCond and strategy.position_size <= 0)
strategy.entry("Long", strategy.long)
strategy.exit("Long TP/SL", from_entry="Long", stop=longSL, limit=longTP)
if (shortCond and strategy.position_size >= 0)
strategy.entry("Short", strategy.short)
strategy.exit("Short TP/SL", from_entry="Short", stop=shortSL, limit=shortTP)
// === VISUAL ===
plot(ta.ema(close, 200), color=color.orange, title="EMA 200")