RSI 볼링거 밴드 거래 전략

저자:차오장, 날짜: 2023-09-18 22:13:18
태그:

모든 영어 콘텐츠

전반적인 설명

이 전략은 RSI 지표를 사용하여 과잉 구매/ 과잉 판매 조건을 결정하고 볼링거 밴드 지표와 결합하여 가격 오스실레이션 범위를 묘사하여 거래 신호를 식별합니다. RSI가 과잉 구매 또는 과잉 판매 수준을 표시 할 때 가격이 접근하거나 볼링거 밴드 상부 또는 하부 대역에 닿을 때 구매 및 판매 신호를 생성합니다. 전략은 동적으로 기회를 찾기 위해 트렌드 분석과 오스실레이션 판단을 합성합니다.

전략 논리

이 전략은 주로 두 가지 지표에 기초합니다.

  1. 과잉 구매/ 과잉 판매를 판단하는 RSI 지표

그것은 특정 기간에 대한 RSI를 계산하고 40의 과잉 구매 한계와 45의 과잉 판매 한계와 같은 미리 설정된 매개 변수에 따라 과잉 구매 한계 또는 과잉 판매 한계에 진입하는지 결정합니다.

  1. 가격 오스칠레이션 범위를 나타내는 볼링거 밴드

그것은 기간에 대한 볼링거 밴드를 계산하고 상부와 하부 밴드를 사용하여 가격 채널을 형성하여 가격 오스칠레이션 범위를 설명합니다.

앞서 언급한 바에 근거하여, 거래 규칙은 다음과 같습니다.

만약 RSI가 45을 넘어서 지나치게 팔린 구역으로 넘어갔고, 가격이 볼링거 하단역을 넘어서면 구매 신호를 생성합니다. RSI가 40 이하로 넘어 지나치게 구매된 구역으로 넘어갔을 때, 그리고 가격이 볼링거 상단 이하로 넘어갔을 때, 판매 신호를 생성합니다.

이점 분석

RSI와 볼링거 밴드 결합의 장점은 다음과 같습니다.

  1. RSI는 과잉 구매/ 과잉 판매 수준을 식별합니다. 볼링거 밴드는 가격 트렌드 방향을 결정하고 서로를 보완합니다.

  2. 볼링거 밴드는 위험 통제를 위한 스톱 로스 레벨로 사용될 수 있습니다.

  3. 간단한 매개 변수들은 구현과 백테스트를 쉽게 합니다.

  4. RSI 매개 변수는 최적화되어 가장 좋은 과잉 구매/ 과잉 판매 범위를 결정할 수 있습니다.

  5. 다양한 가격 입력값을 사용하여 다양한 시장 환경에 적응할 수 있습니다.

위험 과 해결책

이 전략에는 몇 가지 위험도 있습니다.

  1. 과도한 볼링거 밴드 폭이 나쁜 스톱 로스 기대로 이어집니다.

    • 스톱 로스 범위를 최적화하기 위해 볼링거 밴드 너비 매개 변수를 조정합니다.
  2. 부적절한 RSI 매개 변수 설정으로 인해 부적절한 과잉 구매/ 과잉 판매 수준 판단이 발생합니다.

    • 최적의 거래 범위를 결정하기 위해 백테스팅을 통해 RSI 매개 변수를 최적화합니다.
  3. 트렌드 반전 지점을 정확하게 결정하지 못해서 신호가 사라질 위험이 있습니다.

    • 트렌드 반전을 더 빨리 포착하기 위해 볼링거 밴드 기간 매개 변수를 짧게 합니다.
  4. 손실을 효과적으로 통제할 수 없는 경우, 상당한 가격 변동에 의해 스톱 로스가 발생할 위험이 있습니다.

    • 이동 또는 동적 스톱 손실을 추가하여 스톱 손실 방법을 최적화합니다.

개선 방향

전략을 최적화하는 몇 가지 방법:

  1. 이상적인 과반 구매/ 과반 판매 범위를 결정하기 위해 RSI 매개 변수를 최적화합니다.

  2. 스톱 로스 범위를 제어하기 위해 볼링거 밴드 너비 매개 변수를 최적화합니다.

  3. 다른 지표를 추가하여 트렌드 반전을 식별하고 신호를 놓치지 않도록하십시오.

  4. 거래 시기를 결정하기 위해 기계 학습 모델을 적용합니다.

  5. 다른 시장 환경에 따라 다른 매개 변수 세트를 사용하십시오.

  6. 동적 스톱 손실 메커니즘을 추가합니다.

  7. 자동 매개 변수 최적화 프로그램을 개발합니다.

결론

요약하자면, RSI와 볼링거 밴드를 결합함으로써이 전략은 비교적 견고한 거래 결정을 형성합니다. 논리는 간단하고 명확하며 위험 통제에 좋지만 최적화 할 여지가 있습니다. 매개 변수 최적화, 스톱 로스 최적화, 알고리즘 통합 등을 통해 전략을 더욱 강화하면 복잡한 시장 환경에 더 적응 할 수 있습니다. 전략은 거래 시스템을 구축하기위한 아이디어를 제공하며 추가 연구와 응용 가치가 있습니다.


/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Mdemoio


//@version=4
strategy("Madri", shorttitle="Madri", overlay=true)


// Version 1.1


///////////// RSI
RSIlength = input(2,title="A") 
RSIoverSold = 45
RSIoverBought = 40
price = close
vrsi = rsi(price, RSIlength)


///////////// Bollinger Bands
BBlength = input(150, minval=1,title="B")
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)


///////////// 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="Buy")
    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="Sell")
    else
        strategy.cancel(id="RSI_BB_S")

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

더 많은