Торговая стратегия двойного стандартного отклонения полос Боллинджера

Автор:Чао Чжан, Дата: 2023-12-18 17:23:42
Тэги:

img

Обзор

Эта стратегия представляет собой торговую стратегию, разработанную на основе модели двойного стандартного отклонения полос Боллинджера. Она использует верхние и нижние рельсы полос Боллинджера и одно и два стандартных отклонения в качестве торговых сигналов.

Логика стратегии

Стратегия сначала рассчитывает средний рельс, верхний рельс и нижний рельс полос Боллинджера.стандартное отклонение, а нижняя рельса - средняя рельса - 2стандартное отклонение. Когда цена проходит через верхнюю рельсу, генерируется сигнал покупки, чтобы пойти длинным. Когда цена проходит через нижнюю рельсу, генерируется сигнал продажи, чтобы пойти коротким. Кроме того, стратегия также графизирует линии средней рельсы + 1 стандартное отклонение и средней рельсы - 1 стандартное отклонение. Они используются в качестве линий остановки потери.

  1. Вычислить SMA от CLOSE как среднюю рельсу полос Боллинджера
  2. Вычислить стандартное отклонение STD от CLOSE и вычислить 2*STD
  3. Средняя рельса + 2STD - это верхняя рельса полос Боллинджера, средняя рельса - 2STD - это нижний рельс
  4. Продолжайте, когда цена прорвется через верхнюю рельсу.
  5. Пойдем коротко, когда цена прорвется через нижнюю рельсу
  6. Средняя рельса + 1*STD служит линией стоп-лосса. Если линия стоп-лосса нарушена, закрыть позицию.

Преимущества стратегии

  1. Дизайн двойного стандартного отклонения делает решение о прорыве более строгим, чтобы избежать ошибочных сигналов
  2. Дизайн двойных линий стоп-лосса максимизирует контроль рисков
  3. Большое пространство оптимизации параметров, период среднего рельса и кратное стандартному отклонению могут быть настроены
  4. Снижение может контролироваться путем корректировки уровня стоп-лосса

Риски стратегии

  1. Стратегии Bollinger Bands склонны к ложным прорывам, что приводит к неточным торговым сигналам.
  2. Установка двойного стандартного отклонения и двойной линии остановки потери может быть слишком строгой, упуская возможности, отфильтровывая слишком много сигналов
  3. Неправильные параметры могут увеличить риск стратегии
  4. Контроль за использованием средств недостаточно совершенен для эффективного контроля потерь в экстремальных рыночных условиях

Руководство по оптимизации

  1. Подумайте о сочетании других индикаторов для фильтрации торговых сигналов Bollinger Bands, чтобы избежать ложных прорывов
  2. Испытать различные параметры настройки и оптимизировать параметры для лучшего соотношения возврата/вывода
  3. Проектирование динамических механизмов стоп-лосса, таких как стоп-лосс отслеживания или стоп-лосс процентного капитала
  4. Сочетание алгоритмов машинного обучения для автоматической оптимизации параметров

Заключение

В целом, эта стратегия является типичной стратегией прорыва полос Боллинджера. Она использует двойные стандартные отклонения для повышения строгости суждения о сигнале и принимает двойные линии остановки потери для активного контроля рисков. Стратегия имеет некоторое пространство для оптимизации параметров. Благодаря корректировке таких параметров, как промежуток среднего рельса и мультипликатор стандартного отклонения, можно получить лучшую производительность стратегии. В то же время стратегия также сталкивается с общей проблемой ложных прорывов в стратегиях полос Боллинджера. Кроме того, есть возможность для дальнейшего улучшения и оптимизации механизма остановки потери.


/*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)

Больше