Estratégia de Bollinger Band com seleção de intervalo de datas

Autora:ChaoZhang, Data: 2024-02-05 16:04:40
Tags:

img

Resumo

Esta estratégia implementa uma estratégia de negociação de Bollinger Band dinâmica com intervalos de datas históricas selecionáveis com base no indicador Bollinger Band. Permite que os usuários escolham os horários de início e fim para backtesting, permitindo assim backtesting e comparação da estratégia de Bollinger Band dinâmica em diferentes períodos de tempo.

Nome da estratégia

A estratégia é chamada Bollinger Band Strategy with Date Range Selection. O nome contém as palavras-chave Bollinger Band e Date Range Selection, resumindo com precisão as principais funções desta estratégia.

Estratégia lógica

O principal princípio desta estratégia é gerar sinais de negociação com base nos trilhos dinâmicos superior e inferior do indicador da Banda de Bollinger. O trilho médio da Banda de Bollinger é a média móvel simples de n dias, enquanto os trilhos superior e inferior são o trilho médio mais e menos m vezes o desvio padrão de n dias, respectivamente. Quando o preço atravessa o trilho inferior, vá longo; quando o preço quebra o trilho superior, vá curto.

Outra característica central desta estratégia é permitir que os usuários selecionem o intervalo de tempo de backtesting. A estratégia fornece parâmetros de entrada para selecionar os horários de início e fim para backtesting em múltiplas dimensões, como mês, dia, ano, hora, minuto, etc. Isso permite que os usuários escolham diferentes períodos de tempo históricos para backtest e validar a estratégia, alcançando uma análise de estratégia mais abrangente e dinâmica.

Especificamente, esta estratégia converte os horários de início e fim selecionados em formato de carimbo horário através da função carimbo horário ((), e, em seguida, define a janela de tempo de backtesting válida da estratégia através das condições time>=start e time<=finish. Isso atinge a função de seleção de faixa de tempo dinâmica.

Vantagens

A maior vantagem desta estratégia é que combina perfeitamente a estratégia de Bollinger Band dinâmica com a seleção arbitrária de intervalos de tempo. Isso permite que os usuários testem e verifiquem estratégias de uma maneira mais flexível e abrangente.

  1. Implementar estratégias dinâmicas de Bandas de Bollinger que possam capturar sinais de inversão de tendência durante os altos e baixos do mercado para negociação de tendências.

  2. Apoio à escolha de intervalos de tempo históricos arbitrários para backtesting para analisar o desempenho da estratégia em diferentes ambientes de mercado, alcançando a otimização dinâmica das estratégias.

  3. Combinada com a adaptabilidade dos indicadores da banda de Bollinger, esta estratégia pode ajustar automaticamente os parâmetros para se adaptarem a alterações mais generalizadas nas condições de mercado.

  4. Fornecer parâmetros ajustáveis para uso a longo e curto prazo para que os utilizadores possam otimizar os parâmetros de acordo com as suas próprias necessidades para tornar as estratégias mais práticas.

  5. Permitir a seleção de horas e minutos específicos para backtesting com maior precisão para uma análise de estratégia mais detalhada.

  6. Suporte de idiomas chinês e inglês para uma boa experiência do usuário.

Riscos

Os principais riscos desta estratégia consistem na incerteza do indicador Bollinger Bands na determinação de inversões de tendência.

  1. O próprio indicador Bollinger Bands não determina perfeitamente as flutuações do mercado e pode haver sinais falsos.

  2. A seleção inadequada dos parâmetros das bandas de Bollinger pode conduzir a um mau desempenho da estratégia ou mesmo a perdas.

  3. Possibilidade de falha do indicador em condições especiais de mercado.

  4. A escolha inadequada do intervalo de datas de backtest pode deixar de lado algumas condições importantes do mercado.

Os seguintes métodos podem ser utilizados para controlar e melhorar estes riscos:

  1. Otimizar os parâmetros da banda de Bollinger e ajustar o ciclo do trilho médio para se adaptar a diferentes produtos e períodos de tempo.

  2. Utilize outros indicadores, tais como a média móvel para confirmação, para reduzir os falsos sinais.

  3. Testar mais períodos de mercado para avaliar a robustez da estratégia.

  4. Definir pontos de stop loss para controlar perdas individuais.

Orientações para a otimização da estratégia

Existem várias direcções principais para otimizar esta estratégia:

  1. Combinar algoritmos de aprendizagem de máquina para obter otimização dinâmica dos parâmetros da banda de Bollinger.

  2. Aumentar a funcionalidade, como os testes de ruptura para avaliar plenamente a estabilidade dos parâmetros.

  3. Adicionar funções como mover stop loss e rastrear stop loss para bloquear lucros e reduzir riscos.

  4. Otimizar a lógica de entrada e definir condições de confirmação, tais como aumentos dos volumes de negociação.

  5. Combinar estratégias como a arbitragem de futuros de índices de ações para expandir o escopo da aplicação da estratégia.

  6. Adicionar funções de execução automática de negociação para a transição do backtesting para negociação ao vivo.

Estas otimizações podem melhorar consideravelmente o desempenho prático e a rentabilidade constante da estratégia.

Resumo

Esta estratégia tem integrado com sucesso a estratégia Bollinger Band com seleção de intervalos de tempo históricos arbitrários. Tal análise de backtesting altamente flexível e dinâmica permite aos usuários ajustar e otimizar com precisão os parâmetros da estratégia em diferentes ambientes de mercado. A visualização fornecida também melhora muito a experiência do usuário. É previsível que esta estratégia possa fornecer aos usuários ferramentas quantitativas poderosas e eficientes.


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

//@version=3

strategy("BB Range", shorttitle = "BB Range", overlay=true, max_bars_back=200)

// Revision:        1
// Author:          @allanster 

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 20, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
FromHour  = input(defval = 17, title = "From Hour", minval = 00)
FromMinute  = input(defval = 00, title = "From Minute", minval = 00)

ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)
ToHour  = input(defval = 23, title = "To Hour", minval = 00)
ToMinute  = input(defval = 59, title = "To Minute", minval = 00)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, FromHour, FromMinute)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, ToHour, ToMinute)        // backtest finish window
window()  => true
source = close
length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)

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

upper = basis + dev
lower = basis - dev

upper_stop = upper * 1.05
lower_stop = lower * 0.95

buyEntry = crossover(source, lower)
sellEntry = crossunder(source, upper)

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower_stop, when = window(), oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper_stop, when=window(), oca_name="BollingerBands",comment="BBandSE")
else
    strategy.cancel(id="BBandSE")





Mais.