Estratégia de negociação de tendência adaptável combinando Bandas de Bollinger e RSI

RSI BB MACD
Data de criação: 2024-11-12 11:35:58 última modificação: 2024-11-12 11:35:58
cópia: 0 Cliques: 565
1
focar em
1617
Seguidores

Estratégia de negociação de tendência adaptável combinando Bandas de Bollinger e RSI

Visão geral

A estratégia é um sistema de acompanhamento de tendências que combina múltiplos indicadores técnicos, através da combinação de três indicadores clássicos, os Brinks, RSI e MACD, para capturar oportunidades de negociação durante os turbulentos e as mudanças de tendência do mercado. A estratégia utiliza uma forma de aumento de risco em forma de pirâmide, para gerenciar o risco através de um rigoroso controle do intervalo de negociação.

Princípio da estratégia

A lógica central da estratégia baseia-se na confirmação de três sinais:

  1. O indicador RSI é usado para identificar áreas de sobrevenda e sobrevenda, sendo RSI < 45 considerado como uma sobrevenda e RSI > 55 considerado como uma sobrevenda.
  2. Perceber a posição do preço através do canal da faixa de Brin, gerando um sinal quando o preço se aproxima ou quebra a faixa de Brin para cima ou para baixo
  3. O MACD Gold Fork Dead Fork é usado como confirmação de tendência para abrir posições após a ressonância com o RSI e os sinais da faixa de Brin A estratégia também estabelece o mínimo intervalo de negociação (de 15 ciclos), evitando o excesso de negociação e adotando o gerenciamento de posições em forma de pirâmide.

Vantagens estratégicas

  1. Verificação cruzada de múltiplos indicadores tecnológicos para reduzir significativamente os sinais falsos
  2. Mecanismos piramidais aumentam a eficiência do uso de fundos
  3. Configurar intervalos de negociação mínimos para controlar a frequência de negociação
  4. Parâmetros do indicador são ajustáveis, com uma maior adaptabilidade
  5. Dispõe de um mecanismo automático de liquidação de posições para controlar a abertura de risco

Risco estratégico

  1. Vários indicadores podem causar atraso no sinal
  2. O mercado em turbulência pode gerar transações frequentes
  3. A pirâmide de hipotecas pode trazer grandes perdas se a tendência se inverter
  4. Os limites fixos do RSI podem não ser adequados para todas as circunstâncias de mercado

Direção de otimização da estratégia

  1. Introdução de um limiar RSI adaptado, ajustado dinamicamente à volatilidade do mercado
  2. Adicionar indicador de volume como confirmação auxiliar
  3. Algoritmos de gestão de posições para otimizar a pirâmide de adição de posições
  4. Adição de um mecanismo de impedimento mais flexível
  5. Considerando as características do ciclo de mercado, ajuste dinâmico do intervalo de negociação

Resumir

A estratégia busca obter ganhos estáveis, enquanto controla os riscos, através da combinação de múltiplos indicadores técnicos. Apesar de haver um certo atraso, a estratégia mostra uma melhor adaptabilidade e estabilidade por meio de mecanismos razoáveis de otimização de parâmetros e gerenciamento de risco. No futuro, a estratégia pode melhorar ainda mais o desempenho com a introdução de mecanismos de auto-adaptação e melhor gerenciamento de posição.

Código-fonte da estratégia
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[ETH] Optimized Trend Strategy", shorttitle="Lorenzo-SuperScalping", overlay=true, pyramiding=3, initial_capital=100000, currency=currency.USD)

// === Input Parameters === //
trade_size = input.float(1.0, title="Trade Size (ETH)")
rsi_length = input.int(14, minval=1, title="RSI Length")
bb_length = input.int(20, minval=1, title="Bollinger Bands Length")
bb_mult = input.float(2.0, title="Bollinger Bands Multiplier")
macd_fast = input.int(12, minval=1, title="MACD Fast Length")
macd_slow = input.int(26, minval=1, title="MACD Slow Length")
macd_signal = input.int(9, minval=1, title="MACD Signal Length")

// === Indicators === //
// RSI
rsi = ta.rsi(close, rsi_length)

// Bollinger Bands
basis = ta.sma(close, bb_length)
dev = ta.stdev(close, bb_length) * bb_mult
upper_band = basis + dev
lower_band = basis - dev
plot(basis, color=color.blue, title="BB Basis")
plot(upper_band, color=color.red, title="BB Upper")
plot(lower_band, color=color.green, title="BB Lower")

// MACD
[macd_line, signal_line, _] = ta.macd(close, macd_fast, macd_slow, macd_signal)
macd_cross_up = ta.crossover(macd_line, signal_line)
macd_cross_down = ta.crossunder(macd_line, signal_line)

// === Signal Control Variables === //
var bool last_signal_buy = na
var int last_trade_bar = na

// === Buy Signal Condition === //
// - RSI below 45
// - Price near or below the lower Bollinger Band
// - MACD crossover
buy_signal = (rsi < 45 and close < lower_band * 1.02 and macd_cross_up)

// === Sell Signal Condition === //
// - RSI above 55
// - Price near or above the upper Bollinger Band
// - MACD crossunder
sell_signal = (rsi > 55 and close > upper_band * 0.98 and macd_cross_down)

// Ensure enough bars between trades
min_bars_between_trades = input.int(15, title="Minimum Bars Between Trades")
time_elapsed = na(last_trade_bar) or (bar_index - last_trade_bar) >= min_bars_between_trades

// === Execute Trades with Conditions === //
can_buy = buy_signal and (na(last_signal_buy) or not last_signal_buy) and time_elapsed
can_sell = sell_signal and (not na(last_signal_buy) and last_signal_buy) and time_elapsed

if (can_buy)
    // Close any existing short position before opening a long
    if strategy.position_size < 0
        strategy.close("Short")

    strategy.entry("Long", strategy.long, qty=trade_size)
    last_signal_buy := true
    last_trade_bar := bar_index

if (can_sell)
    // Close any existing long position and open a short position
    if strategy.position_size > 0
        strategy.close("Long")

    strategy.entry("Short", strategy.short, qty=trade_size)
    last_signal_buy := false
    last_trade_bar := bar_index

// === Plot Buy and Sell Signals === //
plotshape(series=can_buy, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=can_sell, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// === RSI Levels for Visualization === //
hline(45, "RSI Buy Level", color=color.green, linewidth=1, linestyle=hline.style_dotted)
hline(55, "RSI Sell Level", color=color.red, linewidth=1, linestyle=hline.style_dotted)

// Plot the RSI for reference
plot(rsi, title="RSI", color=color.purple)