Эта стратегия является торговой стратегией, основанной на полосах Боллинджера и стохастическом осцилляторе. Она использует полосы Боллинджера для определения диапазона волатильности рынка и использует стохастический осциллятор для оценки состояний перекупления и перепродажи на рынке. Когда цена превышает верхнюю полосу Боллинджера, стратегия идет в длительный; когда цена падает ниже нижней полосы Боллинджера, стратегия идет в короткий. В то же время стратегия также использует стохастический осциллятор для фильтрации торговых сигналов для улучшения точности и надежности стратегии.
Основой этой стратегии являются два технических индикатора: полосы Боллинджера и стохастический осциллятор. полосы Боллинджера состоят из трех линий: средней полосы, верхней полосы и нижней полосы. Средняя полоса представляет собой простую скользящую среднюю цену, а верхняя и нижняя полосы - среднюю полосу плюс и минус определенное кратное стандартного отклонения цены. Когда цена превышает верхнюю полосу, это указывает на то, что рынок может быть перекуплен; когда цена падает ниже нижней полосы, это указывает на то, что рынок может быть перепродан.
Стохастический осциллятор состоит из двух линий: линии %K и линии %D. Линия %K измеряет положение цены закрытия в пределах самых высоких и самых низких цен за последний период, а линия %D представляет собой скользящую среднюю отличию линии %K. Когда линия %K пересекает линию %D, это указывает на то, что рынок может быть перекуплен; когда линия %K пересекает линию %D, это указывает на то, что рынок может быть перепродан.
Эта стратегия объединяет эти два показателя. Когда цена превышает верхнюю полосу Боллинджера и линия %K стохастического осциллятора пересекает линию %D, стратегия становится длинной; когда цена падает ниже нижней полосы Боллинджера и линия %K стохастического осциллятора пересекает линию %D, стратегия становится короткой. Эта комбинация может эффективно улавливать рыночные тенденции, избегая частой торговли на волатильных рынках.
Эта стратегия представляет собой простую, но эффективную торговую стратегию, которая сочетает в себе два классических технических индикатора, полосы Боллинджера и стохастический осциллятор, для достижения стабильной доходности как в трендовом, так и в колеблющемся состоянии рынка.
/*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")