Estrategia de negociación de reversión rápida del RSI

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

img

Resumen general

La estrategia de inversión de RSI rápida genera señales de trading mediante la combinación del indicador de RSI rápido, el filtro del cuerpo del candelero, el filtro de precio mínimo/máximo y el filtro SMA para determinar los puntos de inversión de tendencia para la inversión de riesgo bajo.

Estrategia lógica

La estrategia se basa principalmente en los siguientes indicadores de evaluación:

  1. Indicador RSI rápido: Calcula el RSI utilizando la función RMA para hacerlo más sensible con el fin de captar más rápidamente las señales de sobrecompra/sobreventa.

  2. Filtro del cuerpo del candelabro: Requiere que el tamaño del cuerpo del candelabro supere 1/5 del promedio del cuerpo de la EMA para filtrar situaciones de baja volatilidad.

  3. Filtro de precios mínimo/máximo: Juzga si el precio alcanza un nuevo máximo o un nuevo mínimo para confirmar la inversión de tendencia.

  4. Filtro SMARequiere precio para romper la línea SMA para confirmación adicional.

Las señales comerciales se generan cuando se activan simultáneamente varias de las condiciones anteriores.

Entrada larga: RSI rápido por debajo del nivel de sobreventa Y cuerpo de la vela > 1/5 del cuerpo de la EMA Y ruptura mínima del precio Y cruces del precio por encima de la SMA

Entrada corta: RSI rápido por encima del nivel de sobrecompra Y cuerpo de la vela > 1/5 del cuerpo de la EMA Y ruptura máxima del precio Y cruces del precio por debajo de la SMA

Salida: RSI rápido vuelve al rango normal

Ventajas

La estrategia tiene las siguientes ventajas:

  1. Captura la volatilidad de las reversiones a corto plazo
  2. El indicador RSI rápido es sensible.
  3. Los filtros múltiples reducen las señales falsas
  4. Riesgo controlado, reducido aprovechamiento

Riesgos y optimización

La estrategia también tiene algunos riesgos:

  1. Riesgo de reversión fallido
  2. Espacio de optimización limitado

Puede optimizar aún más:

  1. Añadir filtro de volumen de operaciones
  2. Implementar el stop loss
  3. Optimiza la combinación de parámetros

Conclusión

En general, se trata de una estrategia de inversión de riesgo a corto plazo de bajo riesgo. Identifica las señales comerciales con RSI rápido y utiliza múltiples filtros para reducir las señales falsas, logrando una inversión de riesgo controlada. La estrategia se puede optimizar aún más y tiene un gran potencial.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-26 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.4", shorttitle = "Fast RSI str 1.4", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usersi = input(true, defval = true, title = "Use Fast RSI Strategy")
usemm = input(true, defval = true, title = "Use Min/Max Strategy")
usesma = input(true, defval = true, title = "Use SMA Filter")
smaperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "SMA Filter Period")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rsibars = input(1, defval = 1, minval = 1, maxval = 20, title = "RSI Bars")
mmbars = input(1, defval = 1, minval = 1, maxval = 5, title = "Min/Max Bars")
showsma = input(false, defval = false, title = "Show SMA Filter")
showarr = input(false, defval = false, title = "Show Arrows")
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Fast RSI
fastup = rma(max(change(rsisrc), 0), rsiperiod)
fastdown = rma(-min(change(rsisrc), 0), rsiperiod)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
upsignal = fastrsi > uplimit ? 1 : 0
dnsignal = fastrsi < dnlimit ? 1 : 0
uprsi = sma(upsignal, rsibars) == 1
dnrsi = sma(dnsignal, rsibars) == 1

//Body
body = abs(close - open)
emabody = ema(body, 30)

//MinMax Bars
min = min(close, open)
max = max(close, open)
minsignal = min < min[1] and bar == -1 and bar[1] == -1 ? 1 : 0
maxsignal = max > max[1] and bar == 1 and bar[1] == 1 ? 1 : 0
mins = sma(minsignal, mmbars) == 1
maxs = sma(maxsignal, mmbars) == 1

//SMA Filter
sma = sma(close, smaperiod)
colorsma = showsma ? blue : na
plot(sma, color = colorsma, linewidth = 3)

//Signals
up1 = bar == -1 and (strategy.position_size == 0 or close < strategy.position_avg_price) and dnrsi and body > emabody / 5 and usersi
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > emabody / 5 and usersi
up2 = mins and (close > sma or usesma == false) and usemm
dn2 = maxs and (close < sma or usesma == false) and usemm 
exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > emabody / 2

//Arrows
col = exit ? black : up1 or dn1 ? blue : up2 or dn2 ? red : na
needup = up1 or up2
needdn = dn1 or dn2
needexitup = exit and strategy.position_size < 0
needexitdn = exit and strategy.position_size > 0
plotarrow(showarr and needup ? 1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needdn ? -1 : na, colorup = blue, colordown = blue, transp = 0)
plotarrow(showarr and needexitup ? 1 : na, colorup = black, colordown = black, transp = 0)
plotarrow(showarr and needexitdn ? -1 : na, colorup = black, colordown = black, transp = 0)

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()

Más.