- Quadrado
- Estratégia dinâmica de Bollinger Bands de lucro
Estratégia dinâmica de Bollinger Bands de lucro
Autora:
ChaoZhang, Data: 2024-05-24 17:54:47
Tags:
SMA
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
- 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.
- 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.
- 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.
- 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.
- Visualização: Trace as Bandas de Bollinger, média móvel e sinais de negociação no gráfico.
Vantagens da estratégia
- 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.
- Ampla aplicabilidade: As bandas de Bollinger têm aplicabilidade universal e podem ser utilizadas para vários instrumentos e mercados de negociação.
- 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.
- 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
- 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.
- 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.
- 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
- Incorporar análise de tendências: adicionar indicadores de identificação de tendências (como médias móveis) à estratégia.
- 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.
- 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.
- 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.