Estratégia de negociação de bandas de Bollinger com múltiplos indicadores

Autora:ChaoZhang, Data: 2023-11-15 15:30:43
Tags:

img

Resumo

Esta estratégia combina múltiplos indicadores técnicos como Bollinger Bands, RSI e MACD para tomar decisões de negociação. Primeiro traça Bollinger Bands no gráfico e usa breakout de bandas para sinais de entrada.

Estratégia lógica

  1. Gráfico de bandas de Bollinger de 34 períodos com linha central, 1 std dev e 2 std dev bandas.

  2. Entrar em longo quando o fechamento está acima da faixa superior, entrar em curto quando o fechamento está abaixo da faixa inferior.

  3. Fechar posição longa quando fechar cruza abaixo da linha central, fechar posição curta quando fechar cruza acima da linha central.

  4. Usar RSI>70 como confirmação adicional para longo, RSI<30 como confirmação para curto.

  5. Fechar posições curtas quando o RSI ultrapassa 50, fechar posições longas quando o RSI ultrapassa 50.

  6. Utilize o crossover MACD como filtro adicional para as entradas, o crossover MACD para longo, o crossunder MACD para curto.

  7. Fechar posições longas no cruzamento MACD, fechar posições curtas no cruzamento MACD.

  8. Exige que todos os 3 indicadores se alinhem antes de entrar em negociações, múltiplos filtros reduzem os falsos sinais.

Vantagens

A combinação de sinais de vários indicadores reduz os sinais falsos e aumenta a lucratividade.

Regras estritas de stop loss baseadas em bandas e indicadores limitam a perda em cada negociação.

Em comparação com as estratégias de indicador único, a combinação de indicadores melhora o desempenho.

Em geral, esta estratégia se destaca nos mercados de tendência, capturando grandes movimentos, evitando flutuações usando detalhes de indicadores.

Riscos

Os principais riscos são:

  1. A otimização dos parâmetros pode reduzir mas não eliminar os falsos sinais.

  2. Incapacidade de lucrar com os mercados de faixa. Stop loss pode desencadear resultando em perda durante a consolidação. As regras de stop loss podem ser relaxadas para manter as negociações por mais tempo.

  3. Indicadores de atraso que levam a oportunidades de entrada perdidas Indicadores de avanço mais avançados podem ajudar a capturar curvas mais cedo.

  4. Usando trailing stops ou mediando para baixo pode controlar as perdas melhor.

  5. Os parâmetros fixos podem exigir ajustes para diferentes mercados. O aprendizado de máquina pode permitir a otimização automática de parâmetros.

  6. A estratégia deve ser testada em conjuntos de dados mais amplos em todos os mercados para garantir a robustez.

Oportunidades de melhoria

A estratégia pode ser melhorada de várias formas:

  1. Otimize os parâmetros do indicador para encontrar as melhores combinações que minimizem os sinais falsos.

  2. Incorporar stop loss adaptativo em vez de paradas de faixa média fixa.

  3. Utilize a aprendizagem de máquina para otimização de parâmetros adaptativos em condições de mudança, por exemplo, aprendizagem por reforço.

  4. Adicionar regras de detecção de tendências para empregar diferentes táticas para diferentes fases do mercado.

  5. Incorporar sentimento, dados de mídia social para melhor previsão multifator e indicadores principais.

  6. Empregar a composição para dimensionar os tamanhos das posições com base no crescimento do tamanho da conta para um crescimento exponencial.

  7. Otimizar as combinações com estratégias não correlacionadas para reduzir a volatilidade da carteira através da diversificação.

Conclusão

Esta estratégia combina múltiplos indicadores para sinais de entrada e saída robustos e impõe uma disciplina de stop loss rigorosa. O uso de múltiplos indicadores reduz os falsos sinais enquanto os paramentos controlam a magnitude da perda. Funciona bem para mercados de tendência que fornecem retornos constantes. Parâmetros de ajuste fino e aumento da adaptabilidade podem melhorar ainda mais o desempenho.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0
// This displays the traditional Bollinger Bands, the difference is 
// that the 1st and 2nd StdDev are outlined with two colors and two
// different levels, one for each Standard Deviation

strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true, currency=currency.NONE, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_value = 0.05)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)

basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev

upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2

colorBasis = src >= basis ? color.blue : color.orange

pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))

fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))


//Strategy code starts here

long_entry = ta.crossover(src, upper1)
short_entry = ta.crossunder(src, lower1)

strategy.entry("Long", strategy.long, when=long_entry)
strategy.entry("Short", strategy.short, when=short_entry)

if long_entry or close < basis
    strategy.close("Long", "Long") 

if short_entry or close > basis
    strategy.close("Short", "Short") 


//Calculate RSI
rsiLength = input(14)
rsiValue = ta.rsi(src, rsiLength)

// Define RSI conditions for entering and exiting trades
rsiLong = rsiValue > 70
rsiShort = rsiValue < 30


//Enter long position when RSI crosses above 50 and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong)

//Exit long position when RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=rsiShort or close < basis)

//Enter short position when RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort)

//Exit short position when RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=rsiLong or close > basis)



//Calculate MACD
fastLength = input(12)
slowLength = input(26)
macdLength = input(9)
macdValue = ta.macd(src, fastLength, slowLength, macdLength)

// Define MACD conditions for entering and exiting trades
macdLong = ta.crossover(src, macdLength)
macdShort = ta.crossunder(src, macdLength)

//Enter long position when MACD crosses above signal line and RSI and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong and macdLong)

//Exit long position when MACD crosses below signal line or RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=macdShort or rsiShort or close < basis)

//Enter short position when MACD crosses below signal line and RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort and macdShort)

//Exit short position when MACD crosses above signal line or RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=macdLong or rsiLong or close > basis)

Mais.