Стратегия ценового действия на основе полосы Боллинджера

Автор:Чао Чжан, Дата: 2023-12-20 14:03:52
Тэги:

img

Обзор

Эта стратегия называется Bollinger Band-based Price Action Strategy. Она объединяет анализ ценовых действий и Bollinger Bands для генерации торговых сигналов на основе суждения о соединенных условиях.

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

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

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

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

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

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

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

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

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

  1. Оптимизировать параметры полосы Боллинджера для более эффективного отслеживания тенденций и колебаний.

  2. Добавьте движущийся стоп-лосс, чтобы зафиксировать прибыль и управлять рисками.

  3. Включить другие индикаторы, такие как MACD, RSI для проверки для фильтрации ложных сигналов.

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

Заключение

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


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

//@version=4
// main codebody taken from Trader Noro - Noro's Crypto Pattern for H1
// Intraday strategy- Exit at EOD at all cost

strategy(title = "Price Action + Bollinger Strategy ",overlay=true)
bar = close > open ? 1 : close < open ? -1 : 0
body = abs(close - open)
avgbody = sma(body, 100)

//calculate simple moving average bollinger bands
b_sma = input(21,minval=1,title=" SMA candle")
b_sma_no_of_deviations = 2.1
b_sma_signal = sma(close, b_sma)
b_sma_deviation = b_sma_no_of_deviations * stdev(close, b_sma)
b_sma_upper= b_sma_signal + b_sma_deviation
b_sma_lower= b_sma_signal - b_sma_deviation

up1 = body < body[1] / 2 and bar[1]==1 and bar == -1 and close[1] > b_sma_upper   
dn1 = body < body[1] / 2 and bar[1]==-1 and bar == 1 and close[1] < b_sma_lower  
up2 = false
dn2 = false
up2 := (up1[1] or up2[1]) and close < close[1]
dn2 := (dn1[1] or dn2[1]) and close > close[1]
plotarrow(up1 or up2 ? 1 : na, colorup = color.black, colordown = color.black, transp = 0)
plotarrow(dn1 or dn2 ? -1 : na, colorup = color.black, colordown = color.black, transp = 0)

strategy.entry("Buy", true, when = dn1)
strategy.exit("exit", "Buy", profit = 3, loss = 1.5)

strategy.entry("Short", false, when = up1)
strategy.exit("exit", "Short", profit = 3, loss = 1.5)



Больше