Esta estrategia es una estrategia de trading basada en las bandas de Bollinger y el oscilador estocástico. Utiliza las bandas de Bollinger para determinar el rango de volatilidad del mercado y utiliza el oscilador estocástico para juzgar los estados de sobrecompra y sobreventa del mercado. Cuando el precio se rompe por encima de la banda superior de Bollinger, la estrategia es larga; cuando el precio cae por debajo de la banda inferior de Bollinger, la estrategia es corta. Al mismo tiempo, la estrategia también utiliza el oscilador estocástico para filtrar las señales de trading para mejorar la precisión y fiabilidad de la estrategia.
El núcleo de esta estrategia son dos indicadores técnicos: las bandas de Bollinger y el oscilador estocástico. Las bandas de Bollinger consisten en tres líneas: la banda media, la banda superior y la banda inferior. La banda media es un promedio móvil simple del precio, mientras que las bandas superior e inferior son la banda media más y menos un determinado múltiplo de la desviación estándar del precio. Cuando el precio se rompe por encima de la banda superior, indica que el mercado puede estar sobrecomprado; cuando el precio cae por debajo de la banda inferior, indica que el mercado puede estar sobrevendido.
El Oscilador Estocástico se compone de dos líneas: la línea %K y la línea %D. La línea %K mide la posición del precio de cierre dentro de los precios más altos y más bajos durante un período reciente, y la línea %D es una media móvil de la línea %K. Cuando la línea %K cruza por encima de la línea %D, indica que el mercado puede estar sobrecomprado; cuando la línea %K cruza por debajo de la línea %D, indica que el mercado puede estar sobrevendido.
Esta estrategia combina estos dos indicadores. Cuando el precio se rompe por encima de la banda superior de Bollinger y la línea %K del Oscilador Estocástico cruza por encima de la línea %D, la estrategia es larga; cuando el precio cae por debajo de la banda inferior de Bollinger y la línea %K del Oscilador Estocástico cruza por debajo de la línea %D, la estrategia es corta.
Esta estrategia es una estrategia de negociación simple pero efectiva que combina dos indicadores técnicos clásicos, Bandas de Bollinger y el Oscilador Estocástico, para lograr rendimientos estables tanto en estados de tendencia como en oscilaciones del mercado.
/*backtest start: 2023-05-03 00:00:00 end: 2024-05-08 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Unique Bollinger Bands Strategy", 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)) // Parameters bbLength = input.int(34, title="Length", minval=1) bbMultiplier = input.float(2.0, title="Multiplier", minval=0.001, maxval=50) // Source priceData = close // Unique name for price data source // Bollinger Bands Calculation bbBasis = ta.sma(priceData, bbLength) bbDeviation = ta.stdev(priceData, bbLength) bbDeviationMultiplied = bbMultiplier * bbDeviation bbUpperBand = bbBasis + bbDeviationMultiplied bbLowerBand = bbBasis - bbDeviationMultiplied // Plot Bollinger Bands plot(bbBasis, color=color.blue, linewidth=2) plot(bbUpperBand, color=color.blue) plot(bbLowerBand, color=color.orange) // Strategy Logic for Entry and Exit enterLong = ta.crossover(priceData, bbUpperBand) enterShort = ta.crossunder(priceData, bbLowerBand) // Enter Long when price crosses over upper band if (enterLong) strategy.entry("Long", strategy.long) // Enter Short when price crosses under lower band if (enterShort) strategy.entry("Short", strategy.short) // Close Long when Short condition is met (i.e., price under lower band) if (enterShort) strategy.close("Long") // Close Short when Long condition is met (i.e., price over upper band) if (enterLong) strategy.close("Short")