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

Autora:ChaoZhang, Data: 2023-12-11 14:20:48
Tags:

img

Resumo

A estratégia de negociação de volatilidade é uma estratégia baseada em ação de preço única. Ela gera sinais de compra e venda analisando mudanças de preço e volume. Esta estratégia também pode ser combinada com alertas para desencadear ordens em outras bolsas ou sistemas.

Estratégia lógica

Esta estratégia analisa os preços de fechamento, abertura, alto e baixo dos candelabros para determinar as tendências e o ímpeto dos preços.

Especificamente, verifica se os preços de fechamento dos três candelabros mais recentes são continuamente mais altos ou mais baixos do que os preços de abertura.

Além disso, essa estratégia rastreia o volume máximo durante um determinado período. Se o volume do candelabro atual exceder o valor máximo durante o período recente, sugere um volume de negociação crescente e forças fortes entrando no mercado.

Quando o preço quebra em três velas consecutivas e o volume de negociação se expande, a estratégia produzirá sinais de compra ou venda.

Vantagens

Trata-se de uma estratégia simples, mas eficaz, que utiliza ações de preços e sinais de volume.

  1. Lógica clara, fácil de compreender e implementar
  2. É altamente sensível às alterações voláteis do mercado, captando as mudanças em tempo hábil
  3. Requer apenas dados básicos de velas e volume, sem algoritmos complexos
  4. Parâmetros flexíveis adaptáveis a diferentes produtos e prazos
  5. Baixo custo, adequado para pequenos investidores

Análise de riscos

Há também alguns riscos potenciais:

  1. Não há previsão de preços, existe alguma cegueira
  2. São propensos a sinais falsos de toques acidentais
  3. Pode gerar sinais inadequados em mercados de intervalo
  4. Não há mecanismo de stop loss, riscos de expansão das perdas

Para mitigar esses riscos, pode-se considerar a adição de stop loss móveis, a otimização de combinações de parâmetros ou a combinação com outros indicadores ou estratégias.

Orientações de otimização

Como estratégia básica, ainda há muito espaço para otimização:

  1. Adicionar mecanismos de stop loss para controlar as perdas
  2. Otimizar os parâmetros para se adequarem a mais produtos e períodos
  3. Adicionar outros indicadores aos sinais filtrados
  4. Combinar com estratégias de acompanhamento de tendências para ajuste automático de tendências
  5. Incorporar algoritmos de aprendizagem de máquina para parâmetro dinâmico e otimização de sinal
  6. Construir módulos de pesquisa quantitativa e feedback para evolução contínua

Conclusão

Em conclusão, esta é uma estratégia baseada na ação de preço muito prática. Tem os méritos de ser intuitivo, fácil de entender e implementar a baixos custos. Enquanto isso, também tem certa cegueira e precisa de mais otimizações e combinações para melhorar o desempenho.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-03-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("SPAS", overlay=true, pyramiding=5, calc_on_order_fills=true)

int signal_hh = 0
int signal_ll = 0

if close[1] >= open[1] and close[2] >= open[2] and close[3] >= open[3]
    signal_hh := 1

if close[1] <= open[1] and close[2] <= open[2] and close[3] <= open[3]
    signal_ll := 1

plotchar(signal_hh, char='H', size=size.tiny, location=location.abovebar)
plotchar(signal_ll, char='L', size=size.tiny, location=location.abovebar)

int signal_vol = 0
float max_volume = 0.0
int vol_length = input(title="Volume length", type=input.integer, defval=3)

for i = vol_length to 1
    if volume[i] > max_volume
        max_volume := volume[i]

if volume[0] > max_volume
    signal_vol := 1

plotchar(signal_vol, char='V', size=size.tiny, location=location.bottom)

int signal_buy = 0
int signal_sell = 0

if signal_hh and signal_vol
    signal_buy := 1
    label.new(bar_index, high, "B", color=color.green)
    strategy.entry("buy", strategy.long, 5)//, when=strategy.position_size <= 0)

if signal_ll and signal_vol
    signal_sell := 1
    label.new(bar_index, low, "S", color=color.red)
    strategy.entry("sell", strategy.short, 5)//, when=strategy.position_size > 0)

//plotchar(signal_buy, char='B', color=color.green, size=size.tiny, location=location.abovebar)
plotarrow(signal_buy, colorup=color.green, colordown=color.orange, transp=0, maxheight=20)

//plotchar(signal_sell, char='S', color=color.red, size=size.tiny, location=location.abovebar)
plotarrow(signal_sell * -1, colorup=color.green, colordown=color.orange, transp=0, maxheight=20)



Mais.