Estrategia de negociación cuantitativa del RSI y de las bandas de Bollinger

El autor:¿ Qué pasa?, fecha: 2024-01-08 10:16:22
Las etiquetas:

img

Resumen general

Esta estrategia combina el índice de fuerza relativa (RSI) y las bandas de Bollinger para identificar oportunidades comerciales, pertenecientes a las estrategias de reversión media en el comercio cuantitativo.

Estrategia lógica

  1. Utilice el indicador RSI para juzgar si el mercado está sobrevendido.

  2. Cuando el precio rebota desde la banda inferior y se rompe por encima de la banda media, la dirección larga termina.

  3. Combine la señal de sobreventa del RSI y la señal de ruptura de las bandas de Bollinger para establecer puntos de entrada de compra.

Análisis de ventajas

  1. La estrategia combina el indicador de reversión media RSI y el indicador de canal Bollinger Bands para localizar los puntos de entrada con mayor precisión.

  2. El indicador RSI puede filtrar muchas rupturas falsas y reducir las operaciones innecesarias.

  3. Las bandas de Bollinger actúan como un stop loss para controlar el riesgo de cada operación.

Análisis de riesgos

  1. El indicador RSI puede dar señales erróneas, lo que lleva a perder oportunidades de compra.

  2. La configuración incorrecta de los parámetros de las bandas de Bollinger puede dar lugar a que el stop loss sea demasiado flexible o estricto.

  3. Elegir instrumentos de negociación inadecuados, como las acciones de pequeña capitalización con mayor riesgo de liquidez.

Dirección de optimización

  1. Prueba diferentes combinaciones de parámetros como el período RSI, el período de Bollinger y el multiplicador para encontrar parámetros óptimos.

  2. Incorporar otros indicadores como KD, MACD para establecer condiciones de compra más estrictas para filtrar las señales.

  3. En el caso de los instrumentos de negociación de tipo I, las pérdidas por volatilidad se determinarán en función de la volatilidad de los mismos.

Conclusión

Esta estrategia utiliza la lógica de comprar en los mínimos del RSI y vender en los máximos de Bollinger, pertenecientes a las estrategias de reversión media. En comparación con el uso de indicadores individuales como el RSI o las bandas de Bollinger, esta estrategia puede localizar los puntos de entrada y salida con más precisión, logrando así mejores resultados. Los próximos pasos podrían ser mejorar a través de la optimización de parámetros, filtrado de señales, estrategias de stop loss, etc.


/*backtest
start: 2023-12-08 00:00:00
end: 2024-01-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

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

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
rsiuse = input(true, defval = true, title = "Use RSI")
bbuse = input(true, defval = true, title = "Use BB")
showbb = input(true, defval = true, title = "Show BB Overlay")
bbperiod = input(20, defval = 20, minval = 2, maxval = 1000, title = "BB period")
bbsource = input(ohlc4, title = "BB source")
bbmult = input(2, defval = 2, minval = 1, maxval = 100, title = "BB Mult")
rsiperiod = input(7, defval = 7, minval = 2, maxval = 1000, title = "RSI period")
rsisource = input(close, title = "RSI source")
rsilimit = input(30, defval = 30, minval = 1, maxval = 49, title = "RSI Limit")
fromyear = input(1900, defval = 1900, 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")

//RSI
rsi = rsi(rsisource, rsiperiod)

//BB
basis = sma(bbsource, bbperiod)
dev = bbmult * stdev(bbsource, bbperiod)
upper = basis + dev
lower = basis - dev

//Overlay
col = showbb ? blue : na
plot(upper, color = col)
plot(basis, color = col)
plot(lower, color = col)

//Signals
up = (rsi < rsilimit or rsiuse == false) and (low < lower or bbuse == false)
cl = close > open

//Trading
lot = 0.0 
lot := strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1]
if up
    strategy.entry("Long", strategy.long, lot)
if cl
    strategy.entry("Close", strategy.short, 0)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

Más.