Стратегия прорыва Bollinger Bands

Автор:Чао Чжан, Дата: 2024-01-04 15:52:31
Тэги:

img

Обзор

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

Принцип стратегии

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

Основная логика стратегии заключается в следующем:

  1. Инициализировать параметры полос Боллинджера и рассчитать средний рельс, верхний рельс и нижний рельс.

  2. Инициализируйте параметры скользящей средней.

  3. Сигнал покупки: когда цена проходит через нижнюю рельсу полос Боллинджера снизу вверх, а скользящая средняя находится ниже нижней рельсы, делайте длинный ход.

  4. Сигнал продажи: когда цена проходит через верхний рельс полос Боллинджера сверху вниз и скользящая средняя находится выше верхнего рельса, перейдите на короткий.

  5. Сигнал выхода: когда цена вновь входит в диапазон полос Боллинджера, закрыть позицию.

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

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

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

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

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

  4. Идея стратегии ясна и понятна, легко реализовать и проверить.

Риски

  1. Показатель волатильности Bollinger Bands сам по себе имеет потенциальное отставание в быстро меняющихся тенденциях, что может генерировать недействительные торговые сигналы.

  2. При использовании в качестве фильтрующего индикатора, настройка его параметров напрямую влияет на частоту стратегии.

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

  4. Когда цены отступают, чтобы проверить границу полос Боллинджера, они склонны к ловушке.

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

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

  2. Оптимизировать параметры цикла скользящей средней для сбалансирования частоты и эффекта фильтрации.

  3. Увеличьте стратегию стоп-лосса для контроля максимальных потерь на сделку.

  4. Объединяется с другими индикаторами, такими как RSI и MACD, для формирования сложных индикаторов и обогащения торговых сигналов для стратегии.

  5. Комбинируйте модели машинного обучения, чтобы помочь оценить направление ценового тренда и уровень успеха прорыва.

Заключение

Эта стратегия объединяет индикатор полос Боллинджера с индикатором скользящей средней, чтобы генерировать сигналы входа и выхода после обеспечения определенного импульса ценового прорыва. Идея стратегии ясна и проста в реализации и может эффективно отслеживать тренды рынков. Но в то же время есть также определенные риски отката.


/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//
strategy("Advanced Bollinger Bands Strategy", overlay=true) 
//BB Values 
wall1= input(defval=true,title="===BB Values===",type=input.bool)
source = input(defval=close,title="BB Source",type=input.source)
length = input(20,title="BB Length", minval=1)
mult = input(2.0,title="BB Multiplier",minval=0.001, maxval=50)
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev 
offset = input(0, " BB Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upper, "Upper", color=color.teal, offset = offset)
p2 = plot(lower, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)
//Moving Average Values 
wall2= input(defval=true,title="===MA Values===",type=input.bool)
nfl= input(defval=14,title="Moving Average Period",type=input.integer,minval=1,maxval=100) 
source1= input(defval=close,title="Moving Average Source",type=input.source)
noisefilter= sma(source1,nfl)
plot(noisefilter,style=plot.style_line,linewidth=2,color=color.yellow,title=" Moving Average Filter")
bgcolor(noisefilter<lower?color.green:noisefilter>upper?color.red:na,title="Moving Average Filter")
//Strategy Conditions
wall3= input(defval=true,title="===Strategy Conditions===",type=input.bool)
bl= input(defval=false,title="Exit at Basis Line?",type=input.bool)
nflb= input(defval=false,title="Use Moving Average Filter?",type=input.bool)

//Strategy Condition
buyEntry = crossover(source, lower)
sellEntry = crossunder(source, upper) 

if (nflb?(crossover(source,lower) and noisefilter<lower): crossover(source, lower))
	strategy.entry("BBandLE", strategy.long, oca_name="BollingerBands",  comment="BBandLE")
    
else
	strategy.cancel(id="BBandLE")
if (nflb?(crossunder(source,lower) and noisefilter>upper): crossunder(source, lower))
	strategy.entry("BBandSE", strategy.short, oca_name="BollingerBands",  comment="BBandSE") 
else
	strategy.cancel(id="BBandSE")  
	
strategy.close_all(when=bl?crossover(source,basis) or crossunder(source,basis):crossover(source,upper) or crossunder(source,lower))


Больше