Estratégia de ruptura da volatilidade adaptativa

Autora:ChaoZhang, Data: 2024-01-08 14:38:31
Tags:

img

Resumo

A estratégia de ruptura de volatilidade adaptativa é uma estratégia de tendência. Identifica os sinais de ruptura quando os preços sobem fortemente acima de um certo nível, estabelece posições longas e continua a acompanhar a tendência de alta para lucro no dia seguinte.

A estratégia foi proposta por Larry R. Williams, um famoso comerciante de futuros e ações. Ele tenta capturar pontos de ruptura de preços, que muitas vezes significam voltas no mercado. Ao identificar esses sinais e estabelecer posições em tempo hábil, lucros podem ser obtidos seguindo novas direções de tendência.

Princípio

A métrica central desta estratégia é o certo nível, calculado por:

Certain level = Close + k * (High - Low) 

Onde k é um coeficiente empírico, avaliado em 0,6. Esta fórmula incorpora a volatilidade dos preços mais altos e mais baixos, tornando os pontos de ruptura mais flexíveis para se adaptar às flutuações do mercado.

Quando o preço mais alto do dia ultrapassa o certo nível calculado, indica uma quebra de preço. A estratégia estabelecerá então uma posição longa. A posição será inteiramente fechada no dia seguinte aberto para lucro.

O stop loss é definido na metade do preço mais baixo e do preço de entrada do dia anterior, impedindo que a perda se expanda.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. Captura da volatilidade, seguimento da tendência: a estratégia incorpora os preços mais altos e mais baixos para calcular pontos de ruptura flexíveis que captam os ritmos de flutuação dos preços.

  2. Entrada atempada, acompanhamento da tendência: o cálculo diário dos sinais de ruptura permite a identificação atempada de novas tendências para acompanhar as etapas da tendência de alta do preço.

  3. Controlo adequado do risco: uma definição razoável de stop loss controla eficazmente perdas individuais.

Análise de riscos

Os riscos desta estratégia incluem:

  1. Risco de ruptura fracassada: as rupturas de preços não sustentam necessariamente uma tendência de alta e podem ser falsas rupturas de curto prazo, causando perdas.

  2. Risco de mercado extremo: em eventos de mercado extremos, como quedas de mercado, os preços podem aumentar ou diminuir causando gatilhos de stop loss e perdas enormes.

  3. Risco de negociação excessivo: a abertura e o encerramento diários de posições aumentam a frequência de negociação e as comissões.

Optimização

A estratégia pode ser otimizada a partir dos seguintes aspectos:

  1. Adicionar um multiplicador: adicionar um multiplicador à fórmula de ruptura, reduzindo-o adequadamente quando a volatilidade do mercado aumenta e aumentando-o quando o mercado se estabiliza, tornando a estratégia mais elástica.

  2. Prorrogação do período de retenção: prorrogar o período de retenção para 2 ou 3 dias para filtrar falsas rupturas de curto prazo.

  3. Otimizar o stop loss: definir o stop loss em níveis de suporte mais profundos, como a faixa inferior de Bollinger ou o fechamento do dia anterior.

Conclusão

A estratégia de ruptura de volatilidade adaptativa rastreia as tendências rastreando dinamicamente a volatilidade e os ritmos dos preços. Em comparação com as estratégias de ruptura tradicionais, é mais flexível e capaz de capturar os movimentos dos preços.


/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © Dicargo_Beam

//@version=5
strategy("Volatility Breakout Strategy", overlay=true, default_qty_type= strategy.percent_of_equity, default_qty_value=100,process_orders_on_close=false)

k = input.float(0.6)


[o,h,l,c] = request.security(syminfo.tickerid,"D",[open,high,low,close])

lp = math.log(c[1])+(math.log(h[1])-math.log(l[1]))*k
_lp = math.pow(2.718,lp)

longcond = _lp < high
exit = hour==0 or  math.log(close) < (math.log(l[1])+lp)/2



plot(_lp,"Entry",color=color.yellow)
//plot(l,"Yesterday's Low")
plot((_lp+l[1])/2,"StopLoss",color=color.red)


strategy.entry("Long", strategy.long,comment = "Long", when = longcond and strategy.opentrades == 0)

strategy.close("Long", comment="Exit", when = exit)


var bg = 0
bg := if hour == 0
    bg + 1
else
    bg[1]

bgcolor(bg/2== math.floor(bg/2) ? color.new(color.blue,95):na)




Mais.