Estratégia de negociação de ruptura de volatilidade

Autora:ChaoZhang, Data: 2023-10-30 16:58:03
Tags:

img

Resumo

A estratégia de negociação de volatilidade tem como objetivo capturar as quebras de preço resultantes do aumento da volatilidade do mercado. A estratégia usa o indicador Average True Range (ATR) para medir a volatilidade de um ativo durante um período especificado.

Estratégia lógica

A estratégia primeiro calcula o ATR durante um período escolhido. Em seguida, usa o ATR para calcular um nível de ruptura superior e inferior. Quando o preço de fechamento quebra acima do nível superior, um sinal longo é gerado. Quando o preço de fechamento quebra abaixo do nível inferior, um sinal curto é gerado. Para confirmar ainda mais os sinais, a barra atual precisa fechar para sua parte do corpo.

Quando o preço de fechamento quebra os níveis superior ou inferior, a zona de ruptura é preenchida com uma cor que indica a direção da ruptura.

Quando um sinal longo é gerado e não há posição atual, a estratégia é longa.

A entrada de comprimento determina o período durante o qual a volatilidade é medida. Um valor de comprimento maior implica focar em movimentos de preço mais longos. Por exemplo, com comprimento definido em 20, cada negociação abrange cerca de 100 bares, capturando várias oscilações.

A redução do valor de comprimento permite direcionar movimentos de preços de curto prazo e potencialmente aumentar a frequência de negociação.

Análise das vantagens

O indicador ATR calcula dinamicamente os níveis de ruptura em vez de usar parâmetros fixos.

Usando fechamentos de barras sólidas para confirmar sinais, filtra falsos breakouts.

A entrada de comprimento proporciona flexibilidade para otimizar a estratégia para condições específicas de mercado.

Análise de riscos

A negociação de breakout comporta o risco de ser interrompida.

Os sinais de ruptura podem gerar sinais falsos que levam a uma troca excessiva.

A otimização de parâmetros requer dados de negociação suficientes.

Oportunidades de otimização

As bandas de Bollinger podem ser introduzidas dentro do período ATR para calcular novos níveis de ruptura.

As tendências podem ser acompanhadas depois das breakouts em vez de serem interrompidas imediatamente.

No mercado limitado a intervalos, podem ser considerados parâmetros diferentes ou evitar-se completamente os negócios para evitar os "whipsaws".

Conclusão

A estratégia de negociação de breakout de volatilidade capitaliza a volatilidade aumentada do mercado para entrar em movimentos de tendência quando os preços quebram significativamente. O indicador ATR define dinamicamente os níveis de breakout e as barras sólidas filtram falhas. A entrada de comprimento fornece flexibilidade para ajustar o período da estratégia.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 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/

//@version=5
strategy("Volatility Breakout Strategy [Angel Algo]", overlay = true)

// Inputs
length = input(title="Length", defval=20)

// Calculate the average true range (ATR)
atr = ta.atr(length)

// Plot the ATR on the chart
plot(atr, color=color.blue, linewidth=2, title="ATR")

// Calculate the upper and lower breakouts
upper_breakout = high + atr
lower_breakout = low - atr

// Plot the upper and lower breakouts on the chart
ul = plot(upper_breakout[1], color = color.new(color.green, 100), linewidth=2, title="Upper Breakout Level")
ll = plot(lower_breakout[1], color = color.new(color.red, 100), linewidth=2, title="Lower Breakout Level")

// Create the signals
long_entry = ta.crossover(close, upper_breakout[1]) and barstate.isconfirmed
short_entry = ta.crossunder(close, lower_breakout[1]) and barstate.isconfirmed

active_signal_color =ta.barssince(long_entry) < ta.barssince(short_entry) ? 
   color.new(color.green,85) : color.new(color.red,85)

// Plot the signals on the chart
plotshape(long_entry and ta.barssince(long_entry[1]) > ta.barssince(short_entry[1]), location=location.belowbar, style=shape.triangleup, 
   color=color.green, size=size.normal, text = "Bullish breakout", textcolor = color.green)
plotshape(short_entry and ta.barssince(long_entry[1]) < ta.barssince(short_entry[1]), location=location.abovebar, style=shape.triangledown, 
   color=color.red, size=size.normal,text = "Bearish breakout",  textcolor = color.red)

// Fill the space between the upper and lower levels with the color that indicates the latest signal direction
fill(ul,ll, color=active_signal_color)   

long_condition = long_entry and strategy.position_size <= 0 and barstate.isconfirmed
short_condition = short_entry and strategy.position_size >= 0 and barstate.isconfirmed

if long_condition
    strategy.entry("Volatility Breakout Long", strategy.long)


if short_condition
    strategy.entry("Volatility Breakout Short", strategy.short)


Mais.