Estratégia de acompanhamento de tendências do Bollinger Bands ATR

BB SMA ATR
Data de criação: 2024-05-15 10:50:14 última modificação: 2024-05-15 10:50:14
cópia: 3 Cliques: 721
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências do Bollinger Bands ATR

Visão geral

A estratégia baseia-se nos indicadores Brin e ATR, capturando a amplitude de oscilação do preço através do Brin, usando a quebra do Brin para o trajeto abaixo como sinal de posição, enquanto o ATR é usado como um stop loss móvel e, finalmente, com a quebra da média móvel simples como sinal de posição. A estratégia tenta capturar a situação da tendência, construindo uma posição na direção da tendência e mantendo a posição de equilíbrio quando a tendência se inverte.

Princípio da estratégia

  1. Cálculo da faixa de Brin: a média móvel simples ((SMA) é calculada usando o preço de fechamento como a faixa de Brin, e a taxa de flutuação ((diferença padrão) é calculada para cima e para baixo.
  2. Cálculo do ATR: o ATR é calculado usando a média móvel da amplitude real (TR) como base para o stop loss móvel.
  3. Geração de sinais de negociação: geração de sinal de fazer mais quando o preço para baixo quebra o Brin e traz para baixo, geração de sinal de fazer mais quando o preço para cima quebra o Brin e traz para cima; geração de sinal de fazer mais quando o preço para cima quebra o ATR e traz para baixo quando o ATR e traz para cima.
  4. Posições em aberto: quando se faz uma posição múltipla, se o preço se eleva acima da média móvel simples, fica em aberto; quando se faz uma posição em aberto, se o preço se eleva abaixo da média móvel simples, fica em branco.

Vantagens estratégicas

  1. Acompanhamento de tendências: Captura de tendências por meio de Brinks e ATR para se adaptar a diferentes cenários de mercado.
  2. Stop-loss em tempo real: o uso do ATR como um stop-loss móvel, que permite ajustar dinamicamente a posição de stop-loss de acordo com a volatilidade do mercado, controlando o risco.
  3. Simples e fácil de usar: a lógica da estratégia é clara, com menos parâmetros, fácil de entender e aplicar.

Risco estratégico

  1. Parâmetros sensíveis: A escolha de parâmetros para a faixa de Brimstone e ATR afeta o desempenho da estratégia e precisa ser otimizada para diferentes mercados e variedades.
  2. Mercado de turbulência: em um ambiente de mercado de turbulência, os sinais de negociação frequentes podem levar a um excesso de transações e custos.
  3. Reversão de tendência: Quando a tendência é reversível, a estratégia pode produzir um retorno maior.

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

  1. Optimização de parâmetros: Otimização dos parâmetros da faixa de Brimstone e do ATR para encontrar a melhor combinação de parâmetros para diferentes mercados e variedades.
  2. Filtros: adicionar outros indicadores técnicos ou padrões de comportamento de preços como filtros, reduzindo os julgamentos errôneos e melhorando a qualidade do sinal.
  3. Gerenciamento de posições: ajuste dinâmico de posições de acordo com a volatilidade do mercado ou o risco da conta, aumentando a eficiência do uso de fundos e a relação de risco de receita.

Resumir

A estratégia de rastreamento de tendências do ATR da faixa de Brin capta a tendência através da faixa de Brin e do indicador ATR, com as vantagens de rastreamento de tendências, parada em tempo e fácil de usar. Mas, ao mesmo tempo, há riscos como sensibilidade a parâmetros, mercados de choque e reversão de tendências. O desempenho da estratégia pode ser otimizado ainda mais por meio de otimização de parâmetros, adição de filtros e gerenciamento de posições.

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

//@version=5
strategy("Bollinger Bands and ATR Strategy", overlay=true)

// Veri Çekme
symbol = "AAPL"
timeframe = "D"
src = close

// Bollinger Bantları Hesaplama
len = 20
mult = 2
sum1 = 0.0, sum2 = 0.0
for i = 0 to len - 1
    sum1 += src[i]
basis = sum1 / len
for i = 0 to len - 1
    diff = src[i] - basis
    sum2 += diff * diff
dev = math.sqrt(sum2 / len)
upper_band = basis + dev * mult
lower_band = basis - dev * mult

// ATR Hesaplama
atr_period = input(10, title="ATR Period")
atr_value = 0.0
for i = 0 to atr_period - 1
    atr_value += math.abs(src[i] - src[i + 1])
atr_value /= atr_period
loss = input(1, title="Key Value (Sensitivity)")
atr_trailing_stop = src[1]
if src > atr_trailing_stop[1]
    atr_trailing_stop := math.max(atr_trailing_stop[1], src - loss * atr_value)
else if src < atr_trailing_stop[1]
    atr_trailing_stop := math.min(atr_trailing_stop[1], src + loss * atr_value)
else
    atr_trailing_stop := src - loss * atr_value

// Sinyal Üretme
long_condition  = src < lower_band and src[1] >= lower_band[1]
short_condition = src > upper_band and src[1] <= upper_band[1]
close_long  = src > basis
close_short = src < basis
buy_signal = src > atr_trailing_stop[1] and src[1] <= atr_trailing_stop[1]
sell_signal = src < atr_trailing_stop[1] and src[1] >= atr_trailing_stop[1]

if (long_condition)
    strategy.entry("Long", strategy.long, comment="Long Signal")
if (short_condition)
    strategy.entry("Short", strategy.short, comment="Short Signal")
if (close_long)
    strategy.close("Long", comment="Close Long")
if (close_short)
    strategy.close("Short", comment="Close Short")
if (buy_signal)
    strategy.entry("Long", strategy.long, comment="Buy Signal")
if (sell_signal)
    strategy.entry("Short", strategy.short, comment="Sell Signal")

// Çizim
plot(upper_band, color=#0000FF, linewidth=2, title="Upper Band")
plot(lower_band, color=#0000FF, linewidth=2, title="Lower Band")
plot(basis, color=#808080, linewidth=2, title="SMA")
plot(atr_trailing_stop, color=#FFA500, linewidth=2, title="ATR Trailing Stop")
plot(src, color=#FFA500, linewidth=2, title="Price")

// Sinyal İşaretleri
plotshape(long_condition, style=shape.arrowup, color=#00FF00, location=location.belowbar, size=size.small, title="Long Signal")
plotshape(short_condition, style=shape.arrowdown, color=#FF0000, location=location.abovebar, size=size.small, title="Short Signal")
plotshape(buy_signal, style=shape.diamond, color=#00FF00, location=location.belowbar, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.diamond, color=#FF0000, location=location.abovebar, size=size.small, title="Sell Signal")