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.
Utilice el indicador RSI para juzgar si el mercado está sobrevendido.
Cuando el precio rebota desde la banda inferior y se rompe por encima de la banda media, la dirección larga termina.
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.
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.
El indicador RSI puede filtrar muchas rupturas falsas y reducir las operaciones innecesarias.
Las bandas de Bollinger actúan como un stop loss para controlar el riesgo de cada operación.
El indicador RSI puede dar señales erróneas, lo que lleva a perder oportunidades de compra.
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.
Elegir instrumentos de negociación inadecuados, como las acciones de pequeña capitalización con mayor riesgo de liquidez.
Prueba diferentes combinaciones de parámetros como el período RSI, el período de Bollinger y el multiplicador para encontrar parámetros óptimos.
Incorporar otros indicadores como KD, MACD para establecer condiciones de compra más estrictas para filtrar las señales.
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.
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()