Estrategia de trading con ruptura del rango de volatilidad histórica


Fecha de creación: 2023-09-21 20:38:29 Última modificación: 2023-09-21 20:38:29
Copiar: 1 Número de Visitas: 677
1
Seguir
1617
Seguidores

Descripción general

Esta estrategia determina las señales de negociación basadas en el rango de fluctuación histórica de los precios. Calcula el diferencial entre los precios más altos y más bajos en un período determinado y forma un rango de fluctuación a través de una media móvil.

Principio de estrategia

El indicador central de la estrategia es la fluctuación histórica de los precios.

  1. Calcula la diferencia entre el precio más alto y el precio más bajo en el pasado de la raíz N de Bar, que se escribe como HL

  2. Calcula el promedio de los precios más altos y más bajos en el pasado N raíz de Bar (avg ((H, L))

  3. La tasa de fluctuación = HL / avg (H, L)

Donde N es el parámetro de “Volatility Length” ≠

Después de obtener la tasa de fluctuación, calcule la subida y bajada:

En la vía superior = cerrar actual + cerrar actual * tasa de fluctuación

Baja línea = cerrar actual - cerrar actual * fluctuación

La longitud media de las vías es el promedio de longitud de las vías.

Haga más cuando el precio rompa la vía; haga menos cuando el precio rompa la vía.

La señal de estabilidad se da según el parámetro “Exit Type”:

  1. Cuando el tipo de salida es el MA de volatilidad, el precio vuelve a la posición de equilibrio de la línea media de la WMA;

  2. Cuando Exit Type es un Range Crossover, el precio vuelve a la posición de equilibrio ascendente y descendente.

Ventajas estratégicas

  • El uso de fluctuaciones de precios para capturar tendencias
  • La unificación lineal de WMA hace que el intervalo sea más estable y confiable
  • La entrada por la brecha es fácil para captar el punto de inflexión de la tendencia
  • El regreso a la línea de mediano o la subida y bajada de la vía puede detenerse a tiempo
  • Optimización de los parámetros con un amplio margen de maniobra para adaptarse a diferentes mercados

Riesgo estratégico

  • Las rupturas en el intervalo son propensas al riesgo de recaída
  • El cambio de tendencia puede causar grandes pérdidas.
  • La línea media WMA a veces no es lo suficientemente sensible para identificar los giros de tendencia
  • Optimizar los parámetros no es fácil y requiere una gran cantidad de ensayos y errores
  • El retiro es más arriesgado y requiere un mayor cuidado en la administración de los fondos

El riesgo puede reducirse con las siguientes medidas:

  • Optimización de parámetros para una mayor estabilidad y fiabilidad en el intervalo
  • Añadir otros indicadores para evitar el retroceso
  • Reducir el SIZE de las transacciones y centrarse en la gestión de fondos
  • Consideraciones para un mecanismo de reingreso

Dirección de optimización

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización de parámetros

Para encontrar la mejor combinación de parámetros, prueba los diferentes parámetros de Length.

  1. Añadir otros indicadores de juicio

Por ejemplo, cuando el precio se desvía, si el MACD también se desvía al mismo tiempo, la entrada se hace más.

  1. Optimización de la pérdida

Se puede optimizar para un trazado de pérdidas con elasticidad, en lugar de un simple rompimiento de pérdidas por intervalos.

  1. Mecanismo de reingreso añadido

Después de la salida de pérdidas, si la tendencia continúa, se pueden establecer condiciones de reingreso para volver a seguir la tendencia.

  1. Optimización de la gestión de posiciones

La posición de negociación puede ajustarse dinámicamente según la volatilidad del mercado.

Resumir

En general, la estrategia es más adecuada para el comportamiento de la tendencia, para juzgar la dirección y la fuerza de la tendencia a través de los carriles y bajadas en la volatilidad, y para formar un intervalo de negociación más confiable con la línea media WMA, lo que genera puntos de venta y venta. Sin embargo, también hay algunos problemas, como el retraso en el juicio de la tendencia, el método de stop loss puede mejorarse, etc.

Código Fuente de la Estrategia
/*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))