Estratégia de acompanhamento de tendência de rompimento de bandas de Bollinger


Data de criação: 2023-09-22 14:31:17 última modificação: 2023-09-22 14:31:17
cópia: 1 Cliques: 678
1
focar em
1617
Seguidores

Visão geral

A estratégia é uma estratégia de acompanhamento de tendências baseada no indicador de Brinks. Ela usa uma ruptura de Brinks para determinar a direção da tendência e abrir uma posição na direção correspondente. Quando o preço começa a recuar, o stop loss de acompanhamento de intervalos dinâmicos é usado para sair da posição e obter lucro.

Princípio da estratégia

A estratégia usa os indicadores de correia de Brin para determinar a direção da tendência. A correia de Brin constrói um uptrend através do cálculo do diferencial padrão do preço. Quando o preço quebra o uptrend, considera-se que a tendência começa para cima; quando o preço quebra o downtrend, considera-se que a tendência começa para baixo.

A lógica da transação é a seguinte:

  1. Calcular os eixos médio, superior e inferior da faixa de Bryn.

  2. Quando o preço se eleva, abre mais; quando o preço desce, abre mais.

  3. Usar tracking stop loss para controlar o risco, e parar de perder quando o preço começa a recuar.

  4. A partir de agora, a tendência vai se estendendo novamente, com a reabertura da órbita da faixa de Bryn.

O uso de bandas de Brin para determinar a direção da tendência, em combinação com o rastreamento dinâmico de stop loss, pode ser usado para controlar o risco de forma eficaz.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. O uso do indicador de correia de Bryn para avaliar tendências é simples e eficaz.

  2. Combinação de entrada de ruptura e trailing stop loss dinâmico, combinando captura de tendência e controle de risco.

  3. A estrutura do código é clara e concisa, fácil de entender e modificar.

  4. Menos parâmetros para otimização.

  5. Aplica-se a diferentes variedades e é muito flexível.

  6. A resposta foi boa e há muito espaço para ganhar.

Análise de Riscos

Os principais riscos desta estratégia são:

  1. As faixas de Bryn são baseadas apenas em propriedades estatísticas e apresentam riscos de curvatura.

  2. Não é possível distinguir entre expansão e tendências reais, podendo ser mal interpretado.

  3. O ponto de paragem é muito denso e pode ser interrompido por uma oscilação normal do preço.

  4. Não tem em conta os custos de transação.

  5. O tempo de detecção é limitado e pode ser exagerado.

Solução:

  1. Optimizar os parâmetros ou introduzir outros sinais de verificação de indicadores.

  2. Aumentar a identificação de vibrações e canais.

  3. Ajustar o ponto de parada de acordo com a dinâmica de indicadores como o ATR.

  4. Adição de taxas, cálculo de pontos de deslizamento.

  5. Aumentar o tempo de retrospectiva e a validação em vários mercados.

Direção de otimização

A estratégia pode ser otimizada em:

  1. Teste a combinação de diferentes indicadores.

  2. Aumentar a identificação de variações de tendências.

  3. Introdução de parâmetros de otimização dinâmica de métodos de aprendizagem de máquina.

  4. Optimizar a estratégia de stop loss com base no feedback.

  5. Avaliação e inclusão de custos de transação.

  6. Optimizar o espaço dos parâmetros para encontrar o melhor parâmetro Settings。

  7. Aumentar a gestão de dinheiro para controlar o risco de posição.

Resumir

A estratégia de determinar a direção da tendência através de indicadores de Brinks e acompanhar o stop loss para controlar o risco, a lógica de negociação global é simples e clara. A estratégia tem um bom efeito de captura de tendências, mas pode ser melhorada com a introdução de mais indicadores técnicos, parâmetros de otimização e adição de cálculo de custos, etc., para tornar a estratégia mais estável e confiável.

Código-fonte da estratégia
/*backtest
start: 2022-09-15 00:00:00
end: 2023-09-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Bollinger Band Breakout", shorttitle = "BB Strategy",initial_capital=1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, commission_type = strategy.commission.percent, commission_value = 0.3, max_bars_back = 1000, overlay=true)

// Inputs //

sma = input(20,  minval=1)
mult   = input(1.2, minval=0.001, maxval=50)
src = input(close)

// alert msg  //

message_long_entry  = input("long entry")
message_short_entry = input("short entry")

// Calculations //

basis = sma(close, sma)
dev   = mult * stdev(close, sma)

upper = basis + dev
lower = basis - dev

// Backtest //
fromyear = input(2019, defval = 2019, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(1, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

leverage = input(1, "Leverage")

term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))

// PLOT //

plot(basis, color = color.gray,  linewidth = 2)
lu = plot(upper, color = color.green, linewidth = 2)
ll = plot(lower, color = color.red,   linewidth = 2)

fill(lu, ll, color = color.gray)

// Signals //

long  = crossover(close, upper)
short = crossunder(close, lower)

// Strategy entry //
strategy.initial_capital = 50000
if (long and term)
    strategy.entry("long",  strategy.long, qty=strategy.initial_capital/close*leverage, when = long and barstate.isconfirmed, alert_message = message_long_entry)
    
if (short and term)
    strategy.entry("short",  strategy.short, qty=strategy.initial_capital/close*leverage, when = short and barstate.isconfirmed, alert_message = message_short_entry)

// strategy exit //

strategy.exit("long tsl", "long", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)
strategy.exit("short tsl", "short", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)