Estrategia de compra de baja volatilidad y compra de alta volatilidad


Fecha de creación: 2024-01-08 11:33:58 Última modificación: 2024-01-08 11:33:58
Copiar: 0 Número de Visitas: 607
1
Seguir
1617
Seguidores

Estrategia de compra de baja volatilidad y compra de alta volatilidad

Descripción general

El objetivo de esta estrategia es estudiar las diferencias entre comprar activos durante períodos de baja volatilidad y alta volatilidad. Permite a los usuarios elegir comprar durante períodos de baja volatilidad y alta volatilidad cambiando las variables de entrada de modo.

Principio de estrategia

Esta estrategia determina la volatilidad calculando el ATR y su SMA. Específicamente, calcula el SMA del ATR y luego calcula la proporción del ATR con su SMA. Si esta proporción es superior al umbral de volatilityTargetRatio definido por el usuario, se considera que la volatilidad es alta; si es inferior a ese umbral, se considera que la volatilidad es baja.

Dependiendo del modo elegido por el usuario, la estrategia genera una señal de compra cuando la volatilidad es alta o baja. Una vez comprada, la estrategia mantiene un cierto número de bares (definido por sellAfterNBarsLength) y luego se despeja.

Análisis de las ventajas

Las principales ventajas de esta estrategia son:

  1. Se puede comparar intuitivamente el rendimiento de las estrategias de compra durante períodos de baja volatilidad y alta volatilidad.
  2. Se utiliza el SMA para suavizar el ATR y filtrar las falsas brechas.
  3. Se pueden probar diferentes niveles de volatilidad ajustando los parámetros.

Análisis de riesgos

Los principales riesgos de esta estrategia son los siguientes:

  1. Si solo compras en la baja volatilidad, podrías perder la oportunidad de subir el precio.
  2. Si solo compras una alta volatilidad, puede aumentar el riesgo del sistema.
  3. La configuración inadecuada de los parámetros puede causar la pérdida de la oportunidad de comprar o la liquidación prematura.

El riesgo se puede mitigar mediante la modificación de los parámetros y la combinación de compras con diferentes niveles de volatilidad.

Dirección de optimización

La estrategia puede ser optimizada aún más:

  1. Prueba de diferentes parámetros de longitud ATR.
  2. Aumentar las estrategias para detener los daños.
  3. En combinación con otros indicadores, se filtró la brecha falsa.
  4. Optimización de las condiciones de compra de las posiciones en paz.

Resumir

Esta estrategia puede comparar eficazmente el rendimiento de las estrategias de compra de baja volatilidad y alta volatilidad. Utiliza el SMA para suavizar el ATR y generar señales de negociación en función del nivel de volatilidad. La estrategia se puede mejorar mediante la adaptación de los parámetros y la optimización de las condiciones. En general, esta estrategia ofrece una herramienta eficaz para el estudio de las estrategias de volatilidad.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
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/
// © I11L

//@version=5
strategy("I11L - Better Buy Low Volatility or High Volatility?", overlay=false)

mode = input.string("Buy low Volatility",options = ["Buy low Volatility","Buy high Volatility"])
volatilityTargetRatio = input.float(1,minval = 0, maxval = 100,step=0.1, tooltip="1 equals the average atr for the security, a lower value means that the volatility is lower")
atrLength = input.int(14)

atr = ta.atr(atrLength) / close
avg_atr = ta.sma(atr,atrLength*5)
ratio = atr / avg_atr

sellAfterNBarsLength = input.int(5, step=5, minval=0)


var holdingBarsCounter = 0

if(strategy.opentrades > 0)
    holdingBarsCounter := holdingBarsCounter + 1


isBuy = false

if(mode == "Buy low Volatility")
    isBuy := ratio < volatilityTargetRatio
else
    isBuy := ratio > volatilityTargetRatio

isClose = holdingBarsCounter > sellAfterNBarsLength



if(isBuy)
    strategy.entry("Buy",strategy.long)

if(isClose)
    holdingBarsCounter := 0
    strategy.exit("Close",limit=close)

plot(ratio, color=isBuy[1] ? color.green : isClose[1] ? color.red : color.white)
plot(1, color=color.white)