Estrategia de reversión de la combinación de indicadores de RSI con doble media móvil

El autor:¿ Qué pasa?, fecha: 2023-11-10 18:01:09
Las etiquetas:

img

Resumen general

Esta estrategia combina la doble media móvil, el índice de fuerza relativa (RSI) y el SAR parabólico (PSAR) para identificar los puntos de inversión de precios y tomar decisiones de compra y venta en consecuencia.

Principios

La estrategia utiliza principalmente los siguientes indicadores técnicos para determinar los puntos de inversión de precios:

  1. Promedio móvil doble: Calcula el promedio móvil rápido (línea rápida de MA) y el promedio móvil lento (línea lenta de MA). Cuando la línea rápida cruza por encima de la línea lenta, indica un mercado alcista y va largo. Cuando la línea rápida cruza por debajo de la línea lenta, indica un mercado bajista y va corto.

  2. Indicador RSI: el RSI juzga las condiciones de sobrecompra y sobreventa calculando la ganancia media de cierre y la pérdida media de cierre durante un período de tiempo.

  3. Indicador PSAR: SAR parabólico indica la dirección de la tendencia. Los puntos SAR por debajo del precio indican mercado alcista y por encima del precio indican mercado bajista.

  4. Indicador ADX: ADX mide la fuerza de una tendencia calculando el movimiento direccional.

La lógica para las señales de compra y venta es la siguiente:

Signales de compra: el MA rápido cruza por encima del MA lento, el RSI por debajo de 30 (sobreventa), los puntos SAR por encima del precio, el ADX por encima de 20.

Signales de venta: el MA rápido cruza por debajo del MA lento, el RSI por encima de 70 (sobrecomprado), los puntos SAR por debajo del precio, el ADX por encima de 20.

Cuando ocurra una señal de compra o venta, tome una posición con el 10% del capital, respectivamente. Cierre la posición oportunamente cuando la señal de reversión falla.

Ventajas

  • Los MAs duales determinan la dirección de la tendencia principal, con RSI y SAR filtrando señales falsas, que pueden identificar con precisión los puntos de reversión.

  • La combinación de varios indicadores evita señales erróneas de un solo indicador.

  • El stop loss evita riesgos excesivos.

  • La lógica simple y clara hace que sea fácil de implementar.

  • Funciona tanto para tendencias alcistas como bajistas.

Riesgos y soluciones

  • Los MAs dobles pueden tener una ruptura falsa. Considere períodos MA más largos o agregar bandas de Bollinger para confirmar una ruptura verdadera.

  • El RSI puede generar señales incorrectas si no se establece correctamente. Ajuste fino de los parámetros del RSI y agregue otros indicadores para confirmar las señales del RSI.

  • Suspenda las operaciones cuando el ADX esté por debajo de 20 para evitar inversiones en los mercados sin dirección o acorta el período de ADX.

  • SetStringry stop loss puede causar pérdidas innecesarias. Establezca un stop loss razonable basado en la volatilidad del mercado.

  • Periodos de gestión de la rentabilidad ajustados a una frecuencia de operación más baja.

Mejora

  • Probar diferentes períodos de admisión máxima para encontrar la combinación óptima.

  • Prueba diferentes parámetros del RSI para una mejor evaluación de la sobrecompra/sobreventa.

  • Agregue otros indicadores como bandas de Bollinger, KDJ para enriquecer la lógica.

  • Establecer un stop loss dinámico basado en diferentes productos y mercados.

  • Agregue el tamaño de la posición para seguir mejor las tendencias.

  • Prueba diferentes parámetros de ADX para encontrar el mejor valor para determinar la fuerza de la tendencia.

  • Añadir la función de pérdida de parada automática.

Conclusión

Esta estrategia identifica la dirección de la tendencia principal utilizando dos MAs, y utiliza RSI, SAR para filtrar señales adicionales. Puede determinar efectivamente los puntos de inversión después de la optimización de parámetros y detectar tendencias alrededor de las reversiones. En la práctica, la gestión del riesgo mediante un stop loss adecuado y la optimización continua de parámetros son importantes.


/*backtest
start: 2023-10-10 00:00:00
end: 2023-11-09 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
//Based on Senpai BO 3
strategy(title="Senpai_Strat_3", shorttitle="Senpai_Strat_3", overlay=false, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
src = close

//psar
start = input(0.02)
increment = input(0.02)
maximum = input(0.2)
psar = sar(start, increment, maximum)


//ADX Init
adxlen = input(30, title="ADX Smoothing")	
dilen = input(30, title="DI Length")	
dirmov(len) =>	
	up = change(high)
	down = -change(low)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, len) / truerange)
	minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / truerange)
	[plus, minus]
	
adx(dilen, adxlen) => 	
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]
	
[sig, up, down] = adx(dilen, adxlen)	


// BB Init
source = close
length = input(50, minval=1)
mult = input(0.5, title="Mult Factor", minval=0.001, maxval=50)
alertLevel=input(0.1)
impulseLevel=input(0.75)
showRange = input(false, type=bool)


//RSI CODE
up1 = rma(max(change(src), 0), 14)
down1 = rma(-min(change(src), 0), 14)
rsi = down1 == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up1 / down1))


//BB CODE
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.05
bbi = bbr - nz(bbr[1]) 

//////////////////// Algo

//if (rsi>50 and n1>n2)
   //strategy.exit("Close", "Short")
  // strategy.entry("Long", strategy.long)
//if (rsi<50 and n2>n1)
   //strategy.exit("Close", "Long")
//   strategy.entry("Short", strategy.short)

//col = ma30 > ma50 > ma200 and rsi <=53?lime: ma50 < ma200  and rsi >= 60?red : silver
//short1 =  sig<18.5 and high>=upper and rsi>=70 and psar<close = 100%
//long1 = sig<18.5 and low<=lower and rsi<=30 and psar>close = 100%
short1 =  sig<18.5 and high>=upper and rsi>=70 and psar<close
long1 = sig<18.5 and low<=lower and rsi<=30 and psar>close

//Entry

long = long1[1] == 0 and long1 == 1
short = short1[1] == 0 and short1 == 1
longclose = long[3] == 1
shortclose = short[3] == 1
strategy.entry("short", strategy.short,qty = 10, when=short)
strategy.entry("long", strategy.long,qty=10, when=long)
strategy.close("long",when=longclose)
strategy.close("short",when=shortclose)



/////////////////////
///PLOT

plot(long,"long",color=green,linewidth=1)
plot(short,"short",color=red,linewidth=1)
plot(longclose,"close",color=blue,linewidth=1)
plot(shortclose,"close",color=orange,linewidth=1)


//plot(short,"short",color=red,linewidth=1)
//

//strategy.exit(id="long",qty = 100000,when=longclose)
//strategy.exit(id="short",qty = 100000,when=shortclose)

//strategy.exit(id="Stop", profit = 20, loss = 100)

Más.