O recurso está a ser carregado... Carregamento...

Estratégia dinâmica de Bollinger Bands de lucro

Autora:ChaoZhang, Data: 2024-05-24 17:54:47
Tags:SMA

img

Resumo

Esta estratégia utiliza o indicador de Bollinger Bands para ficar curto quando o preço toca a faixa superior e ficar longo quando toca a faixa inferior. Ele define um nível dinâmico de lucro e fecha a posição quando atinge 1% de lucro. A ideia central é que o preço sempre flutua dentro das Bandas de Bollinger e tem uma característica de inversão média, então podemos tomar posições reversas quando o preço se desvia muito da média móvel para capturar a diferença de preço.

Princípios de estratégia

  1. Calcular a média móvel e o desvio padrão: utilizar a média móvel simples (SMA) para calcular a média móvel do preço de fechamento (base) e, em seguida, calcular o desvio padrão (dev) do preço de fechamento em relação à média móvel.
  2. Calcule as bandas superior e inferior: A banda superior é base + dev * multiplicador, e a banda inferior é base - dev * multiplicador, onde o multiplicador é um múltiplo da amplitude de volatilidade.
  3. Gerar sinais de negociação: quando o preço de fechamento cruza a faixa inferior e o fechamento atual é menor que o aberto, é gerado um sinal longo; quando o preço de fechamento cruza a faixa superior e o fechamento atual é maior que o aberto, é gerado um sinal curto.
  4. Dinâmica de lucro: Após a abertura de uma posição, calcule o preço de lucro com base no preço de entrada e na percentagem de lucro.
  5. Visualização: Trace as Bandas de Bollinger, média móvel e sinais de negociação no gráfico.

Vantagens da estratégia

  1. Simples e eficazes: a lógica da estratégia é clara e utiliza apenas um indicador técnico, tornando-a fácil de compreender e implementar.
  2. Ampla aplicabilidade: As bandas de Bollinger têm aplicabilidade universal e podem ser utilizadas para vários instrumentos e mercados de negociação.
  3. Dinâmica de lucro: em comparação com o lucro fixo, o lucro dinâmico pode maximizar o lucro dos negócios vencedores, controlando o risco.
  4. Captura efetiva de tendências: Em mercados de tendências, depois que o preço toca a faixa superior ou inferior, ele geralmente continua a se mover na direção original por algum tempo.

Riscos estratégicos

  1. Pobre desempenho em mercados variados: quando o mercado está em grandes flutuações e os preços quebram repetidamente as Bandas de Bollinger, a estratégia pode gerar sinais de negociação frequentes, resultando em negociação excessiva e aumento dos custos de transação.
  2. Retracements profundos em mercados em tendência: se uma tendência durar por um longo período e os preços se desviarem da média móvel por um período prolongado, a estratégia vai contra a tendência, levando potencialmente a retracements profundos.
  3. Dificuldade na seleção de parâmetros: os parâmetros das Bandas de Bollinger (como comprimento e multiplicador) têm um impacto significativo no desempenho da estratégia, mas não existem parâmetros universalmente ideais.

Orientações para a otimização da estratégia

  1. Incorporar análise de tendências: adicionar indicadores de identificação de tendências (como médias móveis) à estratégia.
  2. Otimizar o take profit e o stop loss: ajustar dinamicamente o take profit e o stop loss com base em indicadores de volatilidade, como o ATR, para alcançar uma melhor relação risco/recompensa.
  3. Combinação de vários fatores: considerar a combinação de Bandas de Bollinger com outros indicadores técnicos (como RSI, MACD, etc.) para melhorar a precisão do sinal e reduzir os falsos sinais.
  4. Filtragem fundamental: Após a geração de sinais de negociação, utilizar dados fundamentais (como relatórios financeiros, dados do setor, etc.) para confirmação secundária para aumentar a robustez da estratégia.

Resumo

Esta estratégia constrói um sistema de negociação simples e eficaz usando Bandas de Bollinger, tomando o preço tocando as bandas superior e inferior como sinais e adotando o lucro dinâmico para controlar o risco. A estratégia tem um bom desempenho em mercados de tendência, mas pode enfrentar problemas de negociação frequentes em mercados variados.


/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Future Price Prediction", overlay=true)

// Ayarlar
length = input.int(14, "Length")
mult = input.float(2.0, "Multiplier")
showBands = input.bool(true, "Show Bands")
takeProfitPercentage = 1.0

// Ortalama ve Standart Sapma Hesaplamaları
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)

// Üst ve Alt Bantlar
upper = basis + dev
lower = basis - dev

// Grafikte Gösterim
plot(basis, color=color.blue, linewidth=2, title="Basis")
plot(showBands ? upper : na, color=color.red, linewidth=1, title="Upper Band")
plot(showBands ? lower : na, color=color.green, linewidth=1, title="Lower Band")

// Al-Sat Sinyalleri
longCondition = ta.crossover(close[1], lower[1]) and close[1] < open[1]
shortCondition = ta.crossunder(close[1], upper[1]) and close[1] > open[1]

// Kar al seviyeleri
float longTakeProfit = na
float shortTakeProfit = na

if longCondition
    longTakeProfit := close * (1 + takeProfitPercentage / 100)
if shortCondition
    shortTakeProfit := close * (1 - takeProfitPercentage / 100)

// Strateji Giriş ve Çıkış
if longCondition
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit", from_entry="Buy", limit=longTakeProfit)

if shortCondition
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit", from_entry="Sell", limit=shortTakeProfit)

// Al-Sat Sinyalleri Grafikte Gösterim
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Bilgi Tablosu
var table data = table.new(position.bottom_right, 2, 2, frame_color=color.black, frame_width=1)
if barstate.islast
    table.cell(data, 0, 0, "Current Price", text_color=color.white)
    table.cell(data, 1, 0, str.tostring(close))
    table.cell(data, 0, 1, "Predicted Basis", text_color=color.white)
    table.cell(data, 1, 1, str.tostring(basis))


Relacionados

Mais.