La estrategia de inversión de tendencia Renko ATR es un enfoque de negociación único que utiliza gráficos Renko junto con el indicador de rango verdadero promedio (ATR) para identificar puntos de inversión de tendencia en los mercados financieros.
La estrategia primero calcula el valor de ATR durante un período definido y utiliza este ATR como el tamaño de ladrillo para el gráfico Renko. Se dibujan nuevos ladrillos Renko cuando los movimientos de precios exceden un ATR. De esta manera, el gráfico Renko puede adaptarse automáticamente a la volatilidad del mercado, con tamaños de ladrillo más grandes para períodos de mayor volatilidad y tamaños de ladrillo más pequeños para períodos de menor volatilidad.
Una señal de compra se genera cuando el precio de apertura del gráfico de Renko cruza por debajo del precio de cierre. Por el contrario, una señal de venta se genera cuando el precio de apertura cruza por encima del precio de cierre. Estas señales marcan puntos potenciales de inversión de tendencia.
La estrategia establece dinámicamente los niveles de stop-loss y take-profit para cada operación como un porcentaje del precio de apertura de Renko, basado en parámetros de entrada definidos por el usuario.
Al calcular manualmente los precios de apertura y cierre, se elimina la repintura, lo que hace que las señales sean más precisas y oportunas.
El tamaño del bloque basado en el ATR permite que la estrategia se adapte automáticamente a las diferentes condiciones de volatilidad del mercado.
El mecanismo dinámico para establecer los niveles de stop loss y take profit permite un mejor control del riesgo basado en la volatilidad del mercado.
El gráfico de Renko filtra el ruido del mercado y proporciona una visión clara para detectar inversiones de tendencia.
Los usuarios necesitan optimizar parámetros como el período ATR, el porcentaje de stop loss y el porcentaje de ganancias para diferentes entornos de mercado.
Los acontecimientos noticiosos importantes o los comunicados de política pueden causar un deslizamiento rápido más allá de la parada de pérdidas o tomar los niveles de ganancia, lo que conduce a grandes pérdidas.
En algunos casos, el patrón de reversión señalado puede no materializarse, lo que lleva a operaciones perdedoras.
Los marcos de tiempo más largos pueden usarse para medir la dirección de la tendencia general.
El uso de impulso, volatilidad u otros indicadores en combinación puede mejorar la calidad de la señal y evitar señales falsas.
Los ratios de ganancias pueden ajustarse dinámicamente en función de la volatilidad del mercado y la distancia entre el precio de entrada y el precio actual.
La estrategia de reversión de tendencia de Renko ATR utiliza con éxito los gráficos de Renko con el indicador ATR para detectar automáticamente los puntos de reversión de tendencia en los mercados financieros. Las ventajas clave incluyen la eliminación de la repintura, la adaptación automática a la volatilidad cambiante y el stop loss / take profit dinámico. Sin embargo, los usuarios deben tener cuidado con los riesgos de optimización de parámetros, los riesgos de eventos y los riesgos de reversión fallida.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title='[tradinghook] - Renko Trend Reversal Strategy', shorttitle='[tradinghook] - Renko TRS', overlay=true ,initial_capital = 100, commission_value = 0.05, default_qty_value = 5) // INPUTS renkoATRLength = input.int(10, minval=1, title='ATR Length') stopLossPct = input.float(3, title='Stop Loss Percentage', step=0.1) takeProfitPct = input.float(20, title='Take Profit Percentage', step=0.1) startDate = input(timestamp("01 July 2023 00:00"), title="Start Date") endDate = input(timestamp("31 Dec 2025 23:59"), title="End Date") enableShorts = input.bool(true, title="Enable Shorts") var float stopLossPrice = na var float takeProfitPrice = na atr = ta.atr(renkoATRLength) // thanks to https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/ for manually calculating renkoClose and renkoOpen in order to remove repaint getRenkoClose() => p1 = 0.0 p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1]) p1 Renko3() => p3 = 0.0 p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1]) p3 getRenkoOpen() => open_v = 0.0 Br_2 = Renko3() open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1]) open_v renkoOpen = getRenkoOpen() renkoClose = getRenkoClose() // COLORS colorGreen = #089981 colorRed = #F23645 bgTransparency = 95 bgColorRed = color.new(colorRed, bgTransparency) bgColorGreen = color.new(colorGreen, bgTransparency) lineColor = renkoClose < renkoOpen ? colorRed : colorGreen bgColor = renkoClose < renkoOpen ? bgColorRed : bgColorGreen // PLOTS plot(renkoOpen, title="Renko Open", style=plot.style_line, linewidth=2, color=lineColor) bgcolor(bgColor) // SIGNALS isWithinTimeRange = true buySignal = ta.crossunder(renkoOpen, renkoClose) and isWithinTimeRange sellSignal = ta.crossover(renkoOpen, renkoClose) and isWithinTimeRange and enableShorts if (buySignal) stopLossPrice := renkoOpen * (1 - stopLossPct / 100) takeProfitPrice := renkoOpen * (1 + takeProfitPct / 100) strategy.entry("Long", strategy.long) strategy.exit("ExitLong", "Long", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice)) if (sellSignal) stopLossPrice := renkoOpen * (1 + stopLossPct / 100) takeProfitPrice := renkoOpen * (1 - takeProfitPct / 100) strategy.entry("Short", strategy.short) strategy.exit("ExitShort", "Short", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice))