Estrategia de negociación rápida de brechas de RSI para criptomonedas

El autor:¿ Qué pasa?, Fecha: 2023-11-27 11:22:19
Las etiquetas:

img

Resumen general: Esta es una estrategia de trading de brechas RSI rápida diseñada para los mercados de criptomonedas. Utiliza indicadores de RSI rápidos y patrones de brechas en gráficos de velas para localizar oportunidades comerciales.

Principios: La estrategia utiliza dos técnicas principales: indicadores rápidos de RSI y patrones de brechas.

En primer lugar, calcula un indicador RSI rápido basado en solo 7 velas. Esto hace que el RSI sea más sensible para detectar rápidamente las condiciones de sobrecompra / sobreventa. El límite superior del RSI se establece en 70 y el límite inferior en 30.

En segundo lugar, detecta patrones de brechas en los gráficos de velas. Las brechas se refieren a espacios vacíos entre el precio de apertura actual y el precio de cierre anterior. Las brechas indican una alta volatilidad y posibles inversiones de tendencia.

Cuando aparezca una brecha hacia abajo mientras el RSI rápido muestra una condición de sobreventa, vaya largo.

Además, la estrategia utiliza otros filtros, incluidos los indicadores SMA y Min / Max, para evitar señales falsas.

Ventajas: La mayor ventaja de esta estrategia es la captura de vueltas de sobrecompra / sobreventa ultra rápidas y oportunidades de inversión de brechas. Es especialmente adecuado para mercados de criptomonedas altamente volátiles para aprovechar los cambios de tendencia rápidos. En comparación con el RSI regular, el RSI rápido reacciona mucho más rápidamente adaptándose a la naturaleza de alta frecuencia del comercio de criptomonedas. Los filtros adicionales también ayudan a eliminar señales falsas y mejorar la confiabilidad.

Riesgos:
Los principales riesgos a los que se enfrenta la estrategia incluyen:

  1. El RSI rápido puede ser demasiado sensible, causando señales falsas excesivas.

  2. Las brechas pueden ser solo oscilaciones normales de precios en lugar de inversiones reales.

  3. Durante los períodos de baja volatilidad, las posiciones pueden mantenerse inactivas durante períodos prolongados.

  4. La configuración incorrecta de parámetros como el período Min/Max podría conducir a señales diluidas y baja eficiencia.

En consecuencia, los siguientes métodos podrían ayudar a mitigar los riesgos anteriores:

  1. Ajustar los parámetros del RSI rápido y aumentar el período del RSI para que sea menos sensible.

  2. Aplica un stop loss dinámico para obtener ganancias.

  3. Optimizar la tasa de participación en la estrategia. Limitar la participación durante entornos de baja volatilidad.

  4. Prueba y optimización continuas de los parámetros para garantizar ajustes robustos.

Mejoramiento: Las principales direcciones de optimización incluyen:

  1. Explore otros indicadores como MACD, KDJ combinados con brechas para mejorar la precisión.

  2. Construir mecanismos de stop loss adaptativos basados en la volatilidad del mercado.

  3. Incorporar indicadores de volumen como OBV para confirmar la reversión después de los huecos.

  4. Optimice los parámetros del filtro como el período Min/Max para descubrir los mejores ajustes para reducir las señales falsas.

  5. Investiga la adaptabilidad de los parámetros en diferentes criptoactivos.

Estos esfuerzos podrían mejorar significativamente la estabilidad, adaptabilidad y fiabilidad de la estrategia.

Conclusión: En resumen, la estrategia de trading de brechas RSI rápida es un enfoque eficiente diseñado explícitamente para los mercados de criptomonedas volátiles.


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

//Noro
//2018

//@version=3
strategy(title = "Noro's Fast RSI Strategy v1.5", shorttitle = "Fast RSI str 1.5", overlay = true)

//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(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 
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
    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
    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.