RSI와 MACD를 결합한 나만의 커스텀 다중 하단 지표 제작 완벽 가이드
보조지표를 활용한 기술적 분석 시 가장 흔히 발생하는 문제는 '지표 과다로 인한 차트의 가독성 저하'와 '단일 지표가 유발하는 속임수(False Signal)'입니다.
대표적인 역추세 및 강도 지표인 RSI(Relative Strength Index)와 추세 모멘텀 지표인 MACD(Moving Average Convergence Divergence)를 하나로 융합하면, 차트 하단 영역을 효율적으로 절약하면서 신호의 신뢰도를 획기적으로 높일 수 있습니다.
1. 개별 지표의 원리와 결합 시너지
① RSI (상대강도지수)
원리: 일정 기간 동안 가격의 상승폭과 하락폭의 상대적 크기를 수치화하여 $0 \sim 100$ 사이로 나타냅니다.
장점: 시장이 불타오르거나(과매수, 보통 70 이상) 침체된 상태(과매도, 보통 30 이하)를 명확하게 포착합니다.
단점: 강한 추세장에서는 RSI가 과매수/과매도 영역에 오랫동안 머물며 조기 진입에 따른 손실을 유발할 수 있습니다.
② MACD (이동평균수렴·다이버전스)
원리: 단기 이동평균선과 장기 이동평균선 사이의 거리를 측정하여 추세의 방향과 모멘텀 변화를 파악합니다.
장점: 추세의 전환 시점을 시각적(MACD 선, Signal 선, Histogram)으로 직관적으로 보여줍니다.
단점: 이동평균 기반이므로 신호가 다소 후행하는 경향이 있습니다.
③ 결합 시너지 효과
RSI와 MACD를 결합하면 "RSI가 극단적 과매도 구간에 도달한 상태에서 MACD의 골든크로스가 발생할 때만 진입"하는 등의 조건부 필터링이 가능해집니다. 이를 통해 RSI의 조기 진입 위험과 MACD의 후행성을 상호 보완할 수 있습니다.
2. 커스텀 지표 설계 구조
하나의 지표 창 내에 RSI와 MACD를 직관적으로 배치하기 위한 설계 알고리즘입니다.
메인 축 (Y축): RSI의 기본 스케일인 $0 \sim 100$을 메인 축으로 설정합니다.
기준선 설정: 과매수($70$), 과매도($30$), 그리고 중앙 스위트 스팟($50$) 라인을 배치합니다.
MACD 정규화: MACD의 히스토그램 스케일을 조정하여 RSI 중심선($50$)을 기준으로 위아래로 펼쳐지는 배경 막대그래프(Histogram)로 변환합니다.
다중 조건 매수/매도 시그널 생성:
강력 매수 (Buy Signal): RSI $\le 30$ (과매도) AND MACD 선이 Signal 선을 위로 돌파(골든크로스).
강력 매도 (Sell Signal): RSI $\ge 70$ (과매수) AND MACD 선이 Signal 선을 아래로 돌파(데드크로스).
3. 트레이딩뷰 파인스크립트(Pine Script v5) 전체 코드
아래 코드는 트레이딩뷰(TradingView)의 Pine Editor 창에 붙여넣어 즉시 사용할 수 있는 완성형 스크립트입니다.
//@version=5
indicator(title="Custom RSI + MACD Hybrid Oscillator", shorttitle="RSI_MACD_Combo", overlay=false)
// ==========================================
// 1. 사용자 설정 입력 (Inputs)
// ==========================================
// RSI 설정
rsiLength = input.int(14, title="RSI 기간", group="RSI 설정")
rsiOverbought = input.int(70, title="과매수 기준선", group="RSI 설정")
rsiOversold = input.int(30, title="과매도 기준선", group="RSI 설정")
// MACD 설정
fastLength = input.int(12, title="MACD 단기 이평", group="MACD 설정")
slowLength = input.int(26, title="MACD 장기 이평", group="MACD 설정")
signalLength = input.int(9, title="MACD 시그널 이평", group="MACD 설정")
macdScale = input.float(3.0, title="MACD 스케일 가중치", group="MACD 설정")
// ==========================================
// 2. 지표 수식 계산 (Calculations)
// ==========================================
// RSI 계산
rsiValue = ta.rsi(close, rsiLength)
// MACD 계산
[macdLine, signalLine, hist] = ta.macd(close, fastLength, slowLength, signalLength)
// ==========================================
// 3. 진입/청산 조건 정의 (Conditions)
// ==========================================
// 강력 매수 조건: RSI 과매도 구간에서 MACD 골든크로스
buySignal = (rsiValue <= rsiOversold) and ta.crossover(macdLine, signalLine)
// 강력 매도 조건: RSI 과매수 구간에서 MACD 데드크로스
sellSignal = (rsiValue >= rsiOverbought) and ta.crossunder(macdLine, signalLine)
// 일반 모멘텀 반전 조건 (보조 신호)
bullishCross = ta.crossover(macdLine, signalLine)
bearishCross = ta.crossunder(macdLine, signalLine)
// ==========================================
// 4. 시각화 및 차트 렌더링 (Plotting)
// ==========================================
// RSI 라인
plot(rsiValue, title="RSI", color=color.white, linewidth=2)
// 기준선 표현 (70, 50, 30)
hOb = hline(rsiOverbought, "과매수 선", color=color.new(color.red, 30), linestyle=hline.style_dashed)
hOs = hline(rsiOversold, "과매도 선", color=color.new(color.green, 30), linestyle=hline.style_dashed)
hMid = hline(50, "중앙 기준선", color=color.new(color.gray, 50), linestyle=hline.style_dotted)
// 과매수/과매도 영역 배경색 칠하기
fill(hOb, hOs, color=color.rgb(126, 87, 194, 93), title="RSI 정상 범위")
// MACD 히스토그램을 RSI 중앙선(50) 기준으로 정규화하여 출력
// 모멘텀 양수: 초록색 계열, 음수: 빨간색 계열
plot(50 + (hist * macdScale), title="MACD 모멘텀 배경",
color = hist >= 0 ? (hist > hist[1] ? color.new(color.green, 60) : color.new(color.green, 80))
: (hist < hist[1] ? color.new(color.red, 60) : color.new(color.red, 80)),
style = plot.style_histogram, linewidth = 3)
// MACD 선 및 Signal 선을 변형하여 표현 (RSI 50 중심 오프셋)
plot(50 + (macdLine * macdScale), title="MACD Line", color=color.new(color.blue, 40), linewidth=1)
plot(50 + (signalLine * macdScale), title="Signal Line", color=color.new(color.orange, 40), linewidth=1)
// ==========================================
// 5. 신호 화살표 및 알람 (Shapes & Alerts)
// ==========================================
// 조건 충족 시 차트 하단/상단에 화살표 표시
plotshape(buySignal, title="강력 매수 신호", style=shape.triangleup, location=location.bottom, color=color.green, size=size.normal)
plotshape(sellSignal, title="강력 매도 신호", style=shape.triangledown, location=location.top, color=color.red, size=size.normal)
// 트레이딩뷰 알림 조건 설정
alertcondition(buySignal, title="[매수] RSI+MACD 하단 반전", message="RSI 과매도 구간에서 MACD 골든크로스가 발생했습니다!")
alertcondition(sellSignal, title="[매도] RSI+MACD 상단 반전", message="RSI 과매수 구간에서 MACD 데드크로스가 발생했습니다!")
4. 트레이딩뷰 적용 및 설정 방법
웹브라우저에서 TradingView에 접속하여 원하는 차트를 엽니다.
차트 하단 메뉴에서 [Pine Editor] 탭을 클릭합니다.
기존 입력되어 있는 소스 코드를 모두 지우고, 위 v5 코드를 그대로 복사해서 붙여넣습니다.
우측 상단의 [저장] 버튼을 누른 후, [차트에 넣기 (Add to Chart)] 버튼을 클릭합니다.
차트 하단에 새로운 커스텀 다중 오실레이터 패널이 생성됩니다.
5. 실전 매매 전략 및 검증 팁
① 장기 이동평균선과의 병행 (추세 필터링)
역추세 신호는 하락장 속의 일시적 반등(데드캣 바운스)에서 손실을 가져올 수 있습니다. 메인 차트에 200일 단순이동평균선(200 SMA)을 설정한 뒤 다음과 같이 필터링하세요.
주가가 200 SMA 위에 있을 때: 매수 신호(Triangle Up)만 채택.
주가가 200 SMA 아래에 있을 때: 매도 신호(Triangle Down)만 채택.
② 다이버전스(Divergence)의 포착
주가는 저점을 낮추고 있으나, 본 커스텀 지표의 RSI 라인 및 MACD 히스토그램이 저점을 높여갈 경우 매우 강력한 상승 다이버전스(Bullish Divergence) 신호로 판단할 수 있습니다.
③ 단계별 진입 검증 규칙
이 커스텀 지표를 사용할 때 매수 타이밍 검증 프로세스는 다음과 같습니다:
RSI 라인(흰색 선)이 30 이하로 내려가는지 확인합니다.
검증: RSI가 과매도 영역에 진입하여 조건 1이 충족되었는지 확인.
50 기준선 하단에서 MACD 배경 히스토그램이 빨간색에서 초록색으로 반전하는지 확인합니다.
검증: 모멘텀이 하락에서 상승으로 전환되는지 확인.
초록색 삼각형 매수 화살표 신호가 확정(캔들 종가 완성)되었는지 확인합니다.
검증: 캔들이 닫힐 때 화살표가 사라지지 않고 유지되면 진입 성공.
댓글
댓글 쓰기