Bandas de Bollinger combinadas com múltiplos indicadores Woody CCI para filtrar a estratégia de sinais de negociação

BB CCI MA OBV ATR SMA TP SL
Data de criação: 2024-12-27 15:32:30 última modificação: 2024-12-27 15:32:30
cópia: 0 Cliques: 416
1
focar em
1617
Seguidores

Bandas de Bollinger combinadas com múltiplos indicadores Woody CCI para filtrar a estratégia de sinais de negociação

Visão geral

A estratégia é um sistema de negociação multiindicador que combina as Bandas de Bollinger, o CCI de Woodies, as Médias Móveis (MA) e o Volume de Saldo (OBV). A estratégia usa as Bandas de Bollinger para fornecer uma faixa de volatilidade do mercado, usa o indicador CCI para filtrar sinais de negociação e, em seguida, combina o sistema de média móvel e a confirmação do volume de negociação para negociar quando a tendência do mercado estiver clara. Ao mesmo tempo, use o ATR para definir dinamicamente as posições de take-profit e stop-loss para controlar riscos de forma eficaz.

Princípio da estratégia

A lógica central da estratégia é baseada nos seguintes elementos-chave:

  1. Use duas bandas de Bollinger de desvio padrão (1x e 2x) para construir um canal de flutuação de preço e fornecer uma referência para a faixa de flutuação do mercado
  2. O uso de indicadores CCI de 6 e 14 períodos como filtros de sinal requer que o CCI dos dois períodos confirme na mesma direção
  3. Combine as médias móveis de 50 e 200 períodos para determinar tendências de mercado e gerar sinais de negociação iniciais quando as médias móveis se cruzarem
  4. A tendência de volume é confirmada pela suavização de 10 períodos do indicador OBV.
  5. Use ATR de 14 períodos para definir dinamicamente take-profit e stop-loss. Para posições longas, take-profit é 2 vezes ATR, e stop-loss é 1 vez ATR. Para posições curtas, o oposto é verdadeiro.

Vantagens estratégicas

  1. A validação cruzada de múltiplos indicadores reduz significativamente a probabilidade de sinais falsos
  2. A combinação das Bandas de Bollinger e do CCI fornece um julgamento preciso da volatilidade do mercado
  3. O sistema de média móvel de longo e curto prazo capta efetivamente a tendência geral
  4. OBV confirma suporte de volume e melhora confiabilidade do sinal
  5. Configurações dinâmicas de stop-profit e stop-loss para se adaptar a diferentes ambientes de mercado
  6. Os sinais de negociação são claros, a execução é padrão e é fácil de quantificar e implementar.

Risco estratégico

  1. Vários indicadores podem causar atraso no sinal e perder o melhor momento de entrada
  2. Stop losses podem ser acionados com frequência em mercados voláteis
  3. A otimização de parâmetros tem o risco de overfitting
  4. O stop loss pode não ser oportuno durante períodos de volatilidade severa Contramedidas:
  • Ajuste dinamicamente os parâmetros do indicador de acordo com os diferentes ciclos de mercado
  • Monitoramento em tempo real de retração e controle de posição
  • Verifique regularmente a validade dos parâmetros
  • Defina um limite máximo de perda

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

  1. Introduzir indicadores de volatilidade de mercado para ajustar posições durante períodos de alta volatilidade
  2. Adicione um filtro de força de tendência para evitar negociações em mercados voláteis
  3. Otimize a seleção do ciclo CCI e melhore a sensibilidade do sinal
  4. Melhorar o mecanismo de stop-profit e stop-loss, como considerar a obtenção de lucros em lotes
  5. Adicionado mecanismo de alerta de volume de negociação anormal

Resumir

Este é um sistema de negociação completo baseado em uma combinação de indicadores técnicos, o que melhora a precisão da negociação por meio de múltiplas confirmações de sinais. A estratégia é razoavelmente projetada, o risco é adequadamente controlado e tem bom valor de aplicação prática. É recomendável usar posições conservadoras para testes em negociações reais e otimizar continuamente os parâmetros com base nas condições de mercado.

