La estrategia de Noro para el avance rápido de la RSI

El autor:¿ Qué pasa?, Fecha: 2023-09-12 11:40:02
Las etiquetas:

Este artículo detallará la lógica detrás de la Estrategia de Apertura RSI Rápida de Noro, explicará cómo se generan las señales comerciales y analizará las ventajas y riesgos potenciales de esta estrategia.

I. Resumen de la estrategia

Esta estrategia utiliza principalmente el indicador RSI para generar señales comerciales, combinadas con filtrado de velas y avances mínimos/máximos como juicios auxiliares, formando un sistema completo de decisión largo/corto.

II. Detalles de la estrategia

  1. Establecimiento rápido del RSI

La estrategia utiliza un RSI rápido de longitud 7 para capturar señales de tendencias del mercado a través de oscilaciones rápidas del RSI.

  1. Filtración de candeleros

La estrategia filtra las señales RSI utilizando el tamaño del cuerpo de las velas sma, solo considerando las señales RSI en velas con un tamaño del cuerpo mayor que el tamaño del cuerpo promedio de 5 días, evitando las whipssaws.

  1. Proceso de desarrollo de la tecnología

La estrategia comprueba si se produjeron brechas mínimas/máximas en los últimos mmbars, combinada con el nivel del RSI para determinar reversiones inferiores y desgloses superiores.

  1. Resumen de las señales de negociación

Signales largos: RSI cruza por debajo de 30, tamaño corporal excede el tamaño corporal promedio, y min rompe soportes.

Señales cortas: RSI cruza por encima de 70, tamaño corporal excede el tamaño corporal promedio, y resistencias máximas de rotura.

Se trata de una señal de salida: cuando el RSI cruza los límites en dirección opuesta a la posición.

III. Ventajas de la Estrategia

  1. Los parámetros RSI optimizados capturan rápidamente el cambio de tendencia.

  2. La combinación con los candelabros y el min/max previene los golpes innecesarios.

  3. El mecanismo de stop-loss se elimina cuando el RSI repassa los límites.

IV. Riesgos de la estrategia

  1. RSI propenso a señales falsas, necesita confirmación auxiliar.

  2. Los parámetros optimizados sólo pueden adaptarse a períodos de mercado específicos.

  3. El mecanismo de stop loss puede ser demasiado mecánico, incapaz de controlar grandes pérdidas en un solo stop loss.

V. Conclusión

Esta estrategia integra múltiples indicadores técnicos para seguir una tendencia robusta. Pero se deben tener en cuenta los riesgos de sobreajuste de backtest y stop loss, y el rendimiento en vivo debe evaluarse con precaución.


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

//Noro
//2018

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

//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")
usebc = input(true, defval = true, title = "Use BarColor Strategy")
usesma = input(false, defval = false, title = "Use SMA Filter")
smaperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "SMA Filter Period")
fast = input(7, defval = 7, minval = 2, maxval = 50, title = "Fast 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), fast)
fastdown = rma(-min(change(rsisrc), 0), fast)
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)
abody = sma(body, 10)

//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 > abody / 5 and usersi
dn1 = bar == 1 and (strategy.position_size == 0 or close > strategy.position_avg_price) and uprsi and body > abody / 5 and usersi
up2 = mins and (close > sma or usesma == false) and fastrsi < 70 and usemm
dn2 = maxs and (close < sma or usesma == false) and fastrsi > 30 and usemm 
up3 = sma(bar, 2) == -1 and usebc
dn3 = sma(bar, 2) == 1 and usebc
exit = ((strategy.position_size > 0 and fastrsi > dnlimit and bar == 1) or (strategy.position_size < 0 and fastrsi < uplimit and bar == -1)) and body > abody / 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 or up3
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn1 or dn2 or dn3
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Más.