Estratégia de Impulso Baseada no Espremimento do LazyBear

Autora:ChaoZhang, Data: 21-12-2023 14:22:49
Tags:

img

Resumo

A principal ideia desta estratégia é baseada no indicador Squeeze Momentum da LazyBear para analisar o momento da compra e venda. Ele analisa os pontos de inflexão na tendência do momento, localizando os picos e os vales como sinais de venda e compra, respectivamente. Como é uma estratégia longa, também leva em consideração a média móvel exponencial de 50 períodos para identificar tendências ascendentes. Se o preço de fechamento da vela estiver acima do 50EMA, e a inclinação do 50EMA estiver tendendo para cima, então o sinal de compra é executado.

Princípio da estratégia

Esta estratégia incorpora Bandas de Bollinger e Canais de Keltner para identificar tendências e zonas de compressão. Especificamente, calcula Bandas de Bollinger de 20 períodos e Canais de Keltner de 20 períodos. Quando as Bandas de Bollinger caem inteiramente dentro dos Canais de Keltner, é visto como um sinal de compressão. A zona de compressão é identificada quando a banda inferior das Bandas de Bollinger passa acima da banda inferior dos Canais de Keltner e a banda superior das Bandas de Bollinger passa abaixo da banda superior dos Canais de Keltner. Por outro lado, quando a banda inferior das Bandas de Bollinger cai abaixo da banda inferior dos Canais de Keltner e a banda superior das Bandas de Bollinger sobe acima da banda superior dos Canais de Keltner, é uma zona de não compressão.

Além disso, a estratégia utiliza regressão linear para analisar a mudança na inclinação do momentum. Ele calcula o valor de regressão linear do preço nos últimos 20 períodos menos o preço típico. Quando a inclinação do valor de regressão linear é positiva, é vista como uma tendência ascendente. Quando a inclinação é negativa, é uma tendência descendente. Dentro da zona de compressão, se houver uma reversão na inclinação do momentum, ele sinaliza uma compra ou venda. Especificamente, quando dentro da zona de compressão, uma mudança de momento de positivo para negativo emite um sinal de venda. E quando dentro da zona de compressão, uma mudança de momento de negativo para positivo emite um sinal de compra.

Para filtrar sinais falsos, a estratégia também julga se o preço de fechamento está acima da média móvel exponencial de 50 dias e se a média móvel exponencial de 50 dias está em uma inclinação ascendente.

Análise das vantagens

Esta é uma estratégia muito inteligente, utilizando dois tipos diferentes de indicadores para fazer um julgamento multidimensional do mercado, o que pode efetivamente evitar falsos sinais.

  1. Aplicação abrangente de bandas de Bollinger, canais de Keltner e indicadores de momento para análise multidimensional e melhoria da precisão.

  2. As zonas de compressão podem identificar efetivamente picos e valas de inversões de momento e capturar curvas com precisão.

  3. A filtragem da tendência baseada no preço de fechamento e na EMA de 50 dias evita a abertura repetitiva de posições durante as consolidações.

  4. Os sinais emitidos apenas durante as zonas de pressão reduzem os falsos sinais e melhoram a taxa de rentabilidade.

  5. O grande espaço de otimização de parâmetros permite otimizações direcionadas através de períodos de ajuste, etc.

  6. Combinando longo e curto, considera tendências de grandes ciclos e integra indicadores de médio prazo, a direcção longa é clara.

Análise de riscos

Apesar de esta estratégia ter múltiplos indicadores técnicos não agrícolas, ainda existem alguns riscos:

  1. Perda de oportunidades de compra/venda quando as bandas de Bollinger e os canais de Keltner divergem.

  2. Podem ocorrer grandes perdas durante altas ou baixas violentas do mercado.

  3. Em mercados de alta volatilidade, as situações de pressão podem não ser óbvias, resultando em menos sinais.

  4. São propensas a perdas de ajustamento durante as transições de alta-baixa.

Para evitar estes riscos, podemos tomar as seguintes medidas:

  1. Otimizar os parâmetros para sincronizar as bandas de Bollinger e os canais de Keltner tanto quanto possível.

  2. Configure stop loss para controlar perda única.

  3. Utilize esta estratégia como parte de uma estratégia de carteira, combinada com outras estratégias.

  4. Reduzir as posições de forma adequada durante os mercados de alta volatilidade.

Orientações de otimização

Ainda há muito espaço para otimizar esta estratégia, principalmente nas seguintes direcções:

  1. Otimizar os períodos das bandas de Bollinger e dos canais de Keltner para sincronizá-los tanto quanto possível.

  2. Teste diferentes fatores multiplicadores para encontrar combinações ideais de parâmetros.

  3. Tente introduzir outros indicadores para confirmação, tais como RSI etc.

  4. Com base nos modelos Wen Hua Five Color Lines, utilize seletivamente esta estratégia dependendo dos estágios do mercado.

  5. Adotar o aprendizado de máquina, etc., para otimizar dinamicamente os parâmetros.

  6. Testes de retorno em diferentes moedas para encontrar os produtos comerciais mais adequados.

  7. Explorar a eficácia desta estratégia em períodos de tempo mais longos (diário, semanal, etc.).

Conclusão

A estratégia LazyBear Squeeze Momentum emprega de forma abrangente vários indicadores técnicos, identificando com precisão reversões de momentum para negociação durante zonas de aperto, evitando a abertura repetitiva de posições durante mercados não-trend.


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

//@version=4

//
// @author LazyBear 
// List of all my indicators: https://www.tradingview.com/v/4IneGo8h/
//
initialBalance = 8000

strategy("Crypto momentum strategy", overlay=false)


length = input(20, title="BB Length")
mult = input(2.0, title="BB MultFactor")
lengthKC = input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")

useTrueRange = input(true, title="Use TrueRange (KC)", type=input.bool)

// Calculate BB
source = close
basis = sma(source, length)
ema = ema(source, 50)
dev = multKC * stdev(source, length)
upperBB = basis + dev
lowerBB = basis - dev

// Calculate KC
ma = sma(source, lengthKC)
range = useTrueRange ? tr : high - low
rangema = sma(range, lengthKC)
upperKC = ma + rangema * multKC
lowerKC = ma - rangema * multKC

sqzOn = lowerBB > lowerKC and upperBB < upperKC
sqzOff = lowerBB < lowerKC and upperBB > upperKC
noSqz = sqzOn == false and sqzOff == false

val = linreg(source - avg(avg(highest(high, lengthKC), lowest(low, lengthKC)), sma(close, lengthKC)), lengthKC, 0)

slope = (val - val[2])
emaSlope = (ema - ema[1])


bcolor = iff(slope > 0, color.lime, color.red)
scolor = noSqz ? color.green : sqzOn ? color.black : color.green
squeeze = (noSqz ? 0 : sqzOn ? 1 : 0)

plot(val, color=color.gray, style=plot.style_line, linewidth=1, title="momentum")
plot(slope, color=bcolor, style=plot.style_circles, linewidth=2, title="slope")
plot(0, color=scolor, style=plot.style_line, linewidth=2, title="squeeze-zero")

co = crossover(slope / abs(slope), 0)
cu = crossunder(slope / abs(slope), 0)

if co and source > ema and emaSlope > 0
    strategy.entry("long", strategy.long, comment="long")
if cu
    strategy.close("long")


Mais.