Estratégia avançada de rastreamento da tendência da grade de média móvel da banda de Bollinger

Autora:ChaoZhang, Data: 2023-11-24 14:48:28
Tags:

img

Resumo

A estratégia é chamada de Advanced Bollinger Band Moving Average Grid Trend Tracking Strategy. É uma estratégia que usa Bollinger Bands e médias móveis para determinação de tendências e estabelece posições de grade para rastrear a direção da tendência.

Princípio

A ideia principal desta estratégia é a seguinte:

  1. Use as Bandas de Bollinger para julgar a faixa de volatilidade atual do mercado.

  2. As quatro linhas fora das Bandas de Bollinger são múltiplos anormais das linhas médias de amplitude de volatilidade verdadeira.

  3. As médias móveis rápidas e lentas da EMA determinam a direcção da tendência do grande ciclo.

  4. Seguir e construir posições na direção da tendência, fechar posições para lucro quando ver barras de pin.

Especificamente, as principais partes desta estratégia são:

  1. Determine os parâmetros das Bandas de Bollinger. O trilho médio das Bandas de Bollinger é a média móvel SMA de n dias e a largura das Bandas de Bollinger é o ATR de n dias. O comprimento de Bollinger n na estratégia é 20.

  2. A distância entre as linhas e o trilho do meio é 1,236 vezes, 2,382 vezes, 3,618 vezes e 4,236 vezes a amplitude de volatilidade verdadeira média.

  3. A duração da linha rápida é de 25 dias e a linha lenta é de 200 dias.

  4. Estabeleça posições longas gradualmente ao quebrar as quatro linhas abaixo em uma grande tendência de alta do ciclo.

  5. Quando uma barra de pin aparece ou o preço cruza novamente a média móvel do grande ciclo, é considerado como um sinal de encerramento de barra de pin para fechar posições com lucro.

O que precede é o principal princípio técnico desta estratégia. Julgando a faixa de volatilidade atual através de Bandas de Bollinger e estabelecendo posições sob a tendência do grande ciclo, o efeito final de posições de alta probabilidade pode ser alcançado.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. Fazer pleno uso das características da tendência, determinar a direção da tendência em grandes ciclos, construir posições na direção da tendência para reduzir operações reversas desnecessárias.

  2. A utilização de linhas de Bollinger múltiplas permite avaliar mais claramente a faixa de volatilidade atual, o que favorece a captura da maioria das tendências.

  3. O método da posição em rede permite distribuir uniformemente os riscos entre cada unidade de fundos para obter retornos estáveis.

  4. O uso de sinais de alta eficiência de barra de pin para o fechamento de posições pode bloquear rapidamente os lucros.

  5. A estratégia global integra a determinação da tendência, as posições de rede e o fechamento de posições específicas de sinal.

Análise de riscos

Esta estratégia apresenta também alguns riscos:

  1. Probabilidade de determinação incorreta da tendência do grande ciclo Há alguma probabilidade de erro nas médias móveis rápidas e lentas, o que pode levar a operações reversas desnecessárias.

  2. Probabilidade de falhas de ruptura da linha de Bollinger.

  3. Os sinais de barra de pin podem sair tarde e não conseguirem obter lucros a tempo.

  4. É fácil formar muitas posições sobrepostas durante os ajustes de choque de grande ciclo.

As soluções correspondentes são:

  1. Ajustar os parâmetros da média móvel rápida e lenta para reduzir a probabilidade de erros.

  2. Ajuste os parâmetros da linha de Bollinger para que as linhas de Bollinger se apeguem à maioria das flutuações tanto quanto possível.

  3. Teste padrões específicos mais sensíveis para sinais de lucro.

  4. Aumentar a distância de intervalo para controlar o tamanho da posição.

Orientações de otimização

A estratégia pode ser otimizada nas seguintes direcções:

  1. Teste diferentes parâmetros da média móvel para otimizar as determinações da tendência do grande ciclo.

  2. Teste diferentes parâmetros ATR múltiplos para otimizar as configurações de largura do canal de Bollinger.

  3. Teste outros sinais eficientes de lucro, por exemplo, SAR, Kalman Lines, etc.

  4. Otimizar o intervalo de rede para que os intervalos de volatilidade sejam mais uniformemente divididos para reduzir as posições sobrepostas.

  5. Aumentar os mecanismos de stop loss e evitar grandes perdas em condições de mercado extremas.

Resumo

A estratégia integra o uso do canal de Bollinger, indicadores de média móvel, padrões específicos de linha K e outros meios técnicos. Sob a premissa de determinar a tendência do grande ciclo, ela constrói uma estratégia de rede de rastreamento de tendências baseada em médias móveis e Bandas de Bollinger. Em comparação com os breakouts tradicionais de Bandas de Bollinger, esta estratégia adiciona julgamento característico da tendência, o que pode reduzir posições reversíveis desnecessárias. Ao mesmo tempo, o método de posição de grade diversifica os riscos para cada unidade de fundos para obter retornos estáveis. A estratégia pode ser otimizada a partir de vários ângulos, como determinação de tendência, largura de Bollinger, sinais de lucro, métodos de stop loss, etc., para obter efeitos estratégicos mais estáveis.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 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("fib trend grid@Aa", overlay=true)

