RSI y estrategia de divergencia alcista de RSI suavizada

El autor:¿ Qué pasa?, Fecha: 2024-03-01 12:11:58
Las etiquetas:

img

Resumen general

Esta estrategia combina el indicador RSI y el indicador RSI suavizado para encontrar oportunidades de compra en los mínimos de precios. Cuando el RSI hace un nuevo mínimo mientras que el precio no hace un nuevo mínimo, se considera como una señal de divergencia alcista.

Estrategia lógica

  1. Calcular el indicador RSI con 14 períodos.
  2. Calcular el RSI suavizado utilizando el doble WMA para lograr un efecto suavizador.
  3. Compruebe si el índice está por debajo del nivel de 30, estado de sobreventa.
  4. Compruebe si el RSI suavizado está por debajo de 35, con una tendencia direccional más fuerte.
  5. Compruebe si el punto más bajo del RSI está por debajo de 25.
  6. Calcular la divergencia alcista del RSI, encontrar RSI haciendo nuevos mínimos mientras que el precio no.
  7. Requiere un índice de variabilidad suavizado tendencia a la baja dura más de 3 períodos.
  8. Se activará la señal de compra cuando se cumplan todas las condiciones anteriores.
  9. Establezca las condiciones de stop loss y take profit.

La estrategia se basa principalmente en la característica de reversión del RSI, combinada con el juicio de tendencia del RSI suavizado, para comprar cuando el precio está bajo presión mientras que el RSI está sobrevendido.

Análisis de ventajas

  1. La combinación de dos indicadores RSI mejora el rendimiento de la estrategia.
  2. Utilice la característica de reversión del RSI, tiene una ventaja de probabilidad.
  3. El juicio de tendencia del RSI suavizado ayuda a evitar falsas reversiones.
  4. La lógica completa de stop loss y take profit puede limitar los riesgos.

Análisis de riesgos

  1. No se puede evitar por completo la probabilidad de que el RSI falle.
  2. El RSI suavizado tiene un efecto de retraso, puede perder el mejor momento de entrada.
  3. Si el stop loss está demasiado suelto, el riesgo de pérdidas crecerá.

Puede optimizar el tiempo de entrada ajustando los parámetros del RSI. Acercar la distancia de stop loss para detenerse más rápido. Combinar con otros indicadores para juzgar el riesgo de tendencia, reducir la tasa de inversión falsa.

Direcciones de optimización

  1. Eficacia de ensayo del RSI bajo diferentes conjuntos de parámetros.
  2. Mejorar el cálculo del RSI suavizado para una mejor calidad de suavizado.
  3. Ajusta el stop loss y toma puntos de ganancia, encuentra la relación riesgo-recompensa óptima.
  4. Añadir indicadores de impulso, etc., para evitar situaciones de bajo impulso.

Mejorar aún más el rendimiento de la estrategia ajustando los parámetros y combinando más indicadores.

Conclusión

La combinación dual de RSI aprovecha plenamente el efecto de reversión y también introduce incertidumbre por la divergencia del indicador. Es una idea típica de estrategia de indicador. Puede mejorar la adaptabilidad del indicador a través de pruebas y optimización incesantes.


/*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")


Más.