Estratégia de negociação de retracement de bandas de Bollinger Fibonacci

Autora:ChaoZhang, Data: 2023-09-27 16:52:05
Tags:

Resumo

Esta estratégia identifica canais de preços usando Bollinger Bands e determina níveis de suporte/resistência com base em índices de retração de Fibonacci para negociação algorítmica.

Estratégia lógica

  1. Calcular as bandas médias, superiores e inferiores das bandas de Bollinger

    • A faixa média é a SMA, as faixas superior/inferior são a SMA +/- múltiplos do ATR

    • Bandas de Bollinger expandem e contraem com base na volatilidade do mercado

  2. Calcular os níveis de retração de Fibonacci com base em rácios

    • Os rácios de retração são múltiplos dos rácios ATR * Fibonacci

    • Os níveis de fibras múltiplas são calculados com base na faixa média

  3. Observação da ruptura dos preços das bandas de Bollinger

    • Considere fazer long quando o preço ultrapassar a faixa superior

    • Considere fazer curto quando o preço quebra abaixo da faixa inferior

  4. Introdução de transacções e definição de SL/TP em torno de zonas de retração de fibras

    • Entre em negociações quando o preço retorna para a zona Fib

    • Configure stop loss e take profit no outro lado da zona.

Análise das vantagens

  • As bandas de Bollinger identificam claramente os intervalos e tendências de volatilidade do mercado

  • Os índices de Fibonacci compreendem os principais níveis de suporte e resistência

  • A combinação de indicadores permite a negociação algorítmica

  • As entradas de retração aumentam a probabilidade de sucesso e evitam perseguições

  • Parâmetros ajustáveis adaptados a diferentes períodos e produtos

Análise de riscos

  • As rupturas das bandas de Bollinger podem ser falsos sinais.

  • Difícil prever com precisão quando o preço voltará aos níveis da Fib

  • A colocação incorreta de stop loss pode aumentar as perdas

  • A magnitude insuficiente ou excessiva do recuo afeta a estratégia

  • Parâmetros ineficazes ou tendências persistentes dos mercados podem invalidar a estratégia

  • Melhorar a lógica das bandas de Bollinger, considerando o volume, o ajuste da zona dinâmica, etc.

Orientações de otimização

  • Otimizar os parâmetros das bandas de Bollinger para uma melhor avaliação da tendência e do S/R

  • Adicionar indicadores de volume para validar sinais de ruptura

  • Utilize aprendizado de máquina para previsão de probabilidade de retração

  • Incorporar mais indicadores técnicos para a validação do sinal

  • Selecionar parâmetros razoáveis com base nas características do produto e nas sessões de negociação

  • Ajustar atempadamente a força da zona de retração para alterar a volatilidade

Conclusão

Esta estratégia combina os pontos fortes das Bandas de Bollinger e retracements de Fibonacci para identificar tendências e entrar em níveis de pullback de alta probabilidade. Os riscos podem ser reduzidos e os resultados melhorados por otimização de parâmetros, validação adicional de sinal, ajuste de zona dinâmica, etc. Há espaço para expansão incorporando volume, modelos de aprendizado de máquina, etc. A estratégia pode ser refinada através de otimização contínua.


/*backtest
start: 2023-08-27 00:00:00
end: 2023-09-26 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle="BBands Fibo", title="Bollinger Bands Fibonacci Ratios", overlay=true)

length      =   input(20, minval=1, type=input.integer, title="Length")
src         =   input(close, title="Source")
offset      =   input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
fibo1       =   input(defval=1.618, title="Fibonacci Ratio 1")
fibo2       =   input(defval=2.618, title="Fibonacci Ratio 2")
fibo3       =   input(defval=4.236, title="Fibonacci Ratio 3")

fiboBuyReverse = input(false, title = "Use Reverse Buy?")
fiboBuy       =   input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Buy")
fiboSellReverse = input(false, title = "Use Reverse Sell?")
fiboSell       =   input(options = ["Fibo 1", "Fibo 2", "Fibo 3"],defval = "Fibo 1", title="Fibonacci Sell")

sma = sma(src, length)
atr = atr(length)

ratio1 = atr * fibo1
ratio2 = atr * fibo2
ratio3 = atr * fibo3

upper3 = sma + ratio3
upper2 = sma + ratio2
upper1 = sma + ratio1

lower1 = sma - ratio1
lower2 = sma - ratio2
lower3 = sma - ratio3

plot(sma, style=0, title="Basis", color=color.orange, linewidth=2, offset = offset)

upp3 = plot(upper3, transp=90, title="Upper 3", color=color.teal, offset = offset)
upp2 = plot(upper2, transp=60, title="Upper 2", color=color.teal, offset = offset)
upp1 = plot(upper1, transp=30, title="Upper 1", color=color.teal, offset = offset)

low1 = plot(lower1, transp=30, title="Lower 1", color=color.teal, offset = offset)
low2 = plot(lower2, transp=60, title="Lower 2", color=color.teal, offset = offset)
low3 = plot(lower3, transp=90, title="Lower 3", color=color.teal, offset = offset)

fill(upp3, low3, title = "Background", color=color.new(color.teal, 95))

targetBuy = fiboBuy == "Fibo 1" ? upper1 : fiboBuy == "Fibo 2" ? upper2 : upper3
targetBuy := fiboBuyReverse == false ? targetBuy : fiboBuy == "Fibo 1" ? lower1 : fiboBuy == "Fibo 2" ? lower2 : lower3
buy = low < targetBuy and high > targetBuy

targetSell = fiboSell == "Fibo 1" ? lower1 : fiboSell == "Fibo 2" ? lower2 : lower3
targetSell := fiboSellReverse == false ? targetSell : fiboSell == "Fibo 1" ? upper1 : fiboSell == "Fibo 2" ? upper2 : upper3
sell = low < targetSell and high > targetSell

strategy.entry("Buy", true, when = buy)
strategy.entry("Sell", false, when = sell)


Mais.