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