Стратегия следования за трендом на основе полос Боллинджера ATR

BB SMA ATR
Дата создания: 2024-05-15 10:50:14 Последнее изменение: 2024-05-15 10:50:14
Копировать: 3 Количество просмотров: 721
1
Подписаться
1617
Подписчики

Стратегия следования за трендом на основе полос Боллинджера ATR

Обзор

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

Стратегический принцип

  1. Вычисление буринской полосы: используется простая скользящая средняя ((SMA) для вычисления цены закрытия как средняя полоса буринской полосы, и рассчитывается вверх и вниз по волатильности ((стандартное расхождение)).
  2. Вычисление ATR: вычисление ATR с использованием перемещающегося среднего значения реальной длины волны (TR) в качестве основы для перемещающихся стоп-убытков.
  3. Получает торговые сигналы: при попадании цены вниз, когда она пробивает подъёмную полосу бурин, и при попадании цены вверх, когда она пробивает подъемную полосу бурин, и при попадании цены вверх, когда она пробивает подъемную полосу бурин, и при попадании цены вверх, когда она пробивает подъемную полосу ATR, и при попадании цены вниз, когда она пробивает подъемную полосу ATR, и при попадании цены вверх, когда она пробивает подъемную полосу ATR.
  4. Прямая позиция: при многопозиционных позициях, если цена выходит выше простых скользящих средних, она становится плоской; при открытых позициях, если цена выходит ниже простых скользящих средних, она становится пустой.

Стратегические преимущества

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

Стратегический риск

  1. Чувствительные к параметрам: выбор параметров для бринбета и ATR влияет на эффективность стратегии, требуя оптимизации в зависимости от различных рынков и сортов.
  2. В условиях нестабильных рынков частота сигналов может привести к чрезмерному количеству сделок и их стоимости.
  3. Повернуть тренд: когда тренд поворачивается, стратегия может привести к большому отступлению.

Направление оптимизации стратегии

  1. Оптимизация параметров: оптимизация параметров Брин-полосы и ATR для поиска оптимального сочетания параметров для различных рынков и сортов.
  2. Фильтр: добавление других технических показателей или моделей поведения цен в качестве фильтра, уменьшение ошибочных выводов и повышение качества сигнала.
  3. Управление позициями: динамическая корректировка позиций в зависимости от рыночной волатильности или риска счета, повышение эффективности использования средств и соотношения риска к прибыли.

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands and ATR Strategy", overlay=true)

// Veri Çekme
symbol = "AAPL"
timeframe = "D"
src = close

// Bollinger Bantları Hesaplama
len = 20
mult = 2
sum1 = 0.0, sum2 = 0.0
for i = 0 to len - 1
    sum1 += src[i]
basis = sum1 / len
for i = 0 to len - 1
    diff = src[i] - basis
    sum2 += diff * diff
dev = math.sqrt(sum2 / len)
upper_band = basis + dev * mult
lower_band = basis - dev * mult

// ATR Hesaplama
atr_period = input(10, title="ATR Period")
atr_value = 0.0
for i = 0 to atr_period - 1
    atr_value += math.abs(src[i] - src[i + 1])
atr_value /= atr_period
loss = input(1, title="Key Value (Sensitivity)")
atr_trailing_stop = src[1]
if src > atr_trailing_stop[1]
    atr_trailing_stop := math.max(atr_trailing_stop[1], src - loss * atr_value)
else if src < atr_trailing_stop[1]
    atr_trailing_stop := math.min(atr_trailing_stop[1], src + loss * atr_value)
else
    atr_trailing_stop := src - loss * atr_value

// Sinyal Üretme
long_condition  = src < lower_band and src[1] >= lower_band[1]
short_condition = src > upper_band and src[1] <= upper_band[1]
close_long  = src > basis
close_short = src < basis
buy_signal = src > atr_trailing_stop[1] and src[1] <= atr_trailing_stop[1]
sell_signal = src < atr_trailing_stop[1] and src[1] >= atr_trailing_stop[1]

if (long_condition)
    strategy.entry("Long", strategy.long, comment="Long Signal")
if (short_condition)
    strategy.entry("Short", strategy.short, comment="Short Signal")
if (close_long)
    strategy.close("Long", comment="Close Long")
if (close_short)
    strategy.close("Short", comment="Close Short")
if (buy_signal)
    strategy.entry("Long", strategy.long, comment="Buy Signal")
if (sell_signal)
    strategy.entry("Short", strategy.short, comment="Sell Signal")

// Çizim
plot(upper_band, color=#0000FF, linewidth=2, title="Upper Band")
plot(lower_band, color=#0000FF, linewidth=2, title="Lower Band")
plot(basis, color=#808080, linewidth=2, title="SMA")
plot(atr_trailing_stop, color=#FFA500, linewidth=2, title="ATR Trailing Stop")
plot(src, color=#FFA500, linewidth=2, title="Price")

// Sinyal İşaretleri
plotshape(long_condition, style=shape.arrowup, color=#00FF00, location=location.belowbar, size=size.small, title="Long Signal")
plotshape(short_condition, style=shape.arrowdown, color=#FF0000, location=location.abovebar, size=size.small, title="Short Signal")
plotshape(buy_signal, style=shape.diamond, color=#00FF00, location=location.belowbar, size=size.small, title="Buy Signal")
plotshape(sell_signal, style=shape.diamond, color=#FF0000, location=location.abovebar, size=size.small, title="Sell Signal")