Estrategia de tendencia de la EMA para la ruptura de la volatilidad con retraso cero

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

img

Resumen general

Esta es una estrategia de ruptura simple que utiliza la diferencia entre dos diferentes EMA de retraso cero para rastrear el impulso ascendente o descendente de un instrumento.

Estrategia lógica

La estrategia utiliza dos indicadores EMA especialmente calculados para obtener la diferencia de volatilidad, como se muestra en las fórmulas siguientes:

hJumper = math.max(src,ta.ema(src,lx))
lJumper = math.min(src,ta.ema(src,lx))  
dif = (hJumper / lJumper) - 1

La diferencia responde al instante a los cambios bruscos de precios sin retraso.

Cuando dif cruza por encima de la banda superior de Bollinger, se activa la señal de entrada. Cuando dif cruza por debajo de la banda media de Bollinger, se activa la señal de salida. La dirección de la EMA base determina largo o corto.

Análisis de ventajas

La mayor ventaja de esta estrategia es su rápida respuesta a las señales de ruptura sin retraso. Esto se logra mediante el uso de dos EMAs de retraso cero especialmente calculados. Esto permite a la estrategia capturar instantáneamente los eventos de ruptura de precios y entrar temprano en las tendencias emergentes.

Otra ventaja es la simplicidad de esta estrategia, que sólo tiene un parámetro lx.

Análisis de riesgos

El principal riesgo de esta estrategia es la posible falsa ruptura de las señales. Las falsas rupturas consecutivas pueden ocurrir durante períodos variados. Para mitigar este riesgo, podemos aumentar el múltiplo de la banda de Bollinger para hacer que las señales sean más estables.

Otro riesgo son las frecuentes pequeñas ganancias/pérdidas durante los mercados agitados, que pueden mitigarse ajustando los mecanismos de salida, por ejemplo, estableciendo niveles de precio de stop loss o take profit.

Direcciones de optimización

A continuación se presentan algunas direcciones en las que se puede optimizar esta estrategia:

  1. Añadir indicadores de filtro para validar las señales de entrada y reducir las falsas señales.

  2. Incorpore stop loss y take profit para gestionar mejor las operaciones.

  3. Busque la confirmación del volumen de operaciones para evitar falsas rupturas sin compromiso de volumen.

  4. Adoptar bandas de Bollinger adaptativas para ajustar los parámetros en función de la volatilidad del mercado.

  5. Optimizar los parámetros dinámicamente basado en el aprendizaje automático.

Conclusión

En resumen, esta estrategia EMA de ruptura de volatilidad de retraso cero captura el impulso del precio rápidamente mediante el uso de EMAs especialmente calculadas sin retraso.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wbburgin

//@version=5
strategy("Zero-lag Volatility-Breakout EMA Trend Strategy",overlay=false)

tt1 = "If selected, the strategy will not close long or short positions until the opposite signal is received. This"+
 " exposes you to more risk but potentially could generate larger returns."

src = input.source(close,"Source")
lx = input.int(200,"EMA Difference Length")
bbmult = input.float(2.0,"Standard Deviation Multiple")
useBinaryStrategy = input.bool(true,"Use Binary Strategy",tooltip = tt1)

hJumper = math.max(src,ta.ema(src,lx))
lJumper = math.min(src,ta.ema(src,lx))

dif = (hJumper / lJumper) - 1

[bbm,bbu,bbl] = ta.bb(dif,lx,bbmult)

plot(dif,color=color.white,title="Zero lag EMA Difference")
plot(bbu,color=color.lime,title="Bollinger Top")
plot(bbl,color=color.red,title="Bollinger Bottom")
plot(bbm,color=color.yellow,title="Bollinger Middle")

sigEnter = ta.crossover(dif,bbu)
sigExit = ta.crossunder(dif,bbm)
emaBase = ta.ema(src,lx)
enterLong = sigEnter and emaBase > emaBase[1]
enterShort = sigEnter and emaBase < emaBase[1]

plotshape(enterLong,style=shape.labelup,location=location.bottom,color=color.green,size=size.tiny)
plotshape(enterShort,style=shape.labeldown,location=location.top,color=color.red,size=size.tiny)

if enterLong
    strategy.entry("Long",strategy.long)
if enterShort
    strategy.entry("Short",strategy.short)
if not useBinaryStrategy and sigExit
    strategy.close("Long")
    strategy.close("Short")

Más.