Cette stratégie est une stratégie de trading basée sur les bandes de Bollinger et l'oscillateur stochastique. Elle utilise les bandes de Bollinger pour déterminer la fourchette de volatilité du marché et utilise l'oscillateur stochastique pour juger des états de surachat et de survente du marché.
Le cœur de cette stratégie est constitué de deux indicateurs techniques: les bandes de Bollinger et l'oscillateur stochastique. Les bandes de Bollinger se composent de trois lignes: la bande du milieu, la bande supérieure et la bande inférieure. La bande du milieu est une moyenne mobile simple du prix, tandis que les bandes supérieure et inférieure sont la bande du milieu plus et moins un certain multiple de l'écart type du prix. Lorsque le prix dépasse la bande supérieure, cela indique que le marché peut être suracheté; lorsque le prix tombe en dessous de la bande inférieure, cela indique que le marché peut être survendu.
L'oscillateur stochastique se compose de deux lignes: la ligne %K et la ligne %D. La ligne %K mesure la position du prix de clôture à l'intérieur des prix les plus élevés et les plus bas au cours d'une période récente, et la ligne %D est une moyenne mobile de la ligne %K. Lorsque la ligne %K franchit la ligne %D, elle indique que le marché peut être suracheté; lorsque la ligne %K franchit la ligne %D, elle indique que le marché peut être survendu.
Cette stratégie combine ces deux indicateurs. Lorsque le prix dépasse la bande supérieure de Bollinger et que la ligne de l'oscillateur stochastique %K traverse la ligne de %D, la stratégie est longue; lorsque le prix tombe en dessous de la bande inférieure de Bollinger et que la ligne de l'oscillateur stochastique %K traverse la ligne de %D, la stratégie est courte. Cette combinaison peut capturer efficacement les tendances du marché tout en évitant les transactions fréquentes sur les marchés volatils.
Cette stratégie est une stratégie de trading simple mais efficace qui combine deux indicateurs techniques classiques, les bandes de Bollinger et l'oscillateur stochastique, pour obtenir des rendements stables dans les états de marché à la fois tendance et oscillation.
/*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")