Стратегия двойной линии Bollinger Band RSI

Автор:Чао Чжан, Дата: 2023-12-26 15:30:26
Тэги:

img

Обзор

Эта стратегия объединяет Bollinger Bands с индикатором относительной силы (RSI). Она требует сигналов от обоих индикаторов - RSI перекупленный/перепроданный вместе с прорывами верхних/нижних линий Bollinger Bands - перед выпуском любых торговых сигналов. Это делает сигналы стратегии более строгими и надежными.

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

  1. Вычислить диапазоны Боллинджера, состоящие из средней линии, верхней линии и нижней линии, на основе цен закрытия в течение ретроспективного периода.
  2. Вычислить индикатор RSI, чтобы судить, слишком ли рынок бычий или медвежий.
  3. Начинать короткую торговлю только тогда, когда показатель RSI показывает перекупленность (выше параметра rsi_overbought) и цена превышает верхнюю линию Боллинджера.
  4. Начинать длинную торговлю только тогда, когда показатель RSI показывает перепроданность (ниже параметра rsi_oversold) и цена прорывается ниже нижней линии Боллинджера.

Требуя согласия как полос Боллинджера, так и RSI, эта стратегия избегает действий по вводящим в заблуждение сигналам от одного индикатора, следовательно, более надежна.

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

  1. Использует сильные стороны как полос Боллинджера, так и RSI, делая сигналы более строгими и избегая ошибок.
  2. Болинджерские полосы устанавливают динамические каналы для фиксации волатильности рынка.
  3. RSI показывает сценарии перекупа/перепродажи, предотвращая преследование пиков или снижение цен.

Риски

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

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

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

  1. Проверьте полосы Боллинджера с различными периодами обратной связи, чтобы найти оптимальные параметры.
  2. Испытайте различные параметры RSI, чтобы определить относительно лучшие настройки.
  3. Добавьте другие показатели, такие как скользящие средние, чтобы определить общую тенденцию.

Заключение

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


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

//@version=2
strategy("Bollinger + RSI, Double Strategy (by ChartArt) v1.1", shorttitle="CA_-_RSI_Bol_Strat_1.1", overlay=true)

// ChartArt's RSI + Bollinger Bands, Double Strategy - Update
//
// Version 1.1
// Idea by ChartArt on January 18, 2015.
//
// This strategy uses the RSI indicator 
// together with the Bollinger Bands 
// to sell when the price is above the
// upper Bollinger Band (and to buy when
// this value is below the lower band).
//
// This simple strategy only triggers when
// both the RSI and the Bollinger Bands
// indicators are at the same time in
// a overbought or oversold condition.
//
// In this version 1.1 the strategy was
// both simplified for the user and
// made more successful in backtesting. 
//
// List of my work: 
// https://www.tradingview.com/u/ChartArt/
// 
//  __             __  ___       __  ___ 
// /  ` |__|  /\  |__)  |   /\  |__)  |  
// \__, |  | /~~\ |  \  |  /~~\ |  \  |  
// 
// 


///////////// RSI
RSIlength = input(6,title="RSI Period Length") 
RSIoverSold = 50
RSIoverBought = 50
price = close
vrsi = rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input(200, minval=1,title="Bollinger Period Length")
BBmult = 2 // input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = crossover(source, BBlower)
sellEntry = crossunder(source, BBupper)
plot(BBbasis, color=aqua,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=silver,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=silver,title="Bollinger Bands Lower Line")
fill(p1, p2)


///////////// Colors
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? green : na
barcolor(switch1?TrendColor:na)
bgcolor(switch2?TrendColor:na,transp=50)


///////////// RSI + Bollinger Bands Strategy
if (not na(vrsi))

    if (crossover(vrsi, RSIoverSold) and crossover(source, BBlower))
        strategy.entry("RSI_BB_L", strategy.long, stop=BBlower,  comment="RSI_BB_L")
    else
        strategy.cancel(id="RSI_BB_L")
        
    if (crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper))
        strategy.entry("RSI_BB_S", strategy.short, stop=BBupper,  comment="RSI_BB_S")
    else
        strategy.cancel(id="RSI_BB_S")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)

Больше