Falta de volatilidad adaptativa

El autor:¿ Qué pasa?, Fecha: 2024-01-25 12:43:43
Las etiquetas:

img

Resumen general

Esta estrategia combina las métricas de seguimiento de tendencias VFI y las medias móviles con el indicador de reversión Bollinger Bands para captar de manera adaptativa las tendencias y las reversiones en el mercado.

Estrategia lógica

Los principales componentes de esta estrategia son:

  1. Indicador de VFI para determinar la tendencia. Utiliza la tasa logarítmica de cambio del precio típico y el volumen de negociación para igualar razonablemente el precio y el volumen.

  2. Indicador de diferencia de EMA para determinar la tendencia: calcula la diferencia porcentual entre la EMA de 20 días y la EMA de 50 días para juzgar la dirección de la tendencia a medio y largo plazo.

  3. Las bandas de Bollinger para detectar reversiones. La banda media es la SMA de 20 días, y el ancho de las bandas es de 1.5 desviación estándar de la banda media. Las señales comerciales se generan cuando el precio rompe la banda superior o inferior.

  4. Cuando el VFI se acerca a sus límites (0, 20), se considera que la probabilidad de reversión de tendencia es mayor.

Cuando el precio se rompe por encima de la banda superior de Bollinger y la diferencia entre VFI y EMA indica una tendencia al alza, vaya largo.

Ventajas

  1. La introducción de la FPI hace que la relación precio-volumen sea más razonable y evita seguir ciegamente los precios.

  2. La combinación de la diferencia de la EMA y el VFI hace que la determinación de la tendencia sea más fiable.

  3. La combinación de bandas de Bollinger y VFI hace que la estrategia sea más adaptable a las fluctuaciones bidireccionales del mercado.

Los riesgos

  1. Los indicadores de precios de volumen no pueden evitar por completo el riesgo de fallas.

  2. La diferencia EMA tiene cierto retraso y no puede reaccionar oportunamente a los giros a corto plazo.

  3. Los parámetros inadecuados de las bandas de Bollinger pueden llevar a una sobreventa o captura del mercado.

Soluciones:

  1. Combine varios indicadores para determinar la tendencia para evitar depender de uno solo.

  2. Ajuste los parámetros de la EMA a los valores adecuados.

  3. Prueba los impactos de los parámetros de Bollinger en la estrategia en diferentes condiciones de mercado.

Direcciones de optimización

  1. Continúe optimizando los parámetros de VFI para hacerlo más sensible.

  2. Añadir el juicio de ruptura basado en los canales de precios o el indicador de sobres.

  3. Prueba la introducción de más indicadores de precios de volumen como OBV, PVT, etc.

  4. Introducir técnicas de aprendizaje automático y IA para realizar la optimización de parámetros dinámicos.

Conclusión

Esta estrategia considera de manera integral el seguimiento de tendencias y la detección de reversión con VFI, diferencia EMA y bandas de Bollinger para capturar las fluctuaciones bidireccionales del mercado.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-24 00:00:00
period: 1h
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/
// © beststockalert

//@version=4

strategy(title="Super Bollinger Band Breakout", shorttitle = "Super BB-BO", overlay=true)
source = close

length = input(130, title="VFI length")
coef = input(0.2)
vcoef = input(2.5, title="Max. vol. cutoff")
signalLength=input(5)


// session 


pre = input( type=input.session, defval="0400-0935")
trade_session = input( type=input.session, defval="0945-1700")
use_trade_session = true
isinsession = use_trade_session ? not na(time('1', trade_session)) : true


is_newbar(sess) =>
    t = time("D", sess)
    not na(t) and (na(t[1]) or t > t[1])


is_session(sess) =>
    not na(time(timeframe.period, sess))

preNew = is_newbar(pre)
preSession = is_session(pre)

float preLow = na
preLow := preSession ? preNew ? low : min(preLow[1], low) : preLow[1]

float preHigh = na
preHigh := preSession ? preNew ? high : max(preHigh[1], high) : preHigh[1]



//   vfi 9lazybear 
ma(x,y) => 0 ? sma(x,y) : x

typical=hlc3
inter = log( typical ) - log( typical[1] )
vinter = stdev(inter, 30 )
cutoff = coef * vinter * close
vave = sma( volume, length )[1]
vmax = vave * vcoef
vc = iff(volume < vmax, volume, vmax) //min( volume, vmax )
mf = typical - typical[1]
vcp = iff( mf > cutoff, vc, iff ( mf < -cutoff, -vc, 0 ) )

vfi = ma(sum( vcp , length )/vave, 3)
vfima=ema( vfi, signalLength )


//ema diff


ema20 = ema(close,20)
ema50 = ema(close,50)


diff = (ema20-ema50)*100/ema20
ediff = ema(diff,20)

//
basis = sma(source, 20)
dev = 1.5 * stdev(source, 20)

upper = basis + dev
lower = basis - dev


ema9 = ema(source, 9)

if ( ((crossover(source, upper) and diff>ediff and diff>0) or (close>upper and (vfi >0 or vfima>0 or ediff>0.05) and (vfi<14 or vfima<14)) ))
    strategy.entry("Long", strategy.long)


if (crossunder(source, lower) or vfi>19 or vfima>19 or diff<(ediff+0.01) )
    strategy.close("Long")



Más.