O recurso está a ser carregado... Carregamento...

Estratégia de inversão da tendência do RSI

Autora:ChaoZhang, Data: 2024-04-28 13:33:19
Tags:RSIATR

img

Resumo

A estratégia de reversão de tendência do RSI é uma estratégia quantitativa de negociação baseada no índice de força relativa (RSI) e na faixa verdadeira média (ATR). Ajusta dinamicamente os níveis de take profit e stop loss (TP / SL) para se adaptar às rápidas flutuações do mercado e capturar oportunidades de reversão de tendência. A estratégia gira em torno do RSI, combinado com o ATR para medir a volatilidade, e constrói duas bandas dinâmicas adaptativas como base para abertura e fechamento de posições. Esta estratégia pode ser usada independentemente ou como um módulo de take profit e stop loss para outras estratégias. Foi bem testado em dados de 15 minutos de ações como Tesla (TSLA), Apple (AAPL) e Nvidia (NDAV).

Princípio da estratégia

O núcleo da Estratégia de Reversão de Tendência do RSI reside na construção de bandas dinâmicas TP/SL. Primeiro, ele usa as funções personalizadas highest_custom e lowest_custom para encontrar os preços mais altos e mais baixos desde o último cruzamento, formando a base das bandas. Em seguida, ele calcula o RSI e o ATR com um comprimento especificado pelo usuário e realiza os seguintes cálculos:

  1. A taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação.
  2. A taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa de variação da taxa.

Aqui, o multiplicador é um fator de expansão de banda definido pelo usuário. Se o preço quebra acima da banda superior, ele vai longo; se ele quebra abaixo da banda inferior, ele vai curto. As cores dessas duas bandas também mudam de acordo com a posição do preço em relação às bandas, tornando mais fácil de observar.

Vantagens da estratégia

  1. Alta adaptabilidade: As faixas TP/SL podem ajustar-se automaticamente com base na volatilidade dos preços, respondendo prontamente às alterações do mercado.
  2. Parâmetros ajustáveis: ao ajustar parâmetros como comprimento e multiplicador, a sensibilidade da estratégia pode ser controlada de forma flexível.
  3. Lógica clara: A estrutura do código é razoável e fácil de entender e desenvolver.
  4. Ampla aplicabilidade: pode ser utilizado independentemente como uma estratégia ou adicionar funcionalidade TP/SL a outras estratégias.
  5. Eficiência computacional: Ao usar funções personalizadas como highest_custom, evita os cálculos repetitivos causados pelo uso de tipos de série.

Riscos estratégicos

  1. A seleção incorreta de parâmetros pode trazer riscos adicionais, por exemplo, um comprimento pequeno pode levar a negociações frequentes e um multiplicador grande pode levar a perdas de parada excessivamente soltas.
  2. O desempenho pode ser fraco em condições específicas de mercado, tais como a consolidação frequente e as falsas rupturas num mercado volátil, o que pode resultar em mais operações perdedoras.
  3. A estratégia em si não tem uma função de avaliação da tendência e deve ser utilizada em combinação com outros sinais.

Orientações para a otimização da estratégia

  1. Considere adicionar indicadores de tendência, tais como médias móveis, para negociar apenas em pontos de inversão na direção da tendência principal.
  2. Otimizar parâmetros para encontrar a melhor combinação de comprimento, multiplicador, etc.
  3. Combinar com outros indicadores técnicos ou indicadores de sentimento de mercado para melhorar a precisão dos pontos de entrada e saída.
  4. Adicionar a gestão de posições para controlar estritamente a exposição ao risco de cada negociação.

Resumo

A estratégia de reversão de tendência do RSI utiliza o RSI e o ATR para construir bandas adaptativas que podem ajustar dinamicamente os pontos TP/SL e responder prontamente às mudanças do mercado. A estratégia tem lógica clara, ampla aplicabilidade e pode ser uma ferramenta poderosa para os traders quantitativos. No entanto, no uso prático, ainda é necessário prestar atenção à seleção de parâmetros e controle de risco, e recomenda-se usá-la em combinação com outros sinais de indicador para melhorar o desempenho geral. A estratégia tem mais espaço para otimização, como adicionar filtros de tendência e otimização de parâmetros.


/*backtest
start: 2023-04-22 00:00:00
end: 2024-04-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Trend Reversal", overlay=true, max_bars_back = 4999, calc_on_every_tick = false)


//INPUTS 
rsi_length = input.int(title = "Lenght", defval = 8)
rsi_mult = input.float(title = "Multiplier", defval = 1.5, step = .05)
lookback = input.int(title = "Delay to prevent idealization", defval = 1)
sltp = input.float(title = "Minimum Difference", defval = 10)
src = input.source(title = "Source Input", defval = close)

//PARAMETERS INITILIZATION
hclose = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, src)
//FUNCTION INITILIZATION
highest_custom(src, length) =>
    x = src
    for i = 0 to length
        if src[i] > x
            x := src[i]
    x
lowest_custom(src, length) => 
    x = src
    for i = 0 to length
        if src[i] < x
            x := src[i]
    x
rsilev(src, length, mult, sltp) =>
    sl = (100 - sltp) / 100
    tp = (100 + sltp) / 100
    var bool crossup = na
    var bool crossdown = na
    var float dir = na
    dir_change = ta.change(dir)
    var float BearGuy = 0
    BullGuy = ta.barssince(crossup or crossdown)
    if na(BullGuy)
        BearGuy += 1
    else
        BearGuy := BullGuy
    var float upper = na
    var float lower = na
    rsilower = ta.rsi(src, length)
    rsiupper = math.abs(ta.rsi(src, length) - 100)
    atr = ta.atr(length) / src
    lower := highest_custom(math.max(highest_custom(highest_custom(src, BearGuy) * (1 - (atr + ((1 / (rsilower) * mult)))), BearGuy), src * sl), BearGuy)
    upper := lowest_custom(math.min(lowest_custom(lowest_custom(src, BearGuy) * (1 + (atr + ((1 / (rsiupper) * mult)))), BearGuy), src * tp), BearGuy)
    var float thresh = na
    if na(thresh)
        thresh := lower
    if na(dir)
        dir := 1
    if crossdown
        dir := -1
    if crossup
        dir := 1
    if dir == 1
        thresh := lower
    if dir == -1
        thresh := upper
    crossup := ta.crossover(src, thresh)
    crossdown := ta.crossunder(src, thresh)
    thresh

rsiclose = rsilev(hclose, rsi_length, rsi_mult, sltp)

//PLOTTING
var color col = color.lime
if hclose > rsiclose
    col := color.lime
if hclose < rsiclose
    col := color.red
plot(rsiclose, linewidth = 2, color = col)

//STRATEGY
buy = ta.crossover(hclose, rsiclose)
sell = ta.crossunder(hclose, rsiclose)

if buy[lookback]
    strategy.entry("long", strategy.long)
if sell[lookback]
    strategy.entry("Short", strategy.short)

Relacionados

Mais.