Estrategia de negociación de ruptura del rango de volatilidad

El autor:¿ Qué pasa?, Fecha: 2023-09-21 20:38:29
Las etiquetas:

Resumen general

Esta estrategia genera señales comerciales basadas en el rango de volatilidad histórica del precio. Calcula la diferencia entre los precios más altos y más bajos durante un cierto período, y forma un rango de volatilidad utilizando promedios móviles. Las señales comerciales se activan cuando el precio rompe las bandas superiores o inferiores del rango. Pertenece a las estrategias de ruptura de tendencia.

Estrategia lógica

El indicador principal es la volatilidad histórica del precio.

  1. Calcular la diferencia entre los precios más altos y más bajos durante las últimas N barras, llamadas HL

  2. Calcular la media de los precios más altos y más bajos en N barras, avg ((H, L)

  3. La volatilidad se calcula en función de las variaciones de las emisiones de gases de efecto invernadero.

Donde N es el parámetro Duración de volatilidad.

Después de obtener la volatilidad, las bandas se calculan como:

Banda superior = cierre actual + cierre actual * Volatilidad

Bandas inferiores = cierre actual - cierre actual * Volatilidad

Las bandas son luego suavizadas por WMA con el período establecido como Duración promedio.

Cuando el precio se rompe por encima de la banda superior, ir largo. Cuando el precio se rompe por debajo de la banda inferior, ir corto.

Las señales de salida se definen por Tipo de salida:

  1. Si el tipo de salida es Volatilidad MA, salga cuando el precio vuelva a cruzar por debajo de WMA.

  2. Si el tipo de salida es Range Crossover, salga cuando el precio vuelva a cruzar por debajo de las bandas.

Ventajas

  • La volatilidad atrapa bien las tendencias
  • WMA hace que las bandas sean más estables y confiables
  • Las señales de ruptura atrapan la tendencia a tiempo
  • Las salidas basadas en WMA/bandas reducen las pérdidas rápidamente
  • Mucho margen para ajustar los parámetros para diferentes mercados

Los riesgos

  • Las rupturas pueden provocar una reversión de precios
  • Riesgo de grandes pérdidas en caso de reversión de tendencia
  • La WMA a veces se retrasa en detectar cambios de tendencia
  • Optimización de parámetros no es fácil, requiere mucha prueba y error
  • Se requiere una buena gestión del riesgo

Los riesgos pueden reducirse:

  • Optimización de parámetros para bandas más fiables
  • Añadir otros indicadores para evitar problemas
  • Menor tamaño y mejor gestión de riesgos
  • Considerando las reingresas

Direcciones de optimización

La estrategia puede mejorarse mediante:

  1. Ajuste de parámetros

Prueba diferentes valores de longitud para encontrar combinaciones óptimas.

  1. Adición de otros indicadores

Por ejemplo, cuando el precio se rompe por encima de la banda superior, compruebe si el MACD también cruza el oro.

  1. Es mejor dejar de perder.

Optimizando para paradas traseras en lugar de paradas sencillas.

  1. Reingresos

Establecer reglas de reingreso para detectar tendencias de nuevo después de las paradas.

  1. Tamaño de la posición

Ajustar dinámicamente los tamaños en función de la volatilidad del mercado.

Resumen de las actividades

Esta estrategia funciona bien para los mercados de tendencia en general mediante el uso de bandas basadas en la volatilidad para medir la fuerza de la tendencia y WMA para formar rangos de negociación confiables para las señales de ruptura.


/*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))

Más.