Indicador de impulso RSI Estrategia de negociación de reversión

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

img

Resumen general

Esta estrategia primero calcula el ADX y SMA en marcos de tiempo más altos para identificar la dirección de la tendencia y los cambios. Luego, el RSI se calcula en marcos de tiempo más bajos para identificar las condiciones de sobrecompra y sobreventa para generar señales comerciales.

Estrategia lógica

  1. El ADX en los marcos de tiempo más altos juzga la fuerza de la tendencia.

  2. El SMA en los marcos de tiempo más altos juzga la dirección de la tendencia.

  3. El RSI en los marcos de tiempo más bajos juzga las condiciones de sobrecompra y sobreventa.

  4. Cuando el ADX sube, el SMA sube y el RSI se sobrecompra en un marco de tiempo más bajo, se considera que la tendencia alcista se está fortaleciendo, vaya corto aquí.

  5. Cuando el ADX sube, el SMA cae y el RSI está sobrevendido en un marco de tiempo más bajo, se considera que la tendencia bajista se está fortaleciendo, vaya largo aquí.

Análisis de ventajas

  1. Combina el juicio de tendencia y el comercio de reversión, puede capturar oportunidades de reversión en las principales tendencias.

  2. Utiliza indicadores a través de marcos de tiempo, mejora la fiabilidad de las señales.

  3. La estrategia RSI es simple de entender e implementar.

Análisis de riesgos

  1. Puede optimizar los parámetros para reducir las señales falsas.

  2. El juicio de la tendencia del ciclo principal puede ser erróneo, haciendo que la estrategia no sea adecuada para las condiciones del mercado.

  3. Puede ajustar los parámetros del RSI para reducir el número de operaciones.

Direcciones de optimización

  1. Prueba más combinaciones de parámetros para encontrar la coincidencia óptima entre los parámetros RSI y ADX, SMA.

  2. Añadir un mecanismo de stop loss para controlar la pérdida de una sola operación.

  3. Considerar el indicador de volatilidad para reducir el tamaño de la posición cuando la volatilidad es baja.

  4. Optimizar los precios de entrada y salida específicos, como entrar en corto cuando se rompen los límites anteriores.

Conclusión

Esta estrategia combina el juicio de tendencia y las señales de reversión para encontrar reversiones locales dentro de las tendencias principales. En comparación con el uso exclusivo del RSI, es más confiable y evita quedar atrapado. En general, es una estrategia relativamente conservadora adecuada para los inversores que buscan reducir las falsas señales.


/*backtest
start: 2022-12-27 00:00:00
end: 2024-01-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("RSI scalping", overlay=true)

CustSession 	= input(defval=true,title= "Custom Resolution / TF ? ",type=bool)
SessionTF0	= input(title="Custom Resolution / TF", defval="180")
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
length = input(7, title= "RSI length")
overSold = input( 28, title= "RSI oversold" )
overBought = input( 68, title= "RSI overbought" )

RSI = rsi(close, 7)

res		=	CustSession ? SessionTF0 : period

o = request.security(syminfo.tickerid, res, open)
c = request.security(syminfo.tickerid, res, close)
l = request.security(syminfo.tickerid, res, low)
h = request.security(syminfo.tickerid, res, high)

 // ADX higher time frame
dirmov(len) =>
	up = change(h)
	down = -change(l)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
    truer = request.security(syminfo.tickerid, res, tr)
	truerange = rma(truer, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, 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)

sig = adx(dilen, adxlen)

// SMA higher time frame
len = input(20, minval=1, title="SMA HTF Length")
smma = 0.0
smma := na(smma[1]) ? sma(c, len) : (smma[1] * (len - 1) + c) / len

ADXrising = (sig > sig[1]) and (sig[1] > sig[2]) and (sig[2]  > sig[3]) and (sig > 15)
SMAdrop= (smma < smma[1]) and (smma[1] < smma[2]) and (smma[2] < smma[3])
SMArising = (smma > smma[1]) and (smma[1] > smma[2]) and (smma[2] > smma[3])
longCondition = crossover(RSI, overBought) and ADXrising and SMArising
shortCondition = crossunder(RSI, overSold) and SMAdrop and ADXrising 

if (longCondition)
    strategy.entry("Long entry", strategy.long)

if (shortCondition)
    strategy.entry("Short Entry", strategy.short)

Más.