Esta es una estrategia de seguimiento de impulso basada en bandas de Bollinger, que combina bandas de Bollinger para juzgar las tendencias del mercado y los puntos de reversión, y establece posiciones largas y cortas para rastrear las fluctuaciones del mercado.
El indicador central de esta estrategia es las bandas de Bollinger, que consta de banda media, banda superior y banda inferior. La banda media es el promedio móvil de n días, y las bandas superior e inferior son las compensaciones de la banda media más / menos desviación estándar. Cuando el precio se acerca a la banda superior / inferior, se considera una señal de sobrecompra / sobreventa. La estrategia incorpora la desviación de tendencia como la base para las posiciones de apertura, es decir, las posiciones de apertura cuando el precio rompe la banda media en la dirección opuesta.
Esta estrategia también incorpora entradas de tendencia y entradas de inversión media, correspondientes a diferentes oportunidades comerciales. Las entradas de tendencia requieren que la banda media sea la referencia de soporte / resistencia y formen desviaciones. Las entradas de inversión media se invierten directamente cerca de las bandas de Bollinger superior / inferior. La estrategia combina estos dos tipos de señales y puede realizar operaciones de seguimiento de tendencia e inversión.
Esta estrategia combina las características de sobrecompra / sobreventa de las bandas de Bollinger con el juicio del punto de inversión. Esto le permite aplicarse tanto a los mercados de tendencia como a los de rango, capturando diferentes tipos de oportunidades comerciales. La configuración de salida de stop loss evita que la pérdida se expanda. Además, la capacidad de operar tanto largo como corto mejora la aplicabilidad de la estrategia.
En comparación con las estrategias de Bollinger simples, la lógica de tendencia adicional hace que las entradas de esta estrategia sean más estables, y también captura oportunidades de reversión.
Esta estrategia se basa principalmente en las características de sobrecompra / sobreventa de las bandas de Bollinger. Por lo tanto, cuando hay una fluctuación extrema de precios, el ancho de las bandas de Bollinger sigue expandiéndose, lo que puede llevar fácilmente a múltiples operaciones perdedoras. Este es un punto de riesgo potencial. Además, todavía hay algunas incertidumbres y errores en los juicios de inversión, causando entradas y paradas fallidas.
En contra del fracaso de las bandas de Bollinger, podemos acortar el parámetro n para hacer que las bandas sean más sensibles, o reducir el ancho de la banda para reducir la posibilidad de pérdidas.
Las principales direcciones para optimizar esta estrategia incluyen:
Esta estrategia hace expansiones y optimizaciones efectivas a las estrategias estándar de Bollinger. La desviación de tendencia agregada mejora la estabilidad y utiliza bien las oportunidades de reversión. La capacidad de operar en ambas direcciones y detener las pérdidas también hace que la estrategia sea más robusta. Se pueden lograr mejoras adicionales mediante la optimización de parámetros y la adición de más filtros.
/*backtest start: 2023-11-20 00:00:00 end: 2023-11-27 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy("Noro's Bollinger Strategy v1.3", shorttitle = "Bollinger str 1.3", 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, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult") source = input(ohlc4, defval = ohlc4, title = "Bollinger Source") uset = input(true, defval = true, title = "Use trend entry") usect = input(true, defval = true, title = "Use counter-trend entry") 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") showbands = input(true, defval = true, title = "Show Bollinger Bands") //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 bar = close > open ? 1 : close < open ? -1 : 0 up1 = bar == -1 and ohlc4 >= basis and ohlc4 < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset dn1 = bar == 1 and ohlc4 <= basis and ohlc4 > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset up2 = close <= lower and usect dn2 = close >= upper and usect exit = ((strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open)) and body > abody / 2 //Trading if up1 or up2 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn1 or dn2 strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) or exit strategy.close_all()