Esta es una estrategia de negociación que utiliza bandas de Bollinger. La estrategia tiene como objetivo identificar oportunidades cuando los precios fluctúan violentamente usando bandas de Bollinger y tomar decisiones de compra o venta correspondientes.
La estrategia calcula la banda superior, la banda media y la banda inferior de las bandas de Bollinger para determinar si el precio actual se encuentra dentro del rango volátil y, por lo tanto, tomar decisiones sobre la apertura o cierre de posiciones. Cuando el precio se acerca a la banda superior, se considera el punto extremo para largos y la estrategia elige cerrar posiciones largas. Cuando el precio cae cerca de la banda inferior, se considera el punto extremo para cortes y la estrategia elige abrir posiciones largas.
Además, la estrategia también introduce factores de reversión de tendencia. Si hay una señal de reversión, también desencadenará las decisiones de compra o venta correspondientes.
Utilizando las características de las bandas de Bollinger y combinando factores de tendencia y reversión, la estrategia intenta capturar puntos de reversión cuando aumenta la volatilidad.
En comparación con las estrategias de promedios móviles ordinarios, esta estrategia tiene las siguientes ventajas:
En general, esta estrategia combina relativamente bien las bandas de Bollinger y las barras de precios.
Sin embargo, esta estrategia sigue teniendo algunos riesgos:
En consecuencia, las optimizaciones futuras pueden centrarse en:
En conclusión, esta es una plantilla típica de estrategia de negociación de Bollinger Bands. Evita operaciones ineficaces excesivas comunes para el uso de Bollinger Bands solo al introducir el juicio de inversión de tendencia para filtrar las señales, lo que teóricamente puede conducir a un buen rendimiento de la estrategia.
/*backtest start: 2023-12-18 00:00:00 end: 2024-01-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy("Noro's Bollinger Strategy v1.2", shorttitle = "Bollinger str 1.2", overlay = true ) //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 close >= basis and close < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset dn1 = bar == 1 and close <= basis and close > 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) if dn1 or dn2 strategy.entry("Short", strategy.short, needshort == false ? 0 : na) if exit strategy.close_all()