Estrategia de inversión de la banda de volatilidad de Bitcoin


Fecha de creación: 2023-10-12 17:38:39 Última modificación: 2023-10-12 17:38:39
Copiar: 0 Número de Visitas: 738
1
Seguir
1617
Seguidores

Descripción general

La estrategia es un sistema de retroceso diseñado para valores de alta volatilidad, por lo que Bitcoin es una variedad de transacción muy ideal. La estrategia se puede usar en gráficos de línea diurna o en un marco de tiempo más bajo (en el marco de tiempo de 3 horas encontré buenos resultados, pero no los probé en menos de 1 hora).

Principio de estrategia

La estrategia calcula la volatilidad comparando los cambios en el precio de cierre de las dos líneas K anteriores y genera un promedio móvil con este cambio de precio. En el promedio móvil se envuelve una banda de diferencia estándar, con 1 diferencia estándar interna y 2 diferencia estándar externa. Si el precio es superior al filtro de media móvil predeterminado, se determina que estamos en una tendencia alcista, por lo que se emite una señal de compra cuando la tendencia ascendente se rompe si hay un retroceso que causa una brecha en la banda de diferencia estándar interna.

Los usuarios pueden cambiar el rango de fechas que desean probar, calcular el promedio móvil de la volatilidad y la diferencia estándar de las bandas de ondas internas y externas. Para Bitcoin, mantengo las bandas de diferencia estándar interna y externa en la configuración estándar, pero descubro que el seguimiento de la volatilidad de 3 ciclos es bueno para el comercio de gráficos de un día y el seguimiento de la volatilidad de 5 ciclos es bueno para el comercio de gráficos de 3 horas. Como no es una estrategia de compra y tenencia, es posible que desee mantener la moneda más fluida para poder entrar y salir rápidamente de cualquier bolsa.

Ventajas estratégicas

  • El comercio de volatilidad puede ser utilizado para capturar puntos de inflexión en el mercado.
  • El comercio bidireccional, que puede ser rentable en mercados altos y bajos
  • La configuración de parámetros estándar es simple y fácil de usar
  • Los parámetros se pueden optimizar fácilmente para adaptarse a diferentes estándares
  • El Stop Loss y el Stop Stop se establecen de manera razonable y ventajosa para bloquear las ganancias

Riesgo estratégico

  • El riesgo de expansión de las pérdidas de los indicadores de alta volatilidad
  • Los cambios de espacio múltiple son frecuentes y los costos de transacción son altos.
  • Operación a corto plazo, cuidado con los cambios en el mercado
  • La falta de liquidez de las monedas hace que sea difícil detener la pérdida
  • Los parámetros incorrectos pueden conducir a exceso de comercio

La respuesta al riesgo:

  1. Seleccionar el indicador de volatilidad adecuado y controlar las posiciones individuales.

  2. Optimización de parámetros para reducir las transacciones no válidas.

  3. El uso de stop-loss y una gestión estricta de los fondos.

  4. Enfoque en la eficiencia de la ejecución de las transacciones y la elección de indicadores con buena liquidez.

  5. Ajustar los parámetros para adaptarse a las características de los diferentes estándares.

Dirección de optimización de la estrategia

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Optimización del ciclo de las medias móviles para seguir mejor la fluctuación de los diferentes indicadores.

  2. Ajuste los parámetros de la banda de fluctuación para que estén más cerca del rango de fluctuación de un estándar específico.

  3. Añadir otras condiciones de filtrado, como el aumento del volumen de transacciones, para verificar aún más las señales de transacción.

  4. Utiliza la tecnología de aprendizaje automático para optimizar dinámicamente los parámetros y hacer que las estrategias sean más adaptables.

  5. Las pruebas se llevan a cabo en un marco de tiempo más frecuente para capturar más oportunidades de negociación.

  6. Añadido el seguimiento móvil de stop loss para que los beneficios se bloqueen más en la cuenta.

  7. Establecer una estrategia de combinación cuantitativa en combinación con otros indicadores o modelos.

Resumir

