Estratégia de negociação de choque de tendência Bollinger

Autora:ChaoZhang, Data: 2023-11-23 10:48:58
Tags:

img

Resumo

Esta estratégia usa o indicador Bollinger Bands para determinar a direção da tendência do mercado, e toma negociações contra-tendência quando ocorre uma reversão da tendência.

Princípio da estratégia

Esta estratégia utiliza a faixa média, faixa superior e faixa inferior das Bandas de Bollinger para determinar a direção da tendência do mercado. A faixa média é a média móvel exponencial de n períodos, enquanto a faixa superior e a faixa inferior são a faixa média +2,3 desvio padrão e a faixa média -2,3 desvio padrão, respectivamente. Quando o preço quebra abaixo da faixa inferior, indica uma tendência de alta atual. Quando o preço quebra acima da faixa superior, indica uma tendência de queda atual.

Além disso, a estratégia estabelece uma média móvel simples de 200 períodos (SMA) como referência para julgamento de tendências de longo prazo. Os sinais de negociação só são acionados quando os indicadores BB e sma concordam com a mesma direção. Isso pode efetivamente filtrar algumas falhas.

A lógica específica de negociação é a seguinte:

  1. Determinação da tendência ascendente: BB banda superior > sma, banda média > sma, banda inferior >= sma
  2. Determinação da tendência descendente: faixa superior BB < sma, faixa média < sma, faixa inferior <= sma
  3. Condição longa: Tendência ascendente + quebra de preço BB faixa inferior
  4. Condição de saída: Preço quebra faixa superior BB
  5. Condição curta: Tendência descendente + quebra de preço da faixa superior BB
  6. Condição de saída: o preço rompe abaixo da faixa média BB ou rebota de volta acima da MA de 230 períodos

Análise das vantagens

  1. O BB avalia eficazmente a direcção da tendência e capta oportunidades de negociação de ruptura
  2. A adição de um filtro de MA a longo prazo reduz os riscos associados a falhas
  3. Lógica clara longa e curta, fácil de entender e seguir
  4. Critérios rigorosos para a saída curta ajudam a limitar perdas

Análise de riscos

  1. Possíveis grandes deslizamentos quando o BB e o MA emitirem sinais de negociação
  2. Condições de curto prazo demasiado rigorosas levam a um lucro marginal curto limitado
  3. Ajuste inadequado dos parâmetros pode resultar em frequência de negociação demasiado elevada/baixa
  4. Estratégias de fuga propensas a perdas enormes

Melhorias:

  1. Otimizar os parâmetros do BB para reduzir a frequência de negociação
  2. Configure stop loss para evitar perdas enormes por negociação
  3. Adicionar um filtro de volume para garantir a validade da fuga

Resumo

No geral, esta é uma estratégia simples e fácil de entender, usando BB para determinar tendências e tomar negociações contra-tendência em pontos de virada. Adicionar indicadores de curto prazo e de referência também ajuda a filtrar sinais. Ainda há um grande espaço para otimizações, como ajuste de parâmetros, indicadores de volume etc. pode melhorá-lo ainda mais.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Aayonga

//@version=5
strategy("布林趋势震荡单", overlay=true,initial_capital=10000,default_qty_type=strategy.fixed, default_qty_value=1 )
bollL=input.int(20,minval=1,title = "长度")
bollmult=input.float(2.3,minval=0,step=0.1,title = "标准差")
basis=ta.ema(close,bollL)
dev=bollmult*ta.stdev(close,bollL)
upper=basis+dev
lower=basis-dev
smaL=input.int(200,minval=1,step=1,title = "趋势分界线")
sma=ta.sma(close,smaL)
//多头趋势
longT=upper>sma and basis>sma and lower>=sma
//空头趋势
shortT=upper<sma and basis<sma and lower<=sma

//入场位
longE=ta.crossover(close,lower)
shortE=ta.crossover(close,upper)
//出场位

longEXIT=ta.crossover(high,upper) 
shortEXIT=ta.crossunder(close,basis) or ta.crossover(close,ta.sma(close,230)) 

if longT and longE
    strategy.entry("多",strategy.long)

if longEXIT
    strategy.close("多",comment = "多出场")

if shortE and shortT
    strategy.entry("空",strategy.short)

if shortEXIT
    strategy.close("空",comment = "空出场")

Mais.