
A Estratégia de Reversão de Tendência ATR é uma estratégia de negociação exclusiva que utiliza o gráfico de Renko em combinação com o indicador de ATR para identificar a reversão de tendência no mercado financeiro. A estratégia elimina o problema de traço de atraso do gráfico de Renko e é capaz de capturar com precisão os pontos de reversão, fornecendo um sinal claro para decisões de negociação.
A estratégia primeiro calcula o valor do ATR em um determinado período e define o tamanho do bloco do gráfico de Renko com base nesse ATR. Quando o preço muda mais do que um ATR, um novo bloco de Renko é desenhado. Dessa forma, o gráfico de Renko é capaz de se adaptar automaticamente ao grau de flutuação do mercado, definindo um tamanho de bloco maior para os altos e menor para os baixos.
Quando o Renko abre abaixo do preço de fechamento, gera um sinal de compra; quando o Renko abre acima do preço de fechamento, gera um sinal de venda. Estes sinais marcam um potencial ponto de reversão de tendência.
A estratégia define o preço de parada e o preço de parada para cada parcela com base na porcentagem de stop loss e na porcentagem de parada definida pelo usuário, usando o preço de abertura de Renko como referência dinâmica, controlando o risco e o lucro de cada transação.
A estratégia elimina o problema do retardo de mapeamento, fazendo com que a geração de sinais seja mais precisa e oportuna, através do cálculo manual dos preços de abertura e fechamento de Renko.
A configuração do tamanho do bloco Renko baseada no indicador ATR permite que a estratégia se adapte automaticamente à taxa de flutuação dos preços em diferentes condições de mercado.
A estratégia define um mecanismo de stop loss e stop loss dinâmico para cada transação, que permite controlar o risco de acordo com a volatilidade do mercado.
O gráfico Renko, por si só, filtra o ruído do mercado e fornece um visual claro e conciso para identificar a reversão de tendências.
Os usuários precisam otimizar os parâmetros como o ciclo ATR, a porcentagem de parada e a porcentagem de parada para se adaptar a diferentes condições de mercado. Se os parâmetros forem configurados incorretamente, isso pode levar à ineficácia da estratégia.
Eventos econômicos importantes ou a introdução de políticas podem levar a um aumento rápido do volume, levando a que os níveis de parada ou de suspensão sejam ultrapassados, causando maiores perdas.
Em alguns casos, a reversão determinada pelo sinal de negociação pode falhar, não sendo capaz de impulsionar o preço na direção da reversão, resultando em prejuízos.
Pode-se avaliar a tendência maior em períodos de tempo mais altos, evitando a negociação de contrapartida. Também pode-se filtrar os sinais falsos em períodos de tempo mais baixos.
Em combinação com o indicador de massa, o indicador de taxa de oscilação, etc., pode melhorar a qualidade do sinal e evitar sinais errados.
A taxa de suspensão pode ser ajustada dinamicamente de acordo com a volatilidade do mercado e a distância entre o preço mais recente e o ponto de entrada.
A estratégia de reversão de tendência baseada na amplitude real da média de Renko usa com sucesso o gráfico de Renko em combinação com o indicador ATR para identificar automaticamente os pontos de inflexão nos mercados financeiros. A estratégia tem vantagens como a eliminação do desenho de atraso, a adaptação automática à volatilidade do mercado e o stop loss dinâmico.
/*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))