Estratégia de negociação quantitativa baseada em Bandas de Bollinger e RSI


Data de criação: 2023-12-20 15:39:19 última modificação: 2023-12-20 15:39:19
cópia: 0 Cliques: 679
1
focar em
1621
Seguidores

Estratégia de negociação quantitativa baseada em Bandas de Bollinger e RSI

Visão geral

Esta estratégia é baseada em Brinks e um indicador relativamente forte (RSI) para projetar uma estratégia de negociação quantitativa. Esta estratégia combina o acompanhamento de tendências e o julgamento de sobrevenda e sobrevenda, com o objetivo de entrar no mercado no início da tendência e sair de uma situação de sobrevenda e sobrevenda para obter lucro.

Princípio da estratégia

A estratégia usa o Brin para determinar a tendência do preço e os níveis de resistência de suporte. Quando o preço está perto do Brin, é visto como um sinal de supervenda. Quando o preço está perto do Brin, é visto como um sinal de supercompra.

As regras de negociação específicas são: quando o preço está abaixo da trajetória de Brin e o RSI está abaixo de 30, faça uma entrada adicional; quando o preço está acima da trajetória de Brin e o RSI está acima de 70, faça uma entrada em branco. Ao parar o Exit, escolha a linha média da Brin ou a trajetória de Brin na direção oposta como parada. O stop loss é definido como uma porcentagem do preço de entrada.

Vantagens estratégicas

Esta estratégia combina o acompanhamento de tendências da faixa de Bryn e o julgamento do RSI sobre a compra e venda de tendências, permitindo uma melhor compreensão do ponto de partida da tendência. Ao mesmo tempo, as estratégias de parada e parada de perda também são mais claras e favoráveis ao gerenciamento de risco.

A estratégia usa vários indicadores e parâmetros para melhorar a precisão da tomada de decisões, em comparação com o uso de indicadores como o Brinks ou o RSI isoladamente. O desempenho de negociação é mais estável quando os parâmetros são ajustados adequadamente.

Risco estratégico

A estratégia depende principalmente da otimização de parâmetros, e se os parâmetros forem configurados incorretamente, haverá um risco maior. Por exemplo, se os parâmetros do período de correlação não forem combinados, pode-se perder uma tendência ou gerar um falso sinal. Além disso, o ponto de parada de parada também precisa ser cuidadosamente avaliado.

A estratégia também tem uma certa dependência de variedades de negociação. Para variedades com maior volatilidade, é necessário ajustar os parâmetros das bandas de Bryn. Para variedades com tendências pouco evidentes, o efeito também é descontado. Além disso, a estratégia também é afetada pelos custos de negociação, pontos de deslizamento e situações extremas.

Recomenda-se testes de otimização de parâmetros, avaliação de níveis de stop loss e teste de desempenho em diferentes variedades e ambientes de mercado. Ao mesmo tempo, reserva-se espaço para o gerenciamento de riscos.

Direção de otimização

A estratégia pode ser melhorada de várias maneiras:

  1. Avaliar e otimizar os parâmetros do Brin Belt e do RSI para melhor se adaptarem às características das variedades negociadas

  2. Adicionar outros indicadores de julgamento, como KDJ, MACD, etc., formando um modelo multifatorial

  3. Avaliar a estratégia de stop loss, definir stop loss flutuante ou stop loss em lotes

  4. Optimização dinâmica de parâmetros de acordo com a variedade e o contexto de mercado específicos

  5. Adição de modelos de aprendizagem de máquina para avaliar a qualidade do sinal e o nível de risco

Resumir

Esta estratégia integra os indicadores de Brin e RSI, projetando um conjunto mais completo de estratégias de acompanhamento de tendências. Há espaço para melhorar ainda mais a eficácia e a estabilidade através da otimização de parâmetros e gerenciamento de risco. Recomenda-se ajustes e otimização de acordo com as próprias necessidades e preferências de risco, com o objetivo de obter um melhor desempenho.

Código-fonte da estratégia
/*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)