Estratégia de ruptura de Bollinger

Autora:ChaoZhang, Data: 2021-09-21 10:38:13
Tags:

Resumo

Esta estratégia é baseada no indicador Bollinger Bands, tomando posições longas ou curtas quando o preço sai das linhas superiores ou inferiores das Bandas de Bollinger.

Estratégia lógica

  1. Calcular a linha média de Bollinger, as linhas superior e inferior
  2. Vão longos no breakout da linha inferior; vão curtos no breakout da linha superior
  3. Defina a hora de início e de fim para definir as horas de negociação
  4. Configurar o tempo de espera, por defeito para saída intradiária

Especificamente, ele primeiro calcula a SMA da linha média do comprimento do comprimento e as linhas superior/inferior de múltiplos vezes o desvio padrão. Quando o fechamento quebra para cima da linha inferior, vá longo. Quando o fechamento quebra da linha superior, vá curto. Também defina o horário de início e fim para limitar os horários de negociação. Saia antes da abertura diária.

A estratégia tenta capturar movimentos em expansão após o preço sair das faixas.

Análise das vantagens

  1. Simples e intuitivos, fáceis de compreender e implementar
  2. Utilize Bandas de Bollinger para julgar breakouts de tendência, tem alguma tendência seguindo capacidade
  3. Ajuste flexível dos parâmetros para diferentes ciclos e produtos
  4. Controles de saída intradiária de risco overnight
  5. Pode permitir apenas negociação longa ou curta

Análise de riscos

  1. Risco falso de fuga, o preço pode retroceder após a fuga inicial.
  2. Precisamos de ajustes de parâmetros para diferentes ciclos.
  3. Risco de expansão de perdas potenciais.
  4. Aumento dos custos de transacção.

Os riscos podem ser reduzidos através da otimização das regras de entrada, adição de stop loss, introdução de filtros de tendência, etc.

Orientações de otimização

  1. Otimizar parâmetros para diferentes ciclos
  2. Adicionar regras de reentrada e pirâmide para seguir as tendências
  3. Introduzir o stop loss para controlar os riscos
  4. Definir horários de negociação para evitar eventos noticiosos significativos
  5. Filtros de tendência de teste para evitar ações de preços agitadas
  6. Avaliação dos diferentes períodos de detenção e comparação dos resultados

Resumo

Esta é uma estratégia de breakout baseada em Bandas de Bollinger. Ele lucrar com movimentos de breakout. Os prós são lógica simples e implementação fácil; Cons são suscetíveis a falsas breakouts. Os riscos podem ser gerenciados através de otimização de parâmetros, stop loss, controle de horas de negociação, etc. Ele permite que os comerciantes entendam os fundamentos do uso de indicadores e breakouts de negociação.


/*backtest
start: 2023-08-21 00:00:00
end: 2023-09-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's Bollinger Strategy v1.0", shorttitle = "Bollinger str 1.0", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, minval=1)
mult = input(1.0, minval=0.001, maxval=50)

fromyear = input(1900, defval = 1900, 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")

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

upper = basis + dev
lower = basis - dev

up = close < lower
dn = close > upper
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)

if up
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))

if dn
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, 01, 00, 00) and time < timestamp(toyear, tomonth, 31, 00, 00)))
    
if time > timestamp(toyear, tomonth, 31, 00, 00) or exit
    strategy.close_all()

Mais.