Estratégia de negociação de rompimento de intervalo de volatilidade histórica


Data de criação: 2023-09-21 20:38:29 última modificação: 2023-09-21 20:38:29
cópia: 1 Cliques: 677
1
focar em
1617
Seguidores

Visão geral

Esta estratégia baseia-se em uma faixa de flutuação histórica dos preços para determinar os sinais de negociação. Ela calcula a diferença entre o preço mais alto e o preço mais baixo em um determinado período e forma uma faixa de flutuação através de uma média móvel. Quando os preços atravessam a trajetória ascendente e descendente dessa faixa, os sinais de negociação são gerados.

Princípio da estratégia

O indicador central da estratégia é a taxa de flutuação histórica dos preços.

  1. Calcula a diferença entre o preço máximo e o preço mínimo do Bar no passado N, representado por HL

  2. Calcula a média dos preços mais altos e mais baixos do Bar no passado N (H, L)

  3. Taxa de flutuação = HL / avg (H, L)

Onde N é o parâmetro “Volatility Length”.

A taxa de flutuação é calculada de acordo com o seguinte gráfico:

Subida = atual fechamento + atual fechamento * taxa de flutuação

Baixa rotação = atual fechamento - atual fechamento * taxa de flutuação

A trajetória ascendente e descendente é suavizada através da linha média WMA, com o parâmetro “Average Length” [2].

Faça mais quando o preço sobe; faça menos quando o preço desce.

O sinal de equilíbrio é dado de acordo com o parâmetro “Exit Type”:

  1. Quando o tipo de saída é o MA de volatilidade, o preço retorna para o equilíbrio médio da WMA;

  2. Quando o Exit Type é um Range Crossover, o preço retorna ao equilíbrio do trajeto ascendente e descendente.

Vantagens estratégicas

  • Usar oscilações de preços para capturar tendências
  • WMA uniformizado para um intervalo mais estável e confiável
  • A entrada de ruptura facilita a captação dos pontos de viragem da tendência
  • Retorno à linha de equilíbrio ou parada em tempo de subida e descida
  • Optimizar os parâmetros com amplo espaço, adaptando-se a diferentes mercados

Risco estratégico

  • A ruptura do intervalo é propensa ao risco de reversão de salto
  • Os investidores devem ter uma visão clara do que está acontecendo.
  • A linha média WMA às vezes não é sensível o suficiente para identificar uma reversão de tendência
  • Não é fácil de otimizar para parâmetros, requer muita tentativa e erro
  • A retirada é mais arriscada e requer mais atenção na gestão de fundos

Os riscos podem ser reduzidos através das seguintes medidas:

  • Parâmetros de otimização para tornar o intervalo mais estável e confiável
  • Adicionar outros indicadores para evitar o retrocesso
  • Redução do SIZE das transações e foco na gestão de fundos
  • Consideração de um mecanismo de readmissão

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Optimização de parâmetros

Teste diferentes parâmetros de comprimento para encontrar a melhor combinação.

  1. Adicionar outros critérios de avaliação

Por exemplo, se o MACD também forca o ouro ao mesmo tempo em que o preço se acelera, a entrada é maior.

  1. Optimizar o modo de deter perdas

Pode ser otimizado para tracking stop loss com elasticidade, em vez de simples stop loss de ruptura de intervalos.

  1. Adição de mecanismo de reentrada

Após a parada de perda, se a tendência continuar, pode-se definir condições de reentrada e a tendência pode ser seguida novamente.

  1. Optimizar a gestão de posições

A posição de negociação pode ser ajustada dinamicamente de acordo com a volatilidade do mercado.

Resumir

A estratégia em geral é mais adequada para o comportamento de tendência, através de trajetórias e subtrajetórias na volatilidade para julgar a direção e a força da tendência, e em conjunto com a linha média WMA para formar uma faixa de negociação mais confiável, resultando em pontos de venda e venda. Mas também há alguns problemas, como o atraso na determinação da tendência, o método de parada pode ser melhorado, etc.

Código-fonte da estratégia
/*backtest
start: 2023-09-13 00:00:00
end: 2023-09-20 00:00:00
period: 5m
basePeriod: 1m
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/
// © wbburgin

//@version=5
strategy("Volatility Range Breakout Strategy [wbburgin]", shorttitle = "VRB Strategy [wbburgin]", overlay=true,
 pyramiding=20,max_bars_back=2000,initial_capital=10000)

wma(float priceType,int length,float weight) =>
    norm = 0.0
    sum = 0.0
    for i = 0 to length - 1
        norm := norm + weight
        sum := sum + priceType[i] * weight
    sum / norm

// This definition of volatility uses the high-low range divided by the average of that range.
volatility(source,length) =>
    h = ta.highest(source,length)
    l = ta.lowest(source,length)
    vx = 2 * (h - l) / (h + l)
    vx

vm1 = input.int(100,"Average Length")
volLen = input.int(100,"Volatility Length")
vsrc = input.source(close,"Volatility Source")
cross_type = input.source(close,"Exit Source")
exit_type = input.string("Volatility MA",options=["Volatility MA","Range Crossover"],title="Exit Type")

volatility = volatility(vsrc,volLen)

highband1 = close + (close * volatility)
lowband1 = close - (close * volatility)
hb1 = wma(highband1,vm1,volatility)
lb1 = wma(lowband1,vm1,volatility)
hlavg = math.avg(hb1,lb1)

upcross = ta.crossover(high,hb1)    //Crossing over the high band of historical volatility signifies a bullish breakout
dncross = ta.crossunder(low,lb1)    //Crossing under the low band of historical volatility signifies a bearish breakout

vlong = upcross
vshort = dncross
vlong_exit = switch
    exit_type == "Volatility MA" => ta.crossunder(cross_type,hlavg)
    exit_type == "Range Crossover" => ta.crossunder(cross_type,hb1)
vshort_exit = switch
    exit_type == "Volatility MA" => ta.crossover(cross_type,hlavg)
    exit_type == "Range Crossover" => ta.crossover(cross_type,lb1)

if vlong
    strategy.entry("Long",strategy.long)
if vlong_exit
    strategy.close("Long")
if vshort
    strategy.entry("Short",strategy.short)
if vshort_exit
    strategy.close("Short")

plot(hlavg,color=color.white,title="Weighted Volatility Moving Average")
t = plot(hb1,color=color.new(color.red,50),title="Volatility Reversal Band - Top")
b = plot(lb1,color=color.new(color.green,50),title="Volatility Reversal Band - Bottom")

alertcondition(vlong,"Volatility Long Entry Signal")
alertcondition(vlong_exit,"Volatility Long Exit Signal")
alertcondition(vshort,"Volatility Short Entry Signal")
alertcondition(vshort_exit,"Volatility Short Exit Signal")

fill(t,b,color=color.new(color.aqua,90))