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.
La estrategia se basa principalmente en los siguientes indicadores de evaluación:
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.
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.
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.
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
La estrategia tiene las siguientes ventajas:
La estrategia también tiene algunos riesgos:
Puede optimizar aún más:
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()