Estrategia de banda objetivo de volatilidad suavizada


Fecha de creación: 2024-01-29 16:22:14 Última modificación: 2024-01-29 16:22:14
Copiar: 0 Número de Visitas: 591
1
Seguir
1617
Seguidores

Estrategia de banda objetivo de volatilidad suavizada

Descripción general

Esta estrategia se basa en la fluctuación suave de los precios, generando bandas de precios objetivo y generando señales de negociación cuando los precios superan la banda de objetivos.

Principio de estrategia

La estrategia primero calcula la amplitud de fluctuación promedio de los precios en un período determinado, y luego procesa la amplitud de fluctuación de manera suave a través de un promedio móvil índice para generar una tasa de fluctuación suave. La tasa de fluctuación suave multiplicada por un factor, obtiene el alcance de la banda objetivo.

En concreto, en la estrategia se calcula la fluctuación suave smrng a través de la función smoothrng, y luego se calcula el hband y el lband de la banda objetivo en función del valor de smrng. Sobre esta base, se establecen las condiciones de posición larga longCondition y las condiciones de posición corta shortCondition. Cuando se cumplen las condiciones de posición larga, se genera una señal de compra; cuando se cumplen las condiciones de posición corta, se genera una señal de venta.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. El uso de la volatilidad de los precios para construir señales de negociación permite un seguimiento eficaz de los cambios en el mercado.

  2. Se puede filtrar el ruido a través del índice de fluctuación de la media móvil para generar una señal de negociación más confiable.

  3. El alcance de la banda objetivo se puede ajustar con el coeficiente de fluctuación, lo que hace que la estrategia sea más flexible.

  4. La combinación de un análisis de breakout con un análisis de breakout permite capturar las oportunidades de negociación en el momento en que se produce un cambio de tendencia.

Análisis de riesgos

La estrategia también tiene sus riesgos:

  1. En el caso de fluctuaciones anormales en el mercado, la tasa de fluctuación de la nivelación puede no reflejar con precisión la fluctuación real, lo que lleva a una señal errónea. Se puede optimizar el modelo ajustando los parámetros.

  2. El rango de la banda objetivo puede causar una frecuencia de negociación excesiva o una señal insuficiente si se configura incorrectamente. Se pueden probar diferentes parámetros para encontrar el rango óptimo.

  3. La detección de un retraso en el tiempo de la señal de ruptura puede conducir a una entrada prematura o tardía. Puede ser confirmada en combinación con otros indicadores.

Dirección de optimización

La estrategia se puede optimizar en las siguientes direcciones:

  1. Prueba diferentes ciclos de datos de precios para encontrar el parámetro de ciclo más adecuado para calcular la fluctuación.

  2. Pruebe diferentes algoritmos de media móvil, como la media móvil lineal ponderada, etc.

  3. Introduzca el volumen de operaciones u otros indicadores para confirmar la señal de ruptura.

  4. Establezca un stop loss o trailing stop para controlar el stop de una sola operación.

  5. Optimice el valor del coeficiente de fluctuación mult para determinar el mejor alcance de la banda objetivo.

Resumir

Esta estrategia tiene una idea general clara, mediante la volatilidad de los precios para construir una banda objetivo, aprovechar las rupturas de precios para generar señales de transacción, para seguir eficazmente las tendencias de los cambios en el mercado. Pero también hay cierto espacio para mejorar, a través de la optimización de los parámetros, la introducción de indicadores de confirmación y otros medios para que la estrategia sea más estable y confiable.

Código Fuente de la Estrategia
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("1SmSm1 Strategy", shorttitle="1SmSm1", overlay=true)

// Source
src = input(defval=close, title="Source")

// Sampling Period
per = input(defval=100, minval=1, title="Sampling Period")

// Range Multiplier
mult = input(defval=3.0, minval=0.1, title="Range Multiplier")

// Smooth Average Range
smoothrng(x, t, m) =>
    wper = (t * 2) - 1
    avrng = ema(abs(x - x[1]), t)
    smoothrng = ema(avrng, wper) * m
    smoothrng

smrng = smoothrng(src, per, mult)

// Range Filter
rngfilt(x, r) =>
    rngfilt = x
    rngfilt := x > nz(rngfilt[1]) ? ((x - r) < nz(rngfilt[1]) ? nz(rngfilt[1]) : (x - r)) : ((x + r) > nz(rngfilt[1]) ? nz(rngfilt[1]) : (x + r))
    rngfilt

filt = rngfilt(src, smrng)

// Filter Direction
upward = 0.0
upward := filt > filt[1] ? nz(upward[1]) + 1 : filt < filt[1] ? 0 : nz(upward[1])

downward = 0.0
downward := filt < filt[1] ? nz(downward[1]) + 1 : filt > filt[1] ? 0 : nz(downward[1])

// Target Bands
hband = filt + smrng
lband = filt - smrng

// Breakouts
longCondition = (src > filt) and (src > src[1]) and (upward > 0)
shortCondition = (src < filt) and (src < src[1]) and (downward > 0)

strategy.entry("Buy", strategy.long, when = longCondition)
strategy.entry("Sell", strategy.short, when = shortCondition)

// Plotting
plot(filt, color=upward > 0 ? color.lime : downward > 0 ? color.red : color.orange, linewidth=3, title="Range Filter")
hbandplot = plot(hband, color=color.aqua, transp=100, title="High Target")
lbandplot = plot(lband, color=color.fuchsia, transp=100, title="Low Target")

// Fills
fill(hbandplot, lbandplot, color=color.aqua, title="Target Range")

// Bar Color
barcolor(longCondition ? color.green : shortCondition ? color.red : na)

// Alerts
alertcondition(longCondition, title="Buy Alert", message="BUY")
alertcondition(shortCondition, title="Sell Alert", message="SELL")