볼린저 밴드, RSI 및 이동 평균을 기반으로 한 추세 추종 전략


생성 날짜: 2024-02-02 11:35:17 마지막으로 수정됨: 2024-02-02 11:35:17
복사: 0 클릭수: 640
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

볼린저 밴드, RSI 및 이동 평균을 기반으로 한 추세 추종 전략

개요

이 전략은 브린띠 지표, 상대적으로 강한 지표 ((RSI) 와 이동 평균 ((MA) 을 통합하여 시장의 잠재적인 입출소를 식별하는 것을 목적으로 한다. 이 전략은 구매 및 판매 신호 알림을 생성할 수 있으며, 이러한 알림은 수동 거래 또는 자동 거래 시스템으로 실행될 수 있다.

전략 원칙

이 전략은 두 개의 변수 다른 부린을 사용하여 가격 통로를 생성한다. 부린의 기본 변수는 20 주기의 길이이며, 표준 차이는 2이다. 부린의 상반도 및 하반도는 각각 역동적인 저항과 지지를 담당한다.

RSI 지표는 가격 동력이 강하거나 약하다는 것을 판단하는 데 사용됩니다. RSI의 수치를 읽고 과매매 또는 과매매 여부를 판단합니다.

전략에는 50주기의 이동 평균도 통합되어 전체 트렌드 방향을 판단합니다. 가격이 이동 평균보다 높으면 상승 추세에 있으며, 가격이 이동 평균보다 낮으면 하락 추세에 있습니다.

구매 신호의 조건: RSI가 초매선보다 높고 브린이 수축하지 않은 상태.

판매 신호의 조건: RSI가 초매도선보다 낮고 브린이 수축하지 않은 상태.

평소 포지션 신호의 조건: 긴 포지션은 이동 평균보다 낮은 가격으로 닫히고 짧은 포지션은 이동 평균보다 높은 가격으로 닫히고

전략적 이점

  1. 브린 밴드, RSI, 이동 평균의 3가지 지표와 결합하여 트렌드 방향을 종합적으로 판단하여 잘못된 신호를 피하십시오.

  2. 브린 띠는 지역 고저를 판단하고 돌파구를 확인하고, RSI는 가짜 돌파구를 필터링하고, 이동 평균은 전반적인 움직임을 판단한다. 이 세 가지는 상호 검증하여 트렌드 전환 지점을 정확하게 찾는다.

  3. 전략 파라미터가 최적화되어, 브린띠는 두 개의 표준 차차 파라미터를 사용하여 가격 통로를 더 정확하게 묘사한다.

전략적 위험

  1. 부린띠가 수축할 때, 잘못된 신호가 발생하기 쉽다. 이 때 RSI도 중립권에 가까워 거래는 피해야 한다.

  2. 흔들림 트렌드에서 RSI와 이동 평균은 잘못된 신호를 일으킬 수 있습니다. 흔들림 시장에 있는지 미리 식별해야합니다.

  3. 가격 폭격 격차를 효과적으로 처리할 수 없는 상황. 다른 지표와 함께 진정한 돌파구를 판단해야 한다.

전략 최적화 방향

  1. 브린띠와 RSI의 매개 변수를 최적화하여 다른 품종과 시간 주기 특성에 더 적합하게 만듭니다.

  2. 추가적인 스톱로스 설정을 추가한다. 가격의 스톱로스 라인을 깨면 자동으로 스톱로스한다.

  3. ADX와 같은 트렌드 필터를 추가하여 트렌드 상태가 아닌지 판단할 수 있다.

  4. 자동 거래 시스템과 결합하여, 생성된 거래 신호를 이용하여 거래가 자동으로 실행되며, 인적 개입이 필요하지 않습니다.

요약하다

이 전략은 브린 밴드, RSI 및 이동 평균의 세 지표의 장점을 통합하여 파라미터 최적화를 통해 신호의 정확도를 향상시킵니다. 자동으로 거래 알람을 생성 할 수 있습니다. 전략 거래를 수행합니다. 위험은 주로 흔들리는 상황에서 잘못된 신호 발생입니다. 추세를 판단하는 지표를 통해 필터링하면 유효하지 않은 거래를 줄일 수 있습니다. 전체적으로, 이 전략은 파라미터 최적화 및 다중 지표 통합을 사용하여 거래 신호 품질을 향상시키고 실제 검증 및 사용에 적용됩니다.

전략 소스 코드
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands, RSI, and MA Strategy", overlay=true)

// Define input variables
b_len = input(20, title="BB Length")
bb_mult = input(2.0, title="BB Standard Deviation")
bb_deviation1 = input(1.0, title="BB Deviation 1")
rsi_len = input(14, title="RSI Length")
overbought = input(70, title="Overbought RSI Level")
oversold = input(30, title="Oversold RSI Level")
ma_len = input(50, title="MA Length")
stop_loss_percent = input(1.0, title="Stop Loss Percentage")
source = input(close, title="Source")

// Calculate Bollinger Bands
bb_upper = ta.sma(source, b_len) + bb_mult * ta.stdev(source, b_len)
bb_lower = ta.sma(source, b_len) - bb_mult * ta.stdev(source, b_len)
bb_upper1 = ta.sma(source, b_len) + bb_deviation1 * ta.stdev(source, b_len)
bb_lower1 = ta.sma(source, b_len) - bb_deviation1 * ta.stdev(source, b_len)

// Calculate RSI
rsi = ta.rsi(source, rsi_len)

// Calculate Moving Average
ma = ta.sma(source, ma_len)

// Determine if Bollinger Bands are contracting
bb_contracting = ta.stdev(source, b_len) < ta.stdev(source, b_len)[1]

// Entry conditions
enterLong = rsi > overbought and not bb_contracting
enterShort = rsi < oversold and not bb_contracting

// Exit conditions
exitLong = close < ma
exitShort = close > ma

// Exit trades and generate alerts
if strategy.position_size > 0 and exitLong
    strategy.close("Long") // Exit the long trade
    alert("Long Exit", alert.freq_once_per_bar_close)
if strategy.position_size < 0 and exitShort
    strategy.close("Short") // Exit the short trade
    alert("Short Exit", alert.freq_once_per_bar_close)

// Strategy orders
if enterLong
    strategy.entry("Long", strategy.long)
if enterShort
    strategy.entry("Short", strategy.short)
if exitLong
    strategy.close("Long")
if exitShort
    strategy.close("Short")

// Plotting Bollinger Bands
plot(bb_upper, color=color.blue, title="BB Upper 2")
plot(bb_lower, color=color.blue, title="BB Lower 2")
plot(bb_upper1, color=color.red, title="BB Upper 1")
plot(bb_lower1, color=color.red, title="BB Lower 1")

// Plotting RSI
plot(rsi, color=color.orange, title="RSI")

// Plotting Moving Average
plot(ma, color=color.green, title="Moving Average")