Количественная стратегия, основанная на изменении полосы Боллинджера

Автор:Чао Чжан, Дата: 2023-11-22 17:44:40
Тэги:

img

Обзор

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

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

Стратегия использует индикатор RSI для определения длинных входов. В частности, она проверяет, является ли цена закрытия последнего бара ниже самой низкой цены из предыдущих 6 баров, в то же время ширина полосы Боллинджера (BBW) больше порога, а коэффициент полосы Боллинджера (BBR) находится в пределах диапазона. Если эти критерии выполнены, это указывает на то, что цена может быть обратной, поэтому идите длинным.

Выход прост, когда RSI превышает 70, что указывает на перегрев цены, закрыть длинную позицию.

Анализ преимуществ

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

Кроме того, стратегия чувствительна к параметрам. путем настройки BBW и BBR, она может быть оптимизирована для различных продуктов и достичь лучших результатов.

Анализ рисков

Основной риск заключается в том, что BB не может предсказать перемены цен в совершенстве.

Кроме того, краткосрочные колебания могут привести к частым входам и выходам, увеличивая расходы на комиссионные и сдвиги.

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

Стратегия может быть улучшена в следующих аспектах:

  1. Оптимизируйте параметры. Тестируйте и настраивайте BBW, BBR и другие параметры более точно для разных продуктов.

  2. Добавить механизмы остановки потери, такие как остановка задержки и временная остановка потери, чтобы ограничить максимальные потери.

  3. Включить другие индикаторы, такие как KDJ и MACD, чтобы сделать записи более надежными.

  4. Улучшить логику выхода. Текущий выход прост. Может оптимизироваться с последующим получением прибыли или выхода на основе волатильности.

Заключение

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


/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

//study(title = "Bolinger strategy", overlay=true)
strategy("Bolinger strategy",currency="SEK",default_qty_value=10000,default_qty_type=strategy.cash,max_bars_back=50)
len = 5
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))


bbw3level = input(15, title="bbw3")
bbr3level = input(0.45, title="bbr3level")
bbrlower = input(0.4480, title="bbrlower")
bbrhigher = input(0.4560, title="bbrhigher")
sincelowestmin = input(7, title="sincelowestmin")
sincelowestmax = input(57, title="sincelowestmax")


length = input(20, minval=1)
mult = 20
src3 = close[3]
basis3 = sma(src3, length)
dev3 = mult * stdev(src3, length)
upper3 = basis3 + dev3
lower3 = basis3 - dev3
bbr3 = (src3 - lower3)/(upper3 - lower3)
bbw3 = (upper3-lower3)/basis3*100


basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)
bbw = (upper-lower)/basis*100

criteriamet = 0
crossUnderB0 = crossunder(bbr,0)

since_x_under = barssince(crossUnderB0)


sincelowest = barssince(close[6] > close[3] and close[5] > close[3] and close[4] > close[3] and close[2] > close[3] and close[1] > close[3] and close > close[3] and bbw3 > bbw3level and bbr3 < bbr3level) //  and bbr3 < 0 

if sincelowest > sincelowestmin and sincelowest < sincelowestmax and bbr > bbrlower and bbr < bbrhigher
	criteriamet := 1
else
	criteriamet := 0	
//plot (criteriamet)

//exit 
exitmet = 0
if rsi > 70
	exitmet := 1
else
	exitmet := 0

if criteriamet == 1
	strategy.entry("long", strategy.long)
if exitmet == 1
	strategy.close("long")



Больше