//回测时间
useDateFilter=input.bool(true,title = "启用回测时间范围限定(backtest)", group = "回测范围(backtest)")
backtesStarDate=input(timestamp("1 Jan 2015"),title = "开始时间(Start)", group = "回测范围(backtest)")
backtestEndDate=input(timestamp("1 Jan 2040"),title = "结束时间(finish)",group = "回测范围(backtest)")
inTradeWindow=true


//入场位 entry
bolllen=input.int(defval=20,minval=1,title="布林长度,(boll length)",group = "入场位(entry)")
sma=ta.sma(close,bolllen)
avg=ta.atr(bolllen)
fib1=input(defval=1.236,title="Fib 1",group = "入场位(entry)")
fib2=input(defval=2.382,title="Fib 2",group = "入场位(entry)")
fib3=input(defval=3.618,title="fib 3",group = "入场位(entry)")
fib4=input(defval=4.236,title="Fib 4",group = "入场位(entry)")
r1=avg*fib1
r2=avg*fib2
r3=avg*fib3
r4=avg*fib4
top4=sma+r4
top3=sma+r3
top2=sma+r2
top1=sma+r1
bott1=sma-r1
bott2=sma-r2
bott3=sma-r3
bott4=sma-r4



//趋势 plot

t4=plot(top4,title="卖 (sell)4",color=color.rgb(244, 9, 9))
t3=plot(top3,title = "卖(sell) 3",color=color.rgb(211, 8, 8))
t2=plot(top2,title="卖 (sell)2",color=color.rgb(146, 13, 13))
t1=plot(top1,title="卖(sell) 1",color=color.rgb(100, 3, 3))

b1=plot(bott1,title="买(buy1)1",color=color.rgb(4, 81, 40))
b2=plot(bott2,title="买(buy)2",color=color.rgb(15, 117, 46))
b3=plot(bott3,title = "买(buy)3",color =color.rgb(8, 176, 42) )
b4=plot(bott4,title="买(buy)4",color=color.rgb(15, 226, 103))
plot(sma,style=plot.style_cross,title="SMA",color=color.rgb(47, 16, 225))

//趋势
LengthF=input(defval = 25,title = "快线长度(fastlength)")
LengthS=input(defval=200,title = "慢线长度(slowlength)")
emaF=ta.ema(close,LengthF)
smaS=ta.sma(close,LengthS)
longTrend=emaF>smaS
longb=ta.crossover(emaF,smaS)
bgcolor(longb ? color.new(color.green,40):na,title = "多头强势(bull trend)")
shortTrend=smaS>emaF
shortb=ta.crossunder(emaF,smaS)
bgcolor(shortb ? color.new(#951313, 40):na,title = "空头强势(bear trend)")

//pinbar
bullPinBar = ((close > open) and ((open - low) > 0.6* (high - low))) or ((close < open) and ((close - low) > 0.9 * (high - low)))
//plotshape(bullPinBar  , text ="pinbar", textcolor=color.rgb(9, 168, 144),location=location.belowbar, color=color.rgb(29, 103, 67), size=size.tiny)
bearPinBar = ((close > open) and ((high - close) > 0.7 * (high - low))) or ((close < open) and ((high - open) > 0.7 * (high - low)))
//plotshape(bearPinBar  , text ="pinbar", textcolor=color.rgb(219, 12, 12),location=location.abovebar, color=color.rgb(146, 7, 7), size=size.tiny)

buy1=ta.crossunder(close,bott1) and longTrend and close>ta.ema(close,100)
buy2=ta.crossunder(close,bott2) and longTrend 
buy3=ta.crossunder(close,bott3) and longTrend 
buy4=ta.crossunder(close,bott4) and longTrend 
buyclose=bearPinBar or ta.crossunder(close,smaS)




if buy2 or buy3 or buy4 or buy1 and inTradeWindow
    strategy.order("多(buy)",strategy.long)

if buyclose  and inTradeWindow
    strategy.close("多(buy)")

sell1=ta.crossover(close,top1) and shortTrend and close<ta.ema(close,200)
sell2=ta.crossover(close,top2) and shortTrend and close<ta.ema(close,200)
sell3=ta.crossover(close,top3) and shortTrend and close<ta.ema(close,200)
sell4=ta.crossover(close,top4) and shortTrend and close<ta.ema(close,200)
sellclose=bullPinBar or ta.crossover(close,ta.sma(close,220))

if  sell1 or sell2 or sell3 or sell4 and inTradeWindow
    strategy.order("空(sell)",strategy.short)

if sellclose  and inTradeWindow
    strategy.close("空(sell)")
     

Mais.