La estrategia en general es simple e intuitiva, utiliza indicadores de volatilidad para identificar reveses y capturar puntos de inflexión en el mercado. La estrategia tiene un gran espacio para la optimización, y puede continuar mejorando la estabilidad y la rentabilidad de la estrategia mediante el ajuste de los parámetros y la combinación con otros indicadores técnicos.

Código Fuente de la Estrategia
/*backtest
start: 2023-09-11 00:00:00
end: 2023-10-11 00:00:00
period: 4h
basePeriod: 15m
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/
// © gary_trades
//This script is designed to be used on volatile securities/tickers so is best suited for day charts on Crypto (particularly good for BTC).
//It takes both long and short trades and the main indicator settings can be changed by the use so they can test for ideal settings for ticker of interest.

//@version=4

strategy("BTC Volatility Band Strategy", shorttitle="Vol Band Strategy", overlay=false, margin_long=100, margin_short=100)

//VOLATILTY
CandleChange = ((close - close[1])/close)*100         //OR CandleChange = ((close[2] - close[1])/close)*100
plot(CandleChange, color=color.red, linewidth = 1)

//VOLATILITY BANDS 
MAlen = input(7, minval=3, maxval=30, title=" MA Length")
MAout = sma(CandleChange, MAlen)
plot(MAout, color=color.black, display=display.none)

InnerBand = input(1.0, minval=0.5, maxval=5, title="Inner Band")
OuterBand = input(2.00, minval=0.5, maxval=10, title="Outer Band")
devInner = InnerBand * stdev(CandleChange, MAlen)
devOuter = OuterBand * stdev(CandleChange, MAlen)

upper1 = MAout + devInner
lower1 = MAout - devInner
b1 = plot(upper1, "Upper Inner", color=color.gray)
b2 = plot(lower1, "Lower Inner", color=color.gray)
upper2 = MAout + devOuter
lower2 = MAout - devOuter
b3 = plot(upper2, "Upper Outer", color=color.gray)
b4 = plot(lower2, "Lower Outer", color=color.gray)
fill(b1, b3, color.rgb(250,145,175,70), title="Background")
fill(b2, b4, color.rgb(250,145,175,70), title="Background")

band1 = hline(25, "Upper Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2)
band0 = hline(-25, "Lower Band", color=color.gray, linestyle=hline.style_dotted, linewidth=2)

//LONG FILTER
VolFilterL = CandleChange <= lower1 and CandleChange > lower2
SMAFilterL = close[1] > sma(close[1], 50)
PriceFilterL = close > lowest(close,7)
LongFilter = VolFilterL and SMAFilterL and PriceFilterL
bgcolor(LongFilter ? color.new(color.green, 80) : na)

//SHORT FILTER
VolFilterS = CandleChange >= upper1 and CandleChange < upper2
SMAFilterS = close[1] < sma(close[1], 50)
PriceFilterS = close < highest(close,7)
ShortFilter = VolFilterS and SMAFilterS and PriceFilterS
bgcolor(ShortFilter ? color.new(color.red, 80) : na)

//SETTING BACK TEST INPUTS
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2100, title = "To Year", minval = 1970)

startDate = timestamp("America/New_York", fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp("America/New_York", toYear, toMonth, toDay, 00, 00)
time_condition = time >= startDate and time <= finishDate

//ORDER DETAILS
Risk = (high[7] - low[7])/ 7
Profit = Risk*1.15
Loss = Risk*0.65

AlertMSG = "New stategy position" + tostring(strategy.position_size)

if (time_condition) 
    strategy.entry("Long", strategy.long, when = LongFilter, alert_message=AlertMSG)
    if (LongFilter)
        LongStop = strategy.position_avg_price - Loss
        LongProfit = strategy.position_avg_price + Profit 
        strategy.exit("TP/SL", "Long", stop=LongStop, limit=LongProfit)

if (time_condition)
    strategy.entry("Short", strategy.short, when = ShortFilter, alert_message=AlertMSG)
    if (ShortFilter)
        ShortStop = strategy.position_avg_price + Loss
        ShortProfit = strategy.position_avg_price - Profit 
        strategy.exit("TP/SL", "Short", stop=ShortStop, limit=ShortProfit)