가우시안 채널과 확률적 상대 강도 지수 필터링을 기반으로 한 추세 판단 전략

GC RSI SMA K D
생성 날짜: 2025-02-21 11:42:36 마지막으로 수정됨: 2025-02-21 11:42:36
복사: 0 클릭수: 425
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

가우시안 채널과 확률적 상대 강도 지수 필터링을 기반으로 한 추세 판단 전략 가우시안 채널과 확률적 상대 강도 지수 필터링을 기반으로 한 추세 판단 전략

개요

이 전략은 고스 채널과 비교적 한 임의의 지수 (Stochastic RSI) 를 결합한 트렌드 추적 거래 시스템이다. 고스 채널은 가격의 추세와 변동 범위를 식별하는 데 사용되며, 스토카스틱 RSI는 필터로써 오버 바이 오버 소드 조건을 확인하여 거래 신호의 정확성을 높인다. 이 전략은 고스 채널 경계와 가격의 교차와 스토카스틱 RSI의 위치를 관찰함으로써 거래 신호를 생성한다.

전략 원칙

전략의 핵심 논리는 다음과 같은 핵심 구성 요소를 기반으로 합니다.

  1. 고스 통로 계산: 고스 필터를 사용하여 중선을 계산하고, 곱하기 설정을 기반으로 상하 통로 대역을 다. 고스 필터는 지수 평준화 방식을 채택하여 가격 소음을 효과적으로 줄일 수 있다.
  2. 스토카스틱 RSI 지표: 무작위 지표와 RSI의 장점을 결합하여 %K와 %D의 두 개의 슬라이드 라인을 통해 과매매 상태를 식별한다.
  3. 입장 조건:
    • 다수: 가스스 채널 하향 경로를 돌파하고 스토카스틱 RSI가 과매매 영역에 있다
    • 공백: 가격이 고스 통로 상대로 내려갔고, 스토카스틱 RSI가 초과 구매 영역에 있습니다.
  4. 출전 조건:
    • 가격이 고스 통로의 중간선을 통과했을 때
    • 또는 스토카스틱 RSI가 반대의 오버 바이 오버 소드를 달성합니다.

전략적 이점

  1. 신호 신뢰성: 트렌드 및 동력 지표와 결합하여 가짜 신호를 효과적으로 필터링 할 수 있습니다.
  2. 리스크 관리가 완성: 고스 통로를 동적으로 지원하는 압력점으로 사용하여 좋은 리스크 관리 프레임 워크를 제공합니다.
  3. 매개 변수 조정성: 다양한 시장 특성에 따라 채널 폭과 RSI 매개 변수를 조정할 수 있습니다.
  4. 컴퓨팅 효율성: 고스 필터 계산량이 작아 실시간 거래에 적합하다
  5. 적응력: 다른 시간 주기 및 시장 환경에서 사용할 수 있습니다

전략적 위험

  1. 위기 시장 위험: 수평 시장에서 빈번한 가짜 브레이크 신호가 발생할 수 있습니다.
  2. 지연성 위험: 지표의 부드러운 처리가 신호 지연을 초래할 수 있다.
  3. 변수 감수성: 다른 변수 조합이 다른 거래 결과를 초래할 수 있다.
  4. 시장 환경 의존성: 강세를 보이는 시장에서 우수한 성과를 보이지만 급격한 반전 시장에서는 더 큰 회수 현상이 발생할 수 있습니다

전략 최적화 방향

  1. 동적 매개변수 최적화:
    • 시장의 변동에 따라 채널 폭을 조정
    • 시장 주기의 특성에 따라 동적으로 조정된 스토카스틱 RSI 파라미터
  2. 신호 확인 메커니즘
    • 트랜지먼트 확인 지표 추가
    • 트렌드 강도 필터를 도입
  3. 위험 관리 강화:
    • 동적 정지 손해 제어를 구현
    • 포지션 관리 모듈
  4. 시장환경 인식:
    • 시장 상태 분류기를 개발
    • 다른 시장 상황에 따라 전략 매개 변수를 조정

요약하다

