Esta estratégia projeta uma estratégia quantitativa de negociação baseada em Bandas de Bollinger e no Índice de Força Relativa (RSI).
A estratégia usa Bandas de Bollinger para determinar tendências de preços e níveis de suporte / resistência. Os preços que se aproximam da faixa de Bollinger inferior são vistos como um sinal de sobrevenda, enquanto os preços que se aproximam da faixa de Bollinger superior são vistos como um sinal de sobrecompra. Ao mesmo tempo, incorpora o indicador RSI para determinar se existem condições de sobrevenda ou sobrecompra.
As regras específicas de negociação são: ir longo quando o preço está abaixo da faixa de Bollinger inferior e o RSI está abaixo de 30; ir curto quando o preço está acima da faixa de Bollinger superior e o RSI está acima de 70. Para obter lucro, defina a faixa de Bollinger média ou a faixa de Bollinger oposta como o nível de lucro. O stop loss é definido em uma certa porcentagem do preço de entrada.
A estratégia combina a capacidade de rastreamento de tendências de Bollinger Bands e o julgamento de sobrecompra/supervenda do RSI para capturar um bom momento de início da tendência.
Em comparação com o uso de um único indicador como Bollinger Bands ou RSI sozinho, esta estratégia utiliza múltiplos indicadores e parâmetros para melhorar a precisão da decisão.
A estratégia depende fortemente da otimização de parâmetros. Configurações incorretas de parâmetros podem levar a tendências em falta ou gerar sinais falsos. Por exemplo, o desajuste do período de Bollinger pode causar tais problemas.
A estratégia também depende do instrumento de negociação. Para ativos altamente voláteis, os parâmetros da banda de Bollinger precisam ser ajustados em conformidade. Para os instrumentos com tendências pouco claras, o desempenho também pode sofrer. Também afetado por custos de transação, deslizamento e eventos extremos do mercado.
Recomenda-se testes de otimização de parâmetros para avaliar os níveis de tomada de lucro/paragem de perdas e o desempenho em diferentes ativos e regimes de mercado.
Vários aspectos podem ser melhorados:
Avaliação e otimização dos parâmetros das bandas de Bollinger e do RSI para melhor corresponder às características dos instrumentos de negociação
Incorporar indicadores adicionais como KDJ, MACD para construir um modelo multifator
Avaliação das estratégias de captação de lucro/stop loss, tais como stop loss ou saída escalada
Realizar ajustes dinâmicos de parâmetros com base em ativos específicos e condições de mercado
Adicionar modelos de aprendizagem de máquina para julgar a qualidade do sinal e os níveis de risco
Esta estratégia integra Bandas de Bollinger e RSI para um sistema abrangente de tendência. Há ainda espaço para melhorar a eficácia e a estabilidade através do ajuste de parâmetros e gestão de riscos.
/*backtest start: 2023-11-01 00:00:00 end: 2023-11-30 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("BB + RSI Estrategia", overlay=true) longitud = input(20, title="Longitud BB", minval=5, maxval=50, step=1) multiplicador = input(2.0, title="Multiplicador BB", type=input.float, step=0.1) timeframe_bb = input("D", title="Marco de Tiempo BB", type=input.resolution) rsi_length = input(14, title="Longitud RSI", minval=5, maxval=50, step=1) rsi_overbought = input(70, title="Nivel de sobrecompra RSI", minval=50, maxval=80, step=1) rsi_oversold = input(30, title="Nivel de sobreventa RSI", minval=20, maxval=50, step=1) take_profit = input("Central", title="Take Profit (banda)", options=["Central", "Opuesta"]) stop_loss = input(2.00, title="Stop Loss", type=input.float, step=0.10) var SL = 0.0 [banda_central, banda_superior, banda_inferior] = security(syminfo.tickerid, timeframe_bb, bb(close, longitud, multiplicador)) rsi_value = rsi(close, rsi_length) comprado = strategy.position_size > 0 vendido = strategy.position_size < 0 if not comprado and not vendido if close < banda_inferior and rsi_value < rsi_oversold // Realizar la compra cantidad = round(strategy.equity / close) strategy.entry("Compra", strategy.long, qty=cantidad, when=cantidad > 0) SL := close * (1 - (stop_loss / 100)) if close > banda_superior and rsi_value > rsi_overbought // Realizar la Venta cantidad = round(strategy.equity / close) strategy.entry("Venta", strategy.short, qty=cantidad, when=cantidad > 0) SL := close * (1 + (stop_loss / 100)) if comprado // Verificar el take profit if take_profit == "Central" and close >= banda_central strategy.close("Compra", comment="TP") SL := 0 if take_profit == "Opuesta" and close >= banda_superior strategy.close("Compra", comment="TP") SL := 0 // Verificar el stop loss if close <= SL strategy.close("Compra", comment="SL") SL := 0 if vendido // Verificar el take profit if take_profit == "Central" and close <= banda_central strategy.close("Venta", comment="TP") SL := 0 if take_profit == "Opuesta" and close <= banda_inferior strategy.close("Venta", comment="TP") SL := 0 // Verificar el Stop loss if close >= SL strategy.close("Venta", comment="SL") SL := 0 // Salida plot(SL > 0 ? SL : na, style=plot.style_circles, color=color.red) g1 = plot(banda_superior, color=color.aqua) plot(banda_central, color=color.red) g2 = plot(banda_inferior, color=color.aqua) fill(g1, g2, color=color.aqua, transp=97) // Dibujar niveles de sobrecompra/sobreventa del RSI hline(rsi_overbought, "RSI Overbought", color=color.red) hline(rsi_oversold, "RSI Oversold", color=color.green)