Стратегия двойного B-интеллектуального отслеживания

Автор:Чао Чжан, Дата: 2024-01-18 15:41:20
Тэги:

img

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

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

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

Кроме того, стратегия также вводит факторы обратного тренда. Если есть сигнал обратного тренда, он также запускает соответствующие решения о покупке или продаже. В частности, логика стратегии следующая:

  1. Расчет верхней, средней и нижней полос Боллинджера
  2. Судить, если цена пробивается через диапазоны и сигналы обратного
    1. Прорыв средней полосы как сигнал тренда
    2. Вблизи верхней или нижней полосы в качестве сигналов обратного движения
  3. Отправка заказов на покупку, продажу или закрытие

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

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

По сравнению с обычными стратегиями скользящей средней, эта стратегия имеет следующие преимущества:

  1. Более чувствительные, способные использовать возможности при резких колебаниях цен
  2. Сочетание факторов тренда и обратного движения для предотвращения потерь от преждевременных изменений
  3. Имеет определенный эффект фильтрации для предотвращения ненужных покупок/продаж в неволатильных зонах
  4. Оценить направление основного тренда через средний диапазон для снижения частоты торговли
  5. Увеличить условия фильтра обратного движения, чтобы уменьшить ошибки в оценке

В целом эта стратегия относительно хорошо сочетает в себе полосы Боллинджера и ценовые панели.

Риски и оптимизация

Тем не менее, эта стратегия все еще сопряжена с некоторыми рисками:

  1. Неправильные параметры BB не могут полностью отразить колебания цен
  2. Неточная оценка сигнала обратного движения, отсутствие обратного движения или ошибочная оценка обратного движения
  3. Низкая эффективность сигналов среднего диапазона при неясной тенденции

Соответственно, будущие оптимизации могут сосредоточиться на:

  1. Адаптивная оптимизация параметров BB на основе различных продуктов
  2. Увеличение моделей машинного обучения для оценки вероятности обратного действия
  3. Переход на другие показатели при неясной тенденции
  4. Комбинируйте больше ценовых моделей для фильтрации торговых сигналов

Заключение

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


/*backtest
start: 2023-12-18 00:00:00
end: 2024-01-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
strategy("Noro's Bollinger Strategy v1.2", shorttitle = "Bollinger str 1.2", overlay = true )

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")

length = input(20, defval = 20, minval = 1, maxval = 1000, title = "Bollinger Length")
mult = input(2.0, defval = 2.0, minval = 0.001, maxval = 50, title = "Bollinger Mult")
source = input(ohlc4, defval = ohlc4, title = "Bollinger Source")

uset = input(true, defval = true, title = "Use trend entry")
usect = input(true, defval = true, title = "Use counter-trend entry")

fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
showbands = input(true, defval = true, title = "Show Bollinger Bands")

//Bollinger Bands
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev

//Lines
col = showbands ? black : na 
plot(upper, linewidth = 1, color = col)
plot(basis, linewidth = 1, color = col)
plot(lower, linewidth = 1, color = col)

//Body
body = abs(close - open)
abody = ema(body, 30)

//Signals
bar = close > open ? 1 : close < open ? -1 : 0 
up1 = bar == -1 and close >= basis and close < upper and (close < strategy.position_avg_price or strategy.position_size == 0) and uset
dn1 = bar == 1 and close <= basis and close > lower and (close > strategy.position_avg_price or strategy.position_size == 0) and uset
up2 = close <= lower and usect
dn2 = close >= upper and usect
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size < 0 and close < open) and body > abody / 2

//Trading
if up1 or up2
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

if dn1 or dn2
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)
    
if exit
    strategy.close_all()

Больше