Código-fonte da estratégia
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy(shorttitle="BB Debug + Woodies CCI Filter", title="Debug Buy/Sell Signals with Woodies CCI Filter", overlay=true)

// Input Parameters
length = input.int(20, minval=1, title="BB MA Length")
src = input.source(close, title="BB Source")
mult1 = input.float(1.0, minval=0.001, maxval=50, title="BB Multiplier 1 (Std Dev 1)")
mult2 = input.float(2.0, minval=0.001, maxval=50, title="BB Multiplier 2 (Std Dev 2)")
ma_length = input.int(50, minval=1, title="MA Length")
ma_long_length = input.int(200, minval=1, title="Long MA Length")
obv_smoothing = input.int(10, minval=1, title="OBV Smoothing Length")
atr_length = input.int(14, minval=1, title="ATR Length") // ATR Length for TP/SL

// Bollinger Bands
basis = ta.sma(src, length)
dev1 = mult1 * ta.stdev(src, length)
dev2 = mult2 * ta.stdev(src, length)

upper_1 = basis + dev1
lower_1 = basis - dev1
upper_2 = basis + dev2
lower_2 = basis - dev2

plot(basis, color=color.blue, title="BB MA")
p1 = plot(upper_1, color=color.new(color.green, 80), title="BB Upper 1")
p2 = plot(lower_1, color=color.new(color.green, 80), title="BB Lower 1")
p3 = plot(upper_2, color=color.new(color.red, 80), title="BB Upper 2")
p4 = plot(lower_2, color=color.new(color.red, 80), title="BB Lower 2")

fill(p1, p2, color=color.new(color.green, 90))
fill(p3, p4, color=color.new(color.red, 90))

// Moving Averages
ma_short = ta.sma(close, ma_length)
ma_long = ta.sma(close, ma_long_length)
plot(ma_short, color=color.orange, title="MA Short")
plot(ma_long, color=color.yellow, title="MA Long")

// OBV and Smoothing
obv = ta.cum(ta.change(close) > 0 ? volume : ta.change(close) < 0 ? -volume : 0)
obv_smooth = ta.sma(obv, obv_smoothing)

// Debugging: Buy/Sell Signals
debugBuy = ta.crossover(close, ma_short)
debugSell = ta.crossunder(close, ma_short)

// Woodies CCI
cciTurboLength = 6
cci14Length = 14
cciTurbo = ta.cci(src, cciTurboLength)
cci14 = ta.cci(src, cci14Length)

// Filter: Only allow trades when CCI confirms the signal
cciBuyFilter = cciTurbo > 0 and cci14 > 0
cciSellFilter = cciTurbo < 0 and cci14 < 0

finalBuySignal = debugBuy and cciBuyFilter
finalSellSignal = debugSell and cciSellFilter

// Plot Debug Buy/Sell Signals
plotshape(finalBuySignal, title="Filtered Buy", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.normal)
plotshape(finalSellSignal, title="Filtered Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.normal)

// Change candle color based on filtered signals
barcolor(finalBuySignal ? color.lime : finalSellSignal ? color.red : na)

// ATR for Stop Loss and Take Profit
atr = ta.atr(atr_length)
tp_long = close + 2 * atr  // Take Profit for Long = 2x ATR
sl_long = close - 1 * atr  // Stop Loss for Long = 1x ATR
tp_short = close - 2 * atr // Take Profit for Short = 2x ATR
sl_short = close + 1 * atr // Stop Loss for Short = 1x ATR

// Strategy Execution
if (finalBuySignal)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", limit=tp_long, stop=sl_long)

if (finalSellSignal)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", limit=tp_short, stop=sl_short)

// Check for BTC/USDT pair
isBTCUSDT = syminfo.ticker == "BTCUSDT"

// Add alerts only for BTC/USDT
alertcondition(isBTCUSDT and finalBuySignal, title="BTCUSDT Buy Signal", message="Buy signal detected for BTCUSDT!")
alertcondition(isBTCUSDT and finalSellSignal, title="BTCUSDT Sell Signal", message="Sell signal detected for BTCUSDT!")