Esta es una estrategia de ruptura basada en el indicador de Bollinger Bands. Utiliza las bandas superior e inferior de Bollinger Bands para generar señales de ruptura para la entrada y salida.
La estrategia primero calcula la banda media, la banda superior y la banda inferior de las bandas de Bollinger. La banda media es la media móvil del precio, mientras que las bandas superior e inferior son la banda media +/- una desviación estándar.
Cuando el precio se rompe por encima de la banda inferior, se genera una señal larga. Cuando el precio se rompe por debajo de la banda superior, se genera una señal corta. Esto indica que el precio está rompiendo el rango de Bollinger Bands y puede entrar en un movimiento de tendencia.
Además, la estrategia comprueba si el cuerpo se rompe. Si el cierre es mayor que el abierto y el cuerpo penetra en la banda media en un cierto porcentaje, aplanará la posición. Si el cierre es menor que el abierto y el cuerpo penetra en la banda media en un cierto porcentaje, también aplanará la posición. Esto evita pérdidas por falsos breakouts.
Si el precio continúa moviéndose en una dirección favorable, el tamaño de la posición se puede aumentar para mejorar el potencial de ganancia. Si el precio se invierte, se utiliza el stop loss para controlar el riesgo.
Las ventajas de esta estrategia son:
Utilice las bandas de Bollinger para determinar la dirección de la tendencia y detectar las rupturas.
Compruebe el cuerpo y la banda media para determinar la validez del escape, evitando pérdidas por falsos escapes.
Utilice el stop loss para bloquear las ganancias y controlar el riesgo.
Utilice la pirámide para lograr mayores rendimientos en movimientos de tendencia.
Una lógica clara y fácil de entender, con parámetros sencillos que facilitan la aplicación de esta estrategia.
Los riesgos de esta estrategia incluyen:
Las rupturas de Bollinger Bands no pueden evitar completamente las rupturas falsas, pueden ocurrir algunas pérdidas.
La colocación incorrecta de un stop loss puede provocar un stop out prematuro o no limitar las pérdidas.
Los tiempos y el tamaño excesivos de la pirámide pueden conducir a pérdidas amplificadas.
Si no se detiene a tiempo cuando la tendencia se invierte, puede dar lugar a grandes bajadas.
La optimización insuficiente de los parámetros puede dar lugar a un rendimiento insuficiente.
Requiere validación en diferentes mercados.
La estrategia puede mejorarse en los siguientes aspectos:
Prueba y optimiza los parámetros de Bollinger Bands para encontrar mejores combinaciones.
Prueba diferentes estrategias de stop loss y optimiza la colocación de stop loss.
Prueba y encuentra los tiempos y el tamaño óptimos de la pirámide.
Añadir un filtro de tendencia para evitar la pirámide contra la tendencia.
Optimice la lógica de escape corporal para reducir las falsas fugas.
Añadir órdenes condicionales para utilizar diferentes conjuntos de parámetros basados en las condiciones del mercado.
Realizar más pruebas de retroceso en diferentes productos y plazos para mejorar la robustez.
Utilice el aprendizaje automático para optimizar automáticamente los parámetros.
En resumen, esta estrategia utiliza bandas de Bollinger para determinar la dirección de la tendencia y capturar las rupturas, con funciones adicionales de stop loss, pirámide y otras para lograr buenos resultados. Pero existen riesgos, que requieren optimización de parámetros, añadir condiciones, etc. para mejorar la robustez.
/*backtest start: 2023-11-05 00:00:00 end: 2023-11-12 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy("Noro's Bollinger Strategy v1.1", shorttitle = "Bollinger str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100.0, pyramiding = 5) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length") mult = input(2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult") source = input(ohlc4, defval = ohlc4, title = "Bollinger Source") showbands = input(true, defval = true, title = "Show Bollinger Bands") fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Bollinger Bands basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev //Lines col = showbands ? black : na plot(upper, linewidth = 1, color = col) plot(basis, linewidth = 1, color = col) plot(lower, linewidth = 1, color = col) //Body body = abs(close - open) abody = ema(body, 30) //Signals up = close <= lower dn = close >= upper exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2 //Trading if up strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) if dn strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00))) if time > timestamp(toyear, tomonth, today, 00, 00) or exit strategy.close_all()