Боллинджерская полоса Удивительный Осиллятор Брейкют Торговая стратегия

Автор:Чао Чжан, Дата: 2023-12-12 17:12:35
Тэги:

img

Обзор

Эта стратегия сочетает в себе индикатор Bollinger Bands и индикатор Awesome Oscillator (AO) для реализации торговой модели прорыва. Она генерирует сигналы покупки и продажи, когда быстрая EMA проходит через канал BB, вместе с направленными сигналами индикатора AO.

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

  1. Для определения ценового канала используйте средние, верхние и нижние полосы полос Боллинджера.
  2. Судите о прорыве канала, когда быстрая EMA пересекает средний диапазон.
  3. Показатель AO определяет направление восходящего или нисходящего тренда.
  4. Когда быстрая EMA проходит через среднюю полосу вверх, а AO положительный, генерируется сигнал покупки.
  5. Когда быстрая EMA проходит через средний диапазон вниз, а AO отрицательный, генерируется сигнал продажи.

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

  1. BB канал избегает неправильных сигналов.
  2. Показатель AO улучшает точность сигналов.
  3. Захватывает большую прибыль в начале тренда.

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

  1. Неправильные параметры BB могут вызвать слишком широкий или слишком узкий канал.
  2. Параметры AO влияют на точность.
  3. Сигнал прорыва может быть ложным.

Решение

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

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

  1. Оптимизируйте параметры BB, чтобы найти подходящий диапазон канала.
  2. Оптимизировать долгосрочные и краткосрочные периоды ОО для повышения точности.
  3. Добавьте объем или другие фильтры для обеспечения надежности прорыва.
  4. Оптимизируйте силу, чтобы снизить частоту ложного прорыва.

Заключение

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


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

//@version=3

strategy(shorttitle="BB+AO STRAT", title="BB+AO STRAT", overlay=true)


// === BACKTEST RANGE ===
FromMonth = input(defval = 6, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth   = input(defval = 1, title = "To Month", minval = 1)
ToDay     = input(defval = 1, title = "To Day", minval = 1)
ToYear    = input(defval = 9999, title = "To Year", minval = 2014)

// Bollinger Bands Inputs
bb_use_ema = input(false, title="Use EMA for Bollinger Band")
bb_length = input(5, minval=1, title="Bollinger Length")
bb_source = input(close, title="Bollinger Source")
bb_mult = input(2.0, title="Base Multiplier", minval=0.5, maxval=10)
// EMA inputs
fast_ma_len = input(2, title="Fast EMA length", minval=2)
// Awesome Inputs
nLengthSlow = input(34, minval=1, title="Awesome Length Slow")
nLengthFast = input(5, minval=1, title="Awesome Length Fast")




// Breakout Indicator Inputs
bb_basis = bb_use_ema ? ema(bb_source, bb_length) : sma(bb_source, bb_length)
fast_ma  = ema(bb_source, fast_ma_len)

// Deviation

dev = stdev(bb_source, bb_length)
bb_dev_inner = bb_mult * dev

// Upper bands
inner_high = bb_basis + bb_dev_inner
// Lower Bands
inner_low = bb_basis - bb_dev_inner

// Calculate Awesome Oscillator
xSMA1_hl2 = sma(hl2, nLengthFast)
xSMA2_hl2 = sma(hl2, nLengthSlow)
xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2
// Calculate direction of AO
AO = xSMA1_SMA2>=0? xSMA1_SMA2 > xSMA1_SMA2[1] ? 1 : 2 : xSMA1_SMA2 > xSMA1_SMA2[1] ? -1 : -2



// === PLOTTING ===

// plot BB basis
plot(bb_basis, title="Basis Line", color=red, transp=10, linewidth=2)
// plot BB upper and lower bands
ubi = plot(inner_high, title="Upper Band Inner", color=blue, transp=10, linewidth=1)
lbi = plot(inner_low, title="Lower Band Inner", color=blue, transp=10, linewidth=1)
// center BB channel fill
fill(ubi, lbi, title="Center Channel Fill", color=silver, transp=90)

// plot fast ma
plot(fast_ma, title="Fast EMA", color=black, transp=10, linewidth=2)

// Calc breakouts
break_down =   crossunder(fast_ma, bb_basis) and close < bb_basis and abs(AO)==2
break_up   =  crossover(fast_ma, bb_basis) and close > bb_basis and abs(AO)==1

// Show Break Alerts
plotshape(break_down, title="Breakout Down", style=shape.arrowdown, location=location.abovebar, size=size.auto, text="Sell", color=red, transp=0)
plotshape(break_up, title="Breakout Up", style=shape.arrowup, location=location.belowbar, size=size.auto, text="Buy", color=green, transp=0)
// === ALERTS ===



strategy.entry("L", strategy.long, when=(break_up and (time > timestamp(FromYear, FromMonth, FromDay, 00, 00)) and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))


strategy.close("L", when=(break_down and (time < timestamp(ToYear, ToMonth, ToDay, 23, 59))))

// === /PLOTTING ===
barcolor(AO == 2 ? red: AO == 1 ? green : blue )



// eof

Больше