Esta estratégia é uma estratégia quantitativa de negociação baseada em Bollinger Bands e indicadores MACD.
A estratégia utiliza principalmente as Bandas de Bollinger e os indicadores MACD para determinar os sinais de negociação.
As bandas de Bollinger consistem de uma banda média, banda superior e banda inferior. Um sinal de compra é gerado quando o preço atravessa a banda inferior. Um sinal de venda é gerado quando o preço atravessa a banda superior. A estratégia usa o princípio de ruptura das bandas de Bollinger para determinar sinais de ruptura mais fortes.
O indicador MACD reflete a relação entre as médias móveis de curto e longo prazo. Ele usa cruzamentos da linha de diferença e da linha de sinal para determinar pontos de entrada e saída. Esta estratégia integra o uso de indicadores MACD para filtrar sinais de negociação de Bollinger Bands e gerar sinais de compra mais eficazes quando a linha de diferença cruza acima da linha de sinal.
No geral, a estratégia combina o acompanhamento da tendência das bandas de Bollinger e as vantagens da média móvel do MACD, visando captar maiores flutuações do mercado em tendências fortes.
A combinação de Bandas de Bollinger e indicadores MACD torna os sinais de negociação mais confiáveis.
O rastreamento da tendência de Bollinger Bands e os crossovers da média móvel MACD podem produzir sinais de entrada mais fortes em mercados em tendência.
Os falsos sinais podem ser efetivamente filtrados através de um julgamento de dois indicadores, reduzindo o risco de negociação.
Há muito espaço para a otimização dos parâmetros da estratégia, que pode ser ajustada de acordo com diferentes produtos e ciclos.
Nos mercados de intervalo, os sinais de negociação gerados pelas bandas de Bollinger e pelo MACD podem ser frequentes, trazendo riscos de excesso de negociação.
Três cruzes douradas sucessivas do MACD em níveis baixos podem enfrentar o risco de uma inversão descendente.
A estratégia utiliza múltiplos indicadores, tornando a otimização de parâmetros e o teste de estratégia bastante difíceis.
Para abordar estes riscos, métodos como ajustar os períodos de retenção, definir stop losses, otimizar parâmetros podem ser utilizados para controlá-los.
Teste os parâmetros de Bollinger Bands de período mais longo para reduzir a frequência de negociação.
Otimizar os parâmetros da linha rápida e lenta do MACD para melhorar a sensibilidade do indicador.
Adicionar outros indicadores para filtragem, como KDJ, RSI, etc., para melhorar a qualidade do sinal.
Configurar paradas dinâmicas para sair automaticamente das transacções e controlar os riscos de transação única.
Em teoria, integrando a negociação de breakout de Bollinger Bands e a filtragem do indicador MACD, esta estratégia pode produzir sinais de negociação de alta qualidade. Através da otimização de parâmetros e medidas de controle de risco, bons resultados de backtest podem ser alcançados. No entanto, nenhuma estratégia pode evitar completamente as perdas. O desempenho comercial real precisa de uma avaliação prudente.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Nabz-BBMACD-2022-V1.1", shorttitle="BBM-Nabz", overlay=true) // My 1st Pine Scrpt Indicator // Work on best on 1Hr Chart // Open for Help/Donations. var float lastentry=1 int result = 0 float x = 0 drawshape = false /////////////EMA shortest = ta.ema(close, 20) short = ta.ema(close, 50) longer = ta.ema(close, 100) longest = ta.ema(close, 200) plot(shortest, color = color.red) plot(short, color = color.orange) plot(longer, color = color.aqua) plot(longest, color = color.blue) ///////////// RSI RSIlength = input(6,title="RSI Period Length") RSIoverSold = 50 RSIoverBought = 50 price = close vrsi = ta.rsi(price, RSIlength) ///////////// Bollinger Bands BBlength = input.int(200, minval=1,title="Bollinger Period Length") BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation") BBbasis = ta.sma(price, BBlength) BBdev = BBmult * ta.stdev(price, BBlength) BBupper = BBbasis + BBdev BBlower = BBbasis - BBdev source = close buyEntry = ta.crossover(source, BBlower) sellEntry = ta.crossunder(source, BBupper) ////////////// MACD fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength) aMACD = ta.ema(MACD, MACDLength) delta = MACD - aMACD ///////////// Colors switch1=input(true, title="Enable Bar Color?") switch2=input(true, title="Enable Background Color?") TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? color.red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? color.green : na ///////////Strategy bool tcu = not (ta.crossunder(price[0],shortest[0])) if (((price[1]<BBlower[1]) and (ta.crossover(price,BBlower)))) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 1st IF") if (((ta.crossover(delta, 0.0) and (ta.crossover(price,BBlower))))) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 2nd IF") if (((ta.crossover(delta, 0.0)) and (low[0]>shortest[0])) and (price[1]<low)) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 3rd IF") //else if (((ta.crossover(delta, 0.01)) and (high[1]<BBupper)) and (tcu)) lastentry := low[1] strategy.entry("RSI_BB_L", strategy.long, comment="Buy 4th IF") if ((ta.crossunder(low[0],shortest[0]) and close<shortest)) strategy.close(id="RSI_BB_L", comment="Close by 1st IF") if (price<lastentry) drawshape := true if (price<strategy.opentrades.entry_price(0)/1.01175734321249) strategy.close(id="RSI_BB_L", comment="Close by 2nd IF") plot(strategy.opentrades.entry_price(0), color=color.yellow)