В процессе загрузки ресурсов... загрузка...

Стратегия стохастического осциллятора Bollinger Bands

Автор:Чао Чжан, Дата: 2024-05-09 15:59:11
Тэги:SMA

img

Обзор

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

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

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

Стохастический осциллятор состоит из двух линий: линии %K и линии %D. Линия %K измеряет положение цены закрытия в пределах самых высоких и самых низких цен за последний период, а линия %D представляет собой скользящую среднюю отличию линии %K. Когда линия %K пересекает линию %D, это указывает на то, что рынок может быть перекуплен; когда линия %K пересекает линию %D, это указывает на то, что рынок может быть перепродан.

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

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

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

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

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

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

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

Резюме

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


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

//@version=5
strategy("Unique Bollinger Bands Strategy", overlay=true)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)

basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev

upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2

colorBasis = src >= basis ? color.blue : color.orange

pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))

fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))




// Parameters
bbLength = input.int(34, title="Length", minval=1)
bbMultiplier = input.float(2.0, title="Multiplier", minval=0.001, maxval=50)

// Source
priceData = close // Unique name for price data source

// Bollinger Bands Calculation
bbBasis = ta.sma(priceData, bbLength)
bbDeviation = ta.stdev(priceData, bbLength)
bbDeviationMultiplied = bbMultiplier * bbDeviation

bbUpperBand = bbBasis + bbDeviationMultiplied
bbLowerBand = bbBasis - bbDeviationMultiplied

// Plot Bollinger Bands
plot(bbBasis, color=color.blue, linewidth=2)
plot(bbUpperBand, color=color.blue)
plot(bbLowerBand, color=color.orange)

// Strategy Logic for Entry and Exit
enterLong = ta.crossover(priceData, bbUpperBand)
enterShort = ta.crossunder(priceData, bbLowerBand)

// Enter Long when price crosses over upper band
if (enterLong)
    strategy.entry("Long", strategy.long)
// Enter Short when price crosses under lower band
if (enterShort)
    strategy.entry("Short", strategy.short)

// Close Long when Short condition is met (i.e., price under lower band)
if (enterShort)
    strategy.close("Long")
// Close Short when Long condition is met (i.e., price over upper band)
if (enterLong)
    strategy.close("Short")






Связанные

Больше