En la carga de los recursos... Cargando...

Estrategia de seguimiento de tendencias basada en bandas de Bollinger y promedio móvil exponencial

El autor:¿ Qué pasa?, Fecha: 2023-11-17 17:36:43
Las etiquetas:

img

Resumen general

Esta estrategia utiliza bandas de Bollinger para determinar la dirección de la tendencia actual y el promedio móvil exponencial para el stop loss y tomar la gestión de ganancias para capturar eficazmente la tendencia.

Principios

La estrategia primero calcula la línea media, la banda superior y la banda inferior de las bandas de Bollinger. La línea media es el promedio móvil simple del precio de cierre durante n días. Las bandas superior e inferior se desplazan hacia arriba y hacia abajo por dos desviaciones estándar de la línea media. Cuando el precio de cierre está por encima de la banda superior, indica una tendencia alcista. Cuando el precio de cierre está por debajo de la banda inferior, indica una tendencia bajista.

La estrategia juzga la dirección de la tendencia actual comparando la relación entre el precio de cierre y las bandas superior/inferior de las bandas de Bollinger. Si el precio de cierre rompe la banda superior, vaya largo. Si el precio de cierre rompe la banda inferior, vaya corto.

Además, el promedio móvil exponencial se introduce como una parada trasera para detener la pérdida y obtener ganancias. Específicamente, si el precio se mueve hacia abajo después de ir largo, la línea de stop loss se moverá hacia abajo en consecuencia, apretando gradualmente la distancia de stop loss para maximizar el bloqueo de ganancias. Si el precio sigue subiendo, la línea de stop loss también se moverá hacia arriba para dejar que la ganancia se ejecute. El mecanismo de stop loss funciona al revés para las posiciones cortas.

Ventajas

La estrategia que combina las bandas de Bollinger para la dirección de la tendencia y la EMA para la gestión de stop loss/take profit tiene las siguientes ventajas:

  1. El uso de bandas de Bollinger puede determinar eficazmente la dirección de la tendencia y reaccionar rápidamente a las rupturas.

  2. El stop loss/take profit basado en la EMA puede maximizar el bloqueo de ganancias mientras se controlan los riesgos.

  3. La estrategia tiene pocos parámetros que sean fáciles de aplicar: uno para BB y otro para EMA, muy sencillo.

  4. Puede aplicarse ampliamente a diferentes productos con una gran adaptabilidad.

Riesgos y optimización

La estrategia también tiene algunos riesgos:

  1. La ruptura de las bandas superior/inferior de BB no puede evitar por completo el riesgo de falsas rupturas. Considere combinar con el volumen, etc., para filtrar las señales.

  2. La configuración del parámetro EMA requiere pruebas cuidadosas de acuerdo con productos específicos. Un período EMA demasiado corto puede aumentar los tiempos de stop loss. Demasiado largo disminuirá la efectividad del trailing.

  3. Es necesario evitar la sobre-optimización, ya que demasiadas combinaciones de parámetros BB y EMA pueden llevar a un sobreajuste.

Para abordar los riesgos y las direcciones de optimización, se pueden considerar los siguientes aspectos:

  1. Añadir volumen o MACD, etc. para filtrar las señales falsas de ruptura.

  2. Optimizar el período de EMA mediante pruebas para encontrar el parámetro más adecuado para productos específicos.

  3. Tratar de mantener los parámetros BB y EMA lo más estables posible para evitar los riesgos de sobreajuste derivados de la sobreoptimización.

  4. Considere el uso del RSI, etc., para determinar el ajuste de la posición en la tendencia a medio plazo.

Resumen de las actividades

Esta estrategia integra el uso de bandas de Bollinger para determinar la tendencia y la EMA para la gestión de stop loss / take profit para formar un sistema de seguimiento de tendencia relativamente completo. Puede capturar rápidamente la dirección de la tendencia y bloquear las ganancias ajustando continuamente la línea de stop loss. En general, la estrategia es relativamente simple, práctica y adaptable, vale la pena probar y optimizar más.


/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 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/
// © zxcv55602
//@version=4
strategy(shorttitle=" BB+EMA", title="Bollinger Bands", overlay=true)
date1 = input(title="Start Date", type=input.time, defval=timestamp("2020-01-01T00:00:00"))
date2 = input(title="Stop Date", type=input.time, defval=timestamp("2030-01-01T00:00:00"))
length = input(40, minval=1)
src = input(close, title="Source")
mult = input(2.0,title="StdDev",step=0.1)
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
//offset = input(0, "Offset", minval = -500, maxval = 500)
offset=0
stopcon=input(title="stopcon/lot", type=input.bool, defval=true)
lot1=input(title="lot",defval=1)
stoploss=input(title="stopcon",defval=1000)
emacon=input(title="emacon", type=input.bool, defval=true)
ema_value=input(title="value",defval=30, minval=2,step=1)
plot(basis, "Basis", color=#FF6D00, offset = offset)
p1 = plot(upper, "Upper", color=color.new(color.blue,50), offset = offset)
p2 = plot(lower, "Lower", color=color.new(color.blue,50), offset = offset)
ema1=ema(close,ema_value)
plot(ema1, "SMA", color=#2962FF)
period() => true
//-----------
if period()
    if strategy.opentrades==0 and ema1<upper
        if close>upper
            lot_L=stoploss/((close-lower)/2)
            strategy.entry("OP_L",strategy.long,qty=stopcon==true?lot_L:lot1,stop=emacon==true?max(basis,ema1):basis)
    if strategy.opentrades==0 and ema1>lower
        if close<lower
            lot_S=stoploss/((upper-close)/2)
            strategy.entry("OP_S",strategy.short,qty=stopcon==true?lot_S:lot1,stop=emacon==true?min(basis,ema1):basis)
    if strategy.position_size>0
        strategy.exit("OP_L",stop=emacon==true?max(basis,ema1):basis,comment="exit_L")
    if strategy.position_size<0
        strategy.exit("OP_S",stop=emacon==true?min(basis,ema1):basis,comment="exit_S")

Más.