Estratégia de negociação de reentrada de breakout Bollinger Bands

Autora:ChaoZhang, Data: 2024-03-08 14:08:53
Tags:

img

Resumo

Esta estratégia é baseada no indicador Bollinger Bands. A ideia principal é esperar que o preço entre novamente nas Bollinger Bands depois de sair da faixa superior ou inferior, e depois estabelecer uma posição na mesma direção que a quebra no ponto de reentrada. A estratégia aproveita a característica de que os preços geralmente se invertem quando estão em áreas extremas. Combinando as condições da quebra e reentrada da Bollinger Band, visa capturar pontos de virada do mercado e alcançar uma taxa de vitória maior.

Princípios de estratégia

  1. Calcule as bandas média, superior e inferior das Bandas de Bollinger. A banda do meio é a média móvel, e as bandas superior e inferior são a banda do meio mais ou menos um certo número de desvios padrão.
  2. Determine se o preço rompe a faixa superior ou inferior de Bollinger. Se o preço de fechamento exceder a faixa superior, é considerado uma quebra ascendente; se o preço de fechamento cair abaixo da faixa inferior, é considerado uma quebra descendente.
  3. Se ocorrer uma ruptura ascendente, registre o preço mais alto dessa vela de ruptura como o pico. Se ocorrer uma ruptura descendente, registre o preço mais baixo dessa vela de ruptura como o pico.
  4. Se o preço de fechamento estiver entre as faixas superior e inferior neste momento, o preço é considerado ter entrado novamente.
  5. Quando o preço voltar a entrar, se a vela anterior foi uma ruptura ascendente (break_up [1] e dentro), vá longo; se a vela anterior foi uma ruptura descendente (break_down [1] e dentro), vá curto.
  6. Gerenciamento de posições: se estiver numa posição longa e o preço de encerramento ultrapassar a faixa média, fechar a posição longa; se estiver numa posição curta e o preço de encerramento ultrapassar a faixa média, fechar a posição curta.

Análise das vantagens

  1. As bandas de Bollinger têm uma forte adaptabilidade e podem ajustar-se dinamicamente de acordo com as flutuações de preços, o que é útil para capturar tendências e volatilidade.
  2. Em comparação com uma estratégia simples de ruptura de Bollinger Band, a adição da condição de reentrada pode evitar, até certo ponto, a perseguição de máximos e a venda de mínimos e melhorar a qualidade da entrada.
  3. A condição de saída utiliza a faixa média como referência, que é simples e fácil de usar e pode proteger os lucros relativamente bem.
  4. Os parâmetros das Bandas de Bollinger, tais como o multiplicador de comprimento e desvio, podem ser personalizados, proporcionando uma elevada flexibilidade.

Análise de riscos

  1. A selecção inadequada dos parâmetros da Banda de Bollinger pode levar a entradas prematuras ou tardias, afetando o desempenho da estratégia.
  2. Quando o preço oscila perto das Bandas de Bollinger, podem ocorrer aberturas e encerramentos frequentes de posições, resultando em custos de transação aumentados.
  3. Se a tendência for muito forte e o preço não voltar a entrar nas Bandas de Bollinger por um longo tempo, os lucros da tendência podem ser perdidos.
  4. A utilização do indicador Bollinger Band sozinho pode não ser eficaz para alguns instrumentos ou condições de mercado, podendo ser necessário utilizá-lo em conjunto com outros sinais.

Orientações de otimização

  1. Considere a introdução de mais condições de filtragem. Por exemplo, um breakout pode ser mais confiável se o preço estiver correndo acima das Bandas de Bollinger por um período de tempo, ou usar indicadores de determinação de tendência, como ângulo MA e ADX para assistência.
  2. Para os mercados oscilantes, podem ser adicionadas ordens limitadas e cronogramas para evitar entradas às cegas.
  3. Para as saídas, a ATR ou as médias móveis podem ser combinadas para controlar o calendário de saída.
  4. Realizar a otimização de parâmetros e a análise das características para diferentes ativos e prazos subjacentes, a fim de selecionar objetivos e prazos de negociação adequados.
  5. Considerar a possibilidade de acrescentar a gestão de posições, como aumentar o tamanho da posição quando a volatilidade se contrair e reduzir o tamanho da posição quando a volatilidade se expandir.

Resumo

A Estratégia de Negociação de Reentrada de Breakout de Bandas de Bollinger é uma estratégia quantitativa de negociação simples e prática. Utiliza a reação dos preços a situações extremas e constrói condições de entrada e saída através da ferramenta de Bandas de Bollinger, que pode capturar pontos de início e fim da tendência até certo ponto e controlar a negociação frequente. Ao mesmo tempo, essa estratégia também tem problemas como seleção de parâmetros, baixo desempenho em mercados oscilantes e captura de tendência insuficiente. Através da otimização de detalhes e combinação com outros sinais, espera-se melhorar ainda mais a adaptabilidade e robustez desta estratégia.


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

//@version=5
strategy(shorttitle="BB", title="Bollinger Bands", overlay=true)
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options = ["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = input.float(1.7, minval=0.001, maxval=50, title="StdDev")

ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev
offset = input.int(0, "Offset", minval = -500, maxval = 500)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=#2962FF, offset = offset)
p2 = plot(lower, "Lower", color=#2962FF, offset = offset)
fill(p1, p2, title = "Background", color=color.rgb(33, 150, 243, 95))

break_up = close > upper
break_down = close < lower
inside = close > lower and close < upper

sell_condition = break_up[1] and inside
buy_condition = break_down[1] and inside

// Conditions to close trades
close_sell_condition = close > basis
close_buy_condition = close < basis

trade_condition = sell_condition or buy_condition

// Tracking the high of the breakout candle
var float peak = na

if (not trade_condition)
    peak := close
if (break_up and peak < high)
    peak := high
if (break_down and peak > low)
    peak := low

// Entering positions
if (buy_condition)
    strategy.entry("Buy", strategy.long)
if (sell_condition)
    strategy.entry("Sell", strategy.short)

// Exiting positions when close crosses the basis
if (strategy.position_size > 0 and close_sell_condition) // If in a long position and close crosses above basis
    strategy.close("Buy")
if (strategy.position_size < 0 and close_buy_condition) // If in a short position and close crosses below basis
    strategy.close("Sell")

Mais.