RSI e estratégia de divergência de alta do RSI suavizada

Autora:ChaoZhang, Data: 2024-03-01 12:11:58
Tags:

img

Resumo

Esta estratégia combina o indicador RSI e o indicador RSI suavizado para encontrar oportunidades de compra nos fundos de preço. Quando o RSI faz uma nova baixa enquanto o preço não faz uma nova baixa, é considerado um sinal de divergência de alta. Adicionar o julgamento da tendência do RSI suavizado pode melhorar o desempenho da estratégia.

Estratégia lógica

  1. Calcular o indicador RSI com 14 períodos.
  2. Calcular o RSI suavizado utilizando a WMA dupla para obter o efeito de suavização.
  3. Verifique se o RSI está abaixo do nível 30, estágio de sobrevenda.
  4. Verifique se o RSI suavizado está abaixo de 35, com tendência direcional mais forte.
  5. Verifique se o ponto mais baixo do RSI está abaixo de 25.
  6. Calcule a divergência de alta do RSI, encontre o RSI fazendo uma nova baixa enquanto o preço não.
  7. Requer RSI suavizado tendência de baixa dura mais de 3 períodos.
  8. Ativar o sinal de compra quando todas as condições acima forem cumpridas.
  9. Configure as condições de stop loss e take profit.

A estratégia baseia-se principalmente na característica de reversão do RSI, combinando-se com o julgamento da tendência do RSI suavizado, para comprar quando o preço está sob pressão enquanto o RSI está sobrevendido.

Análise das vantagens

  1. A combinação de dois indicadores RSI melhora o desempenho da estratégia.
  2. Utilize o recurso de reversão do RSI, tem uma vantagem de probabilidade.
  3. O julgamento da tendência do RSI suavizado ajuda a evitar falsas inversões.
  4. A lógica completa de stop loss e take profit pode limitar os riscos.

Análise de riscos

  1. A probabilidade de falha da inversão do RSI não pode ser completamente evitada.
  2. O RSI suavizado tem efeito de atraso, pode perder o melhor momento de entrada.
  3. Stop-loss demasiado solto, risco de expansão das perdas.

Pode otimizar o tempo de entrada ajustando os parâmetros do RSI. Apertar a distância de stop loss para uma parada mais rápida. Combinar com outros indicadores para julgar o risco de tendência, reduzir a taxa de reversão falsa.

Orientações de otimização

  1. Efectividade do ensaio do RSI sob diferentes conjuntos de parâmetros.
  2. Melhorar o cálculo do RSI suavizado para uma melhor qualidade de suavização.
  3. Ajuste o stop loss e os pontos de lucro, encontre a melhor relação risco-recompensa.
  4. Adicionar indicadores de momento, etc., para evitar situações de baixo momento.

Melhorar ainda mais o desempenho da estratégia através do ajuste dos parâmetros e da combinação de mais indicadores.

Conclusão

A combinação dupla de RSI aproveita plenamente o efeito de reversão, ao mesmo tempo em que introduz incerteza da divergência do indicador. É uma idéia típica de estratégia de indicador. Pode melhorar a adaptabilidade do indicador através de testes e otimização incansáveis.


/*backtest
start: 2024-01-30 00:00:00
end: 2024-02-29 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © BigBitsIO

//@version=4
strategy(title="RSI and Smoothed RSI Bull Div Strategy [BigBitsIO]", shorttitle="RSI and Smoothed RSI Bull Div Strategy [BigBitsIO]", overlay=true, pyramiding=1, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=.1, slippage=0)


TakeProfitPercent = input(3, title="Take Profit %", type=input.float, step=.25)
StopLossPercent = input(1.75, title="Stop Loss %", type=input.float, step=.25)

RSICurve = input(14, title="RSI Lookback Period", type=input.integer, step=1)
BuyBelowTargetPercent = input(0, title="Buy Below Lowest Low In RSI Divergence Lookback Target %", type=input.float, step=.05)
BuyBelowTargetSource = input(close, title="Source of Buy Below Target Price", type=input.source)
SRSICurve = input(10, title="Smoothed RSI Lookback Period", type=input.integer, step=1)
RSICurrentlyBelow = input(30, title="RSI Currently Below", type=input.integer, step=1)
RSIDivergenceLookback = input(25, title="RSI Divergence Lookback Period", type=input.integer, step=1)
RSILowestInDivergenceLookbackCurrentlyBelow  = input(25, title="RSI Lowest In Divergence Lookback Currently Below", type=input.integer, step=1)
RSISellAbove = input(65, title="RSI Sell Above", type=input.integer, step=1)
MinimumSRSIDownTrend = input(3, title="Minimum SRSI Downtrend Length", type=input.integer, step=1)
SRSICurrentlyBelow = input(35, title="Smoothed RSI Currently Below", type=input.integer, step=1)

PlotTarget = input(false, title="Plot Target")


RSI = rsi(close, RSICurve)
SRSI = wma(2*wma(RSI, SRSICurve/2)-wma(RSI, SRSICurve), round(sqrt(SRSICurve))) // Hull moving average

SRSITrendDownLength = 0
if (SRSI < SRSI[1])
    SRSITrendDownLength := SRSITrendDownLength[1] + 1

// Strategy Specific
ProfitTarget = (close * (TakeProfitPercent / 100)) / syminfo.mintick
LossTarget = (close * (StopLossPercent / 100)) / syminfo.mintick
BuyBelowTarget = BuyBelowTargetSource[(lowestbars(RSI, RSIDivergenceLookback)*-1)] - (BuyBelowTargetSource[(lowestbars(RSI, RSIDivergenceLookback)*-1)] * (BuyBelowTargetPercent / 100))

plot(PlotTarget ? BuyBelowTarget : na)



bool IsABuy = RSI < RSICurrentlyBelow and SRSI < SRSICurrentlyBelow and lowest(SRSI, RSIDivergenceLookback) < RSILowestInDivergenceLookbackCurrentlyBelow and BuyBelowTargetSource < BuyBelowTarget and SRSITrendDownLength >= MinimumSRSIDownTrend and RSI > lowest(RSI, RSIDivergenceLookback)
bool IsASell = RSI > RSISellAbove

if IsABuy
    strategy.entry("Positive Trend", true) // buy by market
    strategy.exit("Take Profit or Stop Loss", "Positive Trend", profit = ProfitTarget, loss = LossTarget)
if IsASell
    strategy.close("Positive Trend")


Mais.