이 전략은 가우스 채널과 스토카스틱 RSI를 결합하여 트렌드 추적과 동력 특성을 겸비한 거래 시스템을 구축한다. 전략은 합리적으로 설계되어 있으며, 확장성과 적응성이 뛰어나다. 전략의 안정성과 수익성을 추가적으로 향상시킬 수 있는 방향의 최적화를 제안한다. 실제 응용에서는 다양한 파라미터 조합을 충분히 테스트하고 특정 시장 특성에 따라 타깃 최적화를 제안한다.

전략 소스 코드
/*backtest
start: 2025-01-21 00:00:00
end: 2025-02-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=6
strategy("Gaussian Channel + Stochastic RSI Filter", overlay=true, margin_long=100, margin_short=100)

// === INPUTS ===
input_length = input.int(100, title="Gaussian Channel Length", minval=1)
input_mult = input.float(2.0, title="Gaussian Channel Multiplier", minval=0.1, step=0.1)
stoch_rsi_period = input.int(14, title="Stochastic RSI Period", minval=1)
stoch_rsi_smoothK = input.int(3, title="Stochastic RSI Smooth K", minval=1)
stoch_rsi_smoothD = input.int(3, title="Stochastic RSI Smooth D", minval=1)
stoch_rsi_overbought = input.float(80.0, title="Stochastic RSI Overbought Level", minval=0, maxval=100)
stoch_rsi_oversold = input.float(20.0, title="Stochastic RSI Oversold Level", minval=0, maxval=100)

// === GAUSSIAN CHANNEL ===
// Gaussian filter calculation with proper initialization
gauss(src, len) =>
    b = math.exp(-1.414 * 3.14159 / len)
    a0 = 1 - b
    var float f = na
    f := na(f[1]) ? src : a0 * src + b * f[1]

// Calculate Gaussian channel
gaussian_channel_mid = gauss(close, input_length)
gaussian_channel_high = gaussian_channel_mid + gaussian_channel_mid * input_mult / 100
gaussian_channel_low = gaussian_channel_mid - gaussian_channel_mid * input_mult / 100

// Plot Gaussian Channel
plot(gaussian_channel_mid, color=color.blue, linewidth=2, title="Gaussian Channel Midline")
plot(gaussian_channel_high, color=color.green, linewidth=1, title="Gaussian Channel Upper Band")
plot(gaussian_channel_low, color=color.red, linewidth=1, title="Gaussian Channel Lower Band")

// === STOCHASTIC RSI ===
k = ta.sma(ta.stoch(close, high, low, stoch_rsi_period), stoch_rsi_smoothK)
d = ta.sma(k, stoch_rsi_smoothD)
is_oversold = k < stoch_rsi_oversold and d < stoch_rsi_oversold
is_overbought = k > stoch_rsi_overbought and d > stoch_rsi_overbought

// Plot Stochastic RSI
hline(stoch_rsi_overbought, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(stoch_rsi_oversold, "Oversold", color=color.green, linestyle=hline.style_dotted)
plot(k, color=color.blue, title="Stochastic RSI %K")
plot(d, color=color.orange, title="Stochastic RSI %D")

// === ENTRY AND EXIT LOGIC ===
// Long entry: Price crosses above Gaussian Channel lower band and Stochastic RSI is oversold
long_condition = ta.crossover(close, gaussian_channel_low) and is_oversold

// Short entry: Price crosses below Gaussian Channel upper band and Stochastic RSI is overbought
short_condition = ta.crossunder(close, gaussian_channel_high) and is_overbought

// Exit logic
long_exit = ta.crossunder(close, gaussian_channel_mid) or is_overbought
short_exit = ta.crossover(close, gaussian_channel_mid) or is_oversold

// Execute trades
if (long_condition)
    strategy.entry("Long", strategy.long)

if (short_condition)
    strategy.entry("Short", strategy.short)

if (long_exit)
    strategy.close("Long")

if (short_exit)
    strategy.close("Short")

// === SETTINGS ===
// Backtest date range
start_date = timestamp(2023, 1, 1, 0, 0)
end_date = timestamp(2069, 1, 1, 0, 0)
if (time < start_date or time > end_date)
    strategy.close_all()