
O indicador de estratégia de desvio de tendência do RSI é uma ferramenta de negociação quantitativa avançada que utiliza o desvio formado entre o índice de força relativa (RSI) e o preço para fornecer aos comerciantes sinais de compra e venda de alta probabilidade. A estratégia foi especialmente otimizada para o período de 30 minutos, identificando efetivamente os pontos de inflexão do mercado com o cálculo preciso dos níveis de entrada e saída do RSI, combinados com os sinais de desvio de touros e ursos.
O RSI se desvia de uma estratégia baseada na interação de dois indicadores técnicos principais:
Níveis de sobre-compra/excesso de venda do índice de força relativa (RSI)A estratégia permite que o usuário personalize os níveis de entrada e saída do RSI. A configuração padrão é o nível de entrada múltipla de 35.0, o nível de entrada em branco de 76.0, o nível de saída múltipla de 80.0, o nível de saída em branco de 54.1. Estes níveis são obtidos através de testes de experiência de anos e são otimizados para o período de 30 minutos.
RSI desvia-se do sinalA estratégia identifica dois tipos de desvio:
A lógica de execução da estratégia é a seguinte:
O sistema identifica desvios através da retrospecção de 5 colunas de dados e gera automaticamente um sinal de transação quando as condições são satisfeitas, reduzindo significativamente a necessidade de análise manual.
Filtragem de sinais de alta precisãoA combinação de níveis de RSI e desvio de preço permite filtrar os sinais fracos e acionar a negociação apenas em pontos de inflexão de alta probabilidade, aumentando a taxa de sucesso da negociação.
Muito personalizávelA flexibilidade permite que o trader ajuste os níveis de entrada e saída do RSI de acordo com as características de diferentes mercados e prazos de tempo, otimizando o desempenho da estratégia. Esta flexibilidade torna-o adequado para várias variedades de negociação e períodos de tempo.
Ajuda visual intuitivaA estratégia oferece uma grande variedade de elementos visuais, incluindo:
Potencial de negociação automatizadaA integração com plataformas de negociação externas através da funcionalidade Webhook do TradingView permite a execução automática de transações, reduzindo a interferência humana e o impacto emocional.
TransparênciaO código da estratégia é totalmente aberto, permitindo que os comerciantes tenham uma visão mais profunda de como ela funciona e que possam modificar e otimizar de acordo com suas necessidades.
Risco de tendências de mercadoA estratégia funciona bem na identificação de pontos de inflexão, mas pode produzir sinais errados em mercados de forte tendência. A confiabilidade de sinais de múltiplas cabeças é significativamente reduzida, especialmente em fortes tendências de baixa ou em mercados de baixa.
Sensibilidade do parâmetroA configuração dos níveis de entrada e saída do RSI tem um impacto significativo no desempenho da estratégia. A configuração inadequada dos parâmetros pode levar a excesso de negociação ou perda de oportunidades importantes. A solução é a otimização dos parâmetros para um determinado mercado e período de tempo.
Risco de atrasoO uso estratégico de indicadores de atraso (RSI) e a necessidade de esperar para se formar um desvio podem fazer com que o ponto de entrada não seja o ideal, especialmente em mercados com muita volatilidade.
Risco de Falso Breakout: O mercado pode formar falsos sinais de desvio, levando a transações erradas. Recomenda-se a combinação de outros indicadores técnicos ou sinais de confirmação de um período mais longo.
Efeitos das comissões e deslizamentosA estratégia define uma taxa de comissão de 0,1% por defeito, mas a taxa de comissão e os pontos de deslizamento nas negociações reais podem ser diferentes do valor definido, afetando a diferença entre os resultados reais do retestamento e o desempenho das negociações reais.
Integração de análise de multi-quadros temporaisExpandir a estratégia para um sistema de análise de quadros de tempo múltiplos, executando operações somente quando a direção da tendência de quadros de tempo mais altos coincide com o sinal de desvio. Por exemplo, executar operações de múltiplos cabeçalhos somente quando o gráfico do dia mostra uma tendência ascendente e o gráfico de 30 minutos apresenta um desvio de mercado em alta.
Aumentar o filtro de volume de transações: Aumentar o mecanismo de confirmação de volume de transação quando o sinal de desvio é formado, aumentando a confiabilidade do sinal. Por exemplo, pode-se verificar se o volume de transação quando o desvio é formado apresenta um padrão de desvio ou confirmação.
Parâmetros de adaptação do RSIDesenvolvimento de algoritmos de auto-adaptação para ajustar automaticamente os níveis de entrada e saída do RSI de acordo com a volatilidade do mercado, adaptando-se a diferentes condições de mercado.
Mecanismo de amortização de prejuízosA estratégia atual consiste em apenas sair de uma negociação com base no nível RSI, com a adição de um mecanismo de parada baseado no preço, limitando a perda máxima de uma única negociação.
Aumentar a filtragem de mercadoIntegrar indicadores de identificação de tendências (como médias móveis ou ADX), executar negociações em direções específicas apenas em um ambiente de mercado apropriado, evitando negociações adversas.
Otimização de aprendizagem de máquinaA análise de dados históricos, utilizando algoritmos de aprendizagem de máquina, permite identificar automaticamente os melhores parâmetros de RSI e as condições de confirmação de desvios, melhorando ainda mais o desempenho da estratégia.
O indicador de estratégia de desvio de tendência do RSI é uma ferramenta de negociação quantitativa poderosa, que identifica efetivamente os pontos de inflexão do mercado através da combinação do indicador de desvio de tendência do RSI e do preço. A vantagem mais notável da estratégia reside na sua alta personalização e na assistência visual intuitiva, que permite aos comerciantes otimizar as decisões de negociação de acordo com diferentes ambientes de mercado.
O valor central da estratégia reside na sua capacidade de filtragem de sinais, que aumenta significativamente a qualidade dos sinais de negociação, desencadeando negociações somente quando o RSI está em um nível específico e ocorre um desvio de preço ao mesmo tempo. No entanto, os usuários precisam estar atentos ao risco e à sensibilidade de parâmetros da tendência do mercado e encontrar os melhores parâmetros para o mercado e o período de tempo específicos através do retrospecto.
A estratégia tem o potencial de aumentar ainda mais o seu desempenho e adaptabilidade através de direções de otimização como análise de múltiplos prazos, confirmação de volume de transação, parâmetros de auto-adaptação e mecanismos de gerenciamento de risco aprimorados. Esta é uma ferramenta digna de pesquisa e aplicação para os comerciantes que buscam estratégias de negociação quantitativas orientadas a indicadores técnicos.
/*backtest
start: 2024-06-13 00:00:00
end: 2025-06-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy(title="RSI Divergence Strategy", shorttitle="RSI Divergence Strategy", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1, slippage=0, initial_capital=100000, currency=currency.USD, process_orders_on_close=false)
// RSI Settings
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
calculateDivergence = input.bool(true, title="Calculate Divergence", group="RSI Settings", tooltip="Required for divergence signals")
// Added RSI Level Inputs
longEntryLevel = input.float(35.0, "Long Entry RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
shortEntryLevel = input.float(76.0, "Short Entry RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
longExitLevel = input.float(80.0, "Long Exit RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
shortExitLevel = input.float(54.1, "Short Exit RSI", minval=0, maxval=100, step=0.1, group="RSI Levels")
// RSI Calculation
change = ta.change(rsiSourceInput)
up = ta.rma(math.max(change, 0), rsiLengthInput)
down = ta.rma(-math.min(change, 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
// Divergence Parameters
lookbackRight = 5
lookbackLeft = 5
rangeUpper = 60
rangeLower = 5
_inRange(bool cond) =>
bars = ta.barssince(cond)
rangeLower <= bars and bars <= rangeUpper
var bool plFound = false
var bool phFound = false
var bool bullCond = false
var bool bearCond = false
// Global variables to store _inRange results
var bool inRangePlFound = false
var bool inRangePhFound = false
rsiLBR = rsi[lookbackRight]
// Update _inRange results on every bar
inRangePlFound := _inRange(plFound[1])
inRangePhFound := _inRange(phFound[1])
if calculateDivergence
// Regular Bullish Divergence
plFound := not na(ta.pivotlow(rsi, lookbackLeft, lookbackRight))
rsiHL = rsiLBR > ta.valuewhen(plFound, rsiLBR, 1) and inRangePlFound
lowLBR = low[lookbackRight]
priceLL = lowLBR < ta.valuewhen(plFound, lowLBR, 1)
bullCond := priceLL and rsiHL and plFound
// Regular Bearish Divergence
phFound := not na(ta.pivothigh(rsi, lookbackLeft, lookbackRight))
rsiLH = rsiLBR < ta.valuewhen(phFound, rsiLBR, 1) and inRangePhFound
highLBR = high[lookbackRight]
priceHH = highLBR > ta.valuewhen(phFound, highLBR, 1)
bearCond := priceHH and rsiLH and phFound
// Strategy Entries with customizable RSI levels
if bullCond and rsi < longEntryLevel
strategy.entry("Long", strategy.long)
if bearCond and rsi > shortEntryLevel
strategy.entry("Short", strategy.short)
// Strategy Exits with customizable RSI levels
if rsi >= longExitLevel
strategy.close("Long")
if rsi <= shortExitLevel
strategy.close("Short")
// ———————— Visualizations ———————— //
// Plot RSI line
rsiColor = rsi > 70 ? color.new(#ff5252, 0) : rsi < 30 ? color.new(#4bf335, 0) : color.new(#b8b8b8, 0)
plot(rsi, title="RSI", color=rsiColor, linewidth=2, style=plot.style_line)
// Plot horizontal levels
hline(longEntryLevel, "Long Entry", color=color.new(#4bf335, 0), linestyle=hline.style_solid)
hline(shortEntryLevel, "Short Entry", color=color.new(#ed1404, 0), linestyle=hline.style_solid)
hline(longExitLevel, "Long Exit", color=color.new(#4bf335, 0), linestyle=hline.style_dashed)
hline(shortExitLevel, "Short Exit", color=color.new(#ed1404, 0), linestyle=hline.style_dashed)
// Plot traditional levels
ob = 70
os = 30
hline(ob, "Overbought", color=color.new(#ff5252, 70), linestyle=hline.style_dotted)
hline(os, "Oversold", color=color.new(#4bf335, 70), linestyle=hline.style_dotted)
// Background colors
bgcolor(rsi >= ob ? color.new(#ff5252, 90) : na)
bgcolor(rsi <= os ? color.new(#4bf335, 90) : na)
bgcolor(rsi > os and rsi < ob ? color.new(#424242, 95) : na)
// ———————— DIVERGENCE VISUALS ———————— //
// Position labels below RSI for bullish, above for bearish
bullLabelY = math.max(0, rsi[lookbackRight] - 15) // Position below RSI line
bearLabelY = math.min(100, rsi[lookbackRight] + 15) // Position above RSI line
// CORRECTED: Pass y-coordinate as first argument for absolute positioning
plotshape(bullCond ? bullLabelY : na, title="Bullish Divergence", text="BULL", style=shape.labelup,
location=location.absolute, color=color.new(#4bf335, 50), textcolor=color.white,
size=size.tiny, offset=-lookbackRight)
plotshape(bearCond ? bearLabelY : na, title="Bearish Divergence", text="BEAR", style=shape.labeldown,
location=location.absolute, color=color.new(#ed1404, 50), textcolor=color.white,
size=size.tiny, offset=-lookbackRight)