Esta estrategia es una estrategia de negociación diseñada basándose en el modelo de desviación estándar dual de Bollinger Bands. Utiliza los carriles superior e inferior de Bollinger Bands y una y dos desviaciones estándar como señales de negociación.
La estrategia primero calcula el carril medio, el carril superior y el carril inferior de las bandas de Bollinger.desviación estándar, y el carril inferior es el carril medio - 2Cuando el precio rompe el carril superior, se genera una señal de compra para ir largo. Cuando el precio rompe el carril inferior, se genera una señal de venta para ir corto. Además, la estrategia también traza las líneas de tren medio + 1 desviación estándar y tren medio - 1 desviación estándar. Se utilizan como líneas de stop loss. La lógica específica es:
En general, esta estrategia es una estrategia típica de ruptura de bandas de Bollinger. Utiliza desviaciones estándar duales para aumentar la rigidez del juicio de la señal y adopta líneas de stop loss duales para controlar activamente los riesgos. La estrategia tiene cierto espacio de optimización de parámetros. Al ajustar parámetros como el período del tren medio y el multiplicador de desviación estándar, se puede obtener un mejor rendimiento de la estrategia. Al mismo tiempo, la estrategia también enfrenta el problema común de las fallas falsas en las estrategias de bandas de Bollinger. Además, hay espacio para una mayor mejora y optimización en el mecanismo de stop loss.
/*backtest start: 2022-12-11 00:00:00 end: 2023-12-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 // Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0 // This displays the traditional Bollinger Bands, the difference is // that the 1st and 2nd StdDev are outlined with two colors and two // different levels, one for each Standard Deviation strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true) src = input(close) length = input.int(34, minval=1) mult = input.float(2.0, minval=0.001, maxval=50) basis = ta.sma(src, length) dev = ta.stdev(src, length) dev2 = mult * dev upper1 = basis + dev lower1 = basis - dev upper2 = basis + dev2 lower2 = basis - dev2 colorBasis = src >= basis ? color.blue : color.orange pBasis = plot(basis, linewidth=2, color=colorBasis) pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles) pUpper2 = plot(upper2, color=color.new(color.blue, 0)) pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles) pLower2 = plot(lower2, color=color.new(color.orange, 0)) fill(pBasis, pUpper2, color=color.new(color.blue, 80)) fill(pUpper1, pUpper2, color=color.new(color.blue, 80)) fill(pBasis, pLower2, color=color.new(color.orange, 80)) fill(pLower1, pLower2, color=color.new(color.orange, 80)) // Entry conditions longCondition = ta.crossover(close, upper1) shortCondition = ta.crossunder(close, lower1) // Entry and exit strategy strategy.entry("Buy", strategy.long, when=longCondition) strategy.entry("Sell", strategy.short, when=shortCondition) strategy.close("Buy", when=shortCondition) strategy.close("Sell", when=longCondition)