A Estratégia de Reversão de Tendência Renko ATR é uma abordagem de negociação única que utiliza gráficos Renko em conjunto com o indicador Average True Range (ATR) para identificar pontos de reversão de tendência nos mercados financeiros.
A estratégia primeiro calcula o valor do ATR durante um período definido e usa esse ATR como o tamanho do tijolo para o gráfico Renko. Novos tijolos Renko são desenhados quando os movimentos de preços excedem um ATR. Desta forma, o gráfico Renko pode se adaptar automaticamente à volatilidade do mercado, com tamanhos de tijolo maiores para períodos de maior volatilidade e tamanhos de tijolo menores para períodos de menor volatilidade.
Um sinal de compra é gerado quando o preço de abertura do gráfico Renko cruza abaixo do preço de fechamento.
A estratégia define dinamicamente os níveis de stop-loss e take-profit para cada negociação como uma porcentagem do preço de abertura da Renko, com base em parâmetros de entrada definidos pelo usuário.
Ao calcular manualmente os preços de abertura e fechamento, a repintura é eliminada, tornando os sinais mais precisos e oportunos.
O tamanho do bloco baseado no ATR permite que a estratégia se adapte automaticamente às diferentes condições de volatilidade do mercado.
O mecanismo dinâmico de fixação dos níveis de stop loss e take profit permite um melhor controlo do risco com base na volatilidade do mercado.
O gráfico Renko filtra o ruído do mercado e fornece uma visão clara para detectar inversões de tendência.
Os usuários precisam otimizar parâmetros como período ATR, stop loss % e take profit % para diferentes ambientes de mercado.
Eventos noticiosos importantes ou comunicados de política podem causar um rápido deslizamento para além do stop loss ou aumentar os níveis de lucro, levando a grandes perdas.
Em alguns casos, o padrão de reversão sinalizado pode não se materializar, levando a operações perdedoras.
Os prazos mais longos podem ser usados para medir a direção da tendência geral.
A utilização conjunta de impulso, volatilidade ou outros indicadores pode melhorar a qualidade do sinal e evitar falsos sinais.
Os rácios de lucro podem ser ajustados dinamicamente com base na volatilidade do mercado e na distância entre o preço de entrada e o preço atual.
A estratégia de reversão de tendência Renko ATR utiliza com sucesso gráficos Renko com indicador ATR para detectar automaticamente pontos de reversão de tendência nos mercados financeiros. As principais vantagens incluem eliminação de repintura, adaptação automática à mudança de volatilidade e stop loss / take profit dinâmico. No entanto, os usuários precisam ter cuidado com os riscos de otimização de parâmetros, riscos de eventos e riscos de reversão fracassada.
/*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))