RSI와 볼링거 밴드 이중 전략

저자:차오장, 날짜: 2024-04-03 17:54:52
태그:RSIBBSMAstdev

img

전반적인 설명

이 전략은 상대적 강도 지수 (RSI) 와 볼링거 밴드 기술 지표를 결합한다. 가격은 낮은 볼링거 밴드 이하로 떨어지면 구매 신호를 생성하고 가격이 상위 볼링거 밴드 이상으로 상승하면 판매 신호를 생성한다. 이 전략은 RSI와 볼링거 밴드 지표가 동시에 과판 또는 과반 상태에서 있을 때만 거래 신호를 유발한다.

전략 논리

  1. 설정된 RSI 매개 변수에 기초하여 RSI 값을 계산합니다.
  2. 중간, 상부, 하부 볼링거 밴드를 계산하기 위해 볼링거 밴드 공식을 사용하십시오.
  3. 현재 종료 가격이 상위 또는 하위 볼링거 반도를 통과하는지 결정합니다.
  4. 현재 RSI 값이 과잉 매수 기준보다 높거나 과잉 매수 기준보다 낮는지 결정합니다.
  5. 볼링거 밴드와 RSI가 각 조건에 부합하면 해당 구매 또는 판매 신호를 생성합니다.

전략적 장점

  1. 추세와 동력 지표를 결합하여 시장 상황을 보다 포괄적으로 평가합니다.
  2. 두 개의 표시기를 필터로 사용하면 잘못된 신호의 확률이 효과적으로 감소합니다.
  3. 명확한 코드 로직과 유연한 매개 변수 설정, 다른 시장 환경과 거래 스타일에 적합합니다.

전략 위험

  1. 불안한 시장에서 이 전략은 더 많은 손실을 초래할 수 있습니다.
  2. 부적절한 매개 변수 설정은 전략 성능의 저하로 이어질 수 있으며 실제 조건에 따라 최적화가 필요합니다.
  3. 이 전략은 스톱 로스를 포함하지 않으며, 잠재적으로 상당한 유출 위험에 노출될 수 있습니다.

전략 최적화 방향

  1. 시장 특성과 개인 선호도에 따라 RSI와 볼링거 밴드 매개 변수를 최적화합니다.
  2. 신호 신뢰성을 향상시키기 위해 MACD, 이동 평균 등과 같은 추가 기술 지표를 도입합니다.
  3. 단일 거래 위험을 통제하기 위해 합리적인 스톱 로스 및 영업 수익 수준을 설정합니다.
  4. 불안정한 시장에서는 더 많은 조건을 추가하거나 빈번한 거래와 관련된 비용을 낮추기 위해 포지션 크기를 줄이는 것을 고려하십시오.

요약

RSI 및 볼링거 밴드 이중 전략은 시장 조건에 대한 비교적 포괄적인 평가를 제공하고 그에 따른 거래 신호를 생성하기 위해 트렌드 및 모멘텀 지표를 결합합니다. 그러나 전략은 불안정한 시장에서 성과를 떨어뜨릴 수 있으며 리스크 제어 조치가 부족하므로 라이브 거래에 적용할 때 주의가 필요합니다. 매개 변수를 최적화하고 다른 지표를 도입하고 합리적인 스톱 로스 및 영업 수준을 설정함으로써이 전략의 안정성과 수익성을 더욱 향상시킬 수 있습니다.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
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(14,title="RSI Period Length") 
RSIoverSold = 30
RSIoverBought = 70
price = close
vrsi = rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input(20, minval=1,title="Bollinger Period Length")
BBmult = 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=color.blue,title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=color.red,title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=color.green,title="Bollinger Bands Lower Line")
fill(p1, p2)

// Entry conditions
crossover_rsi = crossover(vrsi, RSIoverSold) and crossover(source, BBlower)
crossunder_rsi = crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper)

///////////// RSI + Bollinger Bands Strategy
if (not na(vrsi))
    if (crossover_rsi)
        strategy.entry("RSI_BB_L", strategy.long, comment="RSI_BB_L")
    else
        strategy.cancel(id="RSI_BB_L")
        
    if (crossunder_rsi)
        strategy.entry("RSI_BB_S", strategy.short, comment="RSI_BB_S")
    else
        strategy.cancel(id="RSI_BB_S")


관련

더 많은