볼링거 밴드 및 스톡 RSI 거래 전략

저자:차오장, 날짜: 2023-09-21 21:02:02
태그:

전반적인 설명

이 전략은 볼링거 밴드 (Bollinger Bands) 와 스톡 RSI (Stock RSI) 인디케이터를 결합하여 여러 지표 거래를 수행한다. 이 전략은 전형적인 결합 지표 전략 유형에 속한다. 볼링거 밴드는 트렌드 방향을 결정하고 스톡 RSI는 거래 신호에 대한 입시 시기를 최적화한다.

전략 논리

이 전략은 두 가지 주요 지표에 기반합니다.

  1. 볼링거 밴드

    상위, 중위 및 하위 대역을 계산합니다. 가격이 하위 대역을 넘을 때 구매 신호가 생성됩니다.

  2. 스톡 RSI

    스톡 RSI 인디케이터를 계산합니다. K 라인이 D 라인의 위를 넘을 때 구매 신호가 생성됩니다.

구체적인 거래 논리는: 볼링거 반드의 하부 브레이크오웃과 스톡 RSI의 황금 크로스 모두 함께 발생했을 때 긴 오픈입니다.

출구 논리는 이윤을 취하고 손실을 멈추는 밴드를 사용합니다. 가격이 상위 또는 중간 밴드에 다시 닿을 때 이익을 위해 닫습니다. 가격이 하위 밴드 아래로 넘어갈 때 손실을 위해 닫습니다.

장점

  • 볼링거 밴드와 스톡 RSI를 결합합니다.
  • 밴드는 전체 추세를 판단합니다. 스톡 RSI는 진입을 최적화합니다.
  • 스톡 RSI는 거짓 밴드 브레이크를 필터합니다.
  • 중간 및 하위 대역은 출구를 제공합니다.
  • 최적화를 위한 여러 가지 조절 가능한 매개 변수

위험성

  • MA 기반의 지표의 지연, 가장 좋은 항목이 없습니다.
  • 순수적으로 지표에 의해, 갑작스러운 사건에 대한 느린 반응
  • 부적절한 대역 설정으로 정류가 무효가 됩니다.
  • 나쁜 스톡 RSI 매개 변수는 잘못된 신호를 생성합니다.
  • 각기 다른 제품에 필요한 별도의 매개 변수 조정

위험은 다음과 같이 감소 할 수 있습니다.

  • 더 높은 정확성을 위해 매개 변수를 최적화
  • MACD와 같은 확인 필터를 추가합니다.
  • 밴드 스톱 대신 후속 스톱을 사용
  • 다른 제품들에 대한 테스트 매개 변수
  • 위치 크기를 조절하는 시스템

개선 방향

이 전략은 다음과 같이 개선될 수 있습니다.

  1. 볼링거 밴드 매개 변수 최적화

    가장 잘 맞도록 상부/하부 계산 비율을 조정합니다.

  2. 스톡 RSI 매개 변수 최적화

    최적의 K와 D값을 찾는 것

  3. MACD와 같은 확인 지표를 추가합니다.

    단 하나의 지표에 의존하는 잘못된 신호를 피하십시오.

  4. 고정된 스톱 대신 후속 수익 스톱을 사용하는 것

    가격 변동에 기초한 트레일 스톱

  5. 각기 다른 제품별로 테스트 매개 변수

    최적의 매개 변수는 다른 제품마다 다릅니다.

요약

이 전략은 트렌드 방향과 스톡 RSI를 활용하여 멀티 지표 접근 방식을 활용하여 엔트리 최적화를 위해 볼링거 밴드를 활용합니다. 그러나 어려운 매개 변수 최적화 및 신호 정확성과 같은 과제는 존재한다. 매개 변수 최적화, 필터 추가 및 결과에 기반한 규칙을 지속적으로 조정하기위한 엄격한 백테스팅은 결합 시스템의 강점을 유지하면서 정확성을 향상시킬 수 있습니다. 지속적인 최적화는 탄력성을 가져옵니다.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy(title = "BB+RSI v2", overlay = true)

price=close
////////// ///////  BB /////////////////////////

bblength = input(50)
bbupmult =input(2,step=0.1,title="Multiplier for BB Upper Band")
bblowmult = input(2,step=0.1,title="Multiplier for BB Lower Band")

basis =  sma(close,bblength)

devup = bbupmult * stdev(close, bblength)
devlow = bblowmult * stdev(close, bblength)

upper = basis + devup
lower = basis - devlow
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1, p2)


bbbuy= crossover(price,lower)
bbsell = crossunder(price,upper) or price>upper or crossunder(price,basis)



//////////////////// BB //////////////////////




////////////////////////  S RSI  /////////////////////

lengthrsi = input(6)
overSold = input( 20 )
overBought = input( 70 )
vrsi = rsi(price, lengthrsi)

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

SRSIbuy=crossover(k,d)

////////////////////// S  RSI  ///////////////////////

// Conditions



longcond = bbbuy and SRSIbuy
closelong = bbsell


monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  longcond ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( closelong  ) 

    strategy.close("BUY")







더 많은