WEJUMP INVESTMENT LABS

Systematic Alpha & Quantitative Insights

유튜브 생방송 중 채팅방 입장

슈퍼트렌드와 복합 Z-Score 모멘텀 지표를 활용한 실전 매매 전략

안녕하세요. 오늘은 트레이딩뷰(TradingView) 파인스크립트를 활용하여 직접 제작한 '복합 Z-Score 모멘텀 지표(Composite Z-Score)'를 소개하고, 이를 추세 추종 지표인 '슈퍼트렌드(Supertrend)'와 결합하여 매매 성공 확률을 높이는 방법에 대해 알아보겠습니다.

슈퍼트렌드 지표는 아래 글을 참조:

 

[무료 배포] 언제 팔아야 할지 모르는 초보자를 위한 'WeJump 커스텀 슈퍼트렌드' 지표

[무료 배포] 언제 팔아야 할지 모르는 초보자를 위한 'WeJump 커스텀 슈퍼트렌드' 지표 완벽 가이드투자를 하면서 가장 어려운 것이 무엇일까요? 좋은 종목을 고르는 것만큼이나 어려운 것이 바로

wejump3.tistory.com

 

1. 지표 기획 배경: 왜 세 가지 지표를 융합했는가?

시장을 정확히 읽어내기 위해서는 가격(Price), 거래량 기반의 자금 흐름(Volume), 그리고 시장 참여자들의 심리(Psychology)를 종합적으로 판단해야 합니다. 하지만 각 지표는 단위와 스케일(0~100의 백분율, 무제한의 누적치 등)이 달라 하나의 화면에서 직관적으로 비교하기 어렵습니다.

이를 해결하기 위해 통계학의 Z-Score(표준점수) 개념을 도입했습니다.

  • 투자 심리도 (Psychological Line): 일정 기간 동안의 상승 일수 비율
  • AD Line (Accumulation/Distribution): 종가와 거래량을 결합한 매집/분산 지표
  • 가격 (Price): 실제 캔들의 종가

이 세 가지 데이터를 각각 Z-Score로 정규화하여 동일한 스케일(평균 0, 표준편차 기반)로 맞춘 뒤, 가격 변화에 더 큰 가중치를 부여하고 스무딩(Smoothing) 처리를 거쳐 단일 모멘텀 선으로 완성했습니다.

2. 파인스크립트 (Pine Script) 소스 코드

아래는 위 로직을 구현한 트레이딩뷰 파인스크립트(v6) 코드입니다. 본인의 트레이딩뷰 'Pine 에디터'에 복사하여 바로 적용해 보실 수 있습니다.

//@version=6
indicator('Composite Psy & ADL Z-Score', shorttitle = 'Comp Z', overlay = false)

// 1. 입력 설정 (Inputs)
psyLen = input.int(35, title = '투자심리도 기간(N일)')
zLen = input.int(35, title = 'Z-Score 산출 기간')

// 2. 투자 심리도 (Psychological Line) 계산
upDay = close > close[1] ? 1 : 0
psy = math.sum(upDay, psyLen) / psyLen * 100

// 3. AD Line (Accumulation/Distribution) 계산
adl = ta.accdist

// 4. 각각의 Z-Score 변환 (가격 포함)
psyZ = (psy - ta.sma(psy, zLen)) / ta.stdev(psy, zLen)
adlZ = (adl - ta.sma(adl, zLen)) / ta.stdev(adl, zLen)
prcZ = (close - ta.sma(close, zLen)) / ta.stdev(close, zLen)

// 5. 지표 결합 (하나의 선으로 병합)
// 세 Z-Score의 평균을 계산하여 단일 지표화 (가격에 가중치 2 부여)
compZ = ta.ema((psyZ + adlZ + prcZ * 2) / 4, 10)

// 6. 차트 출력 (Plotting)
hline(0, 'Zero Line', color = color.gray, linestyle = hline.style_dotted)
hline(2, 'Overbought (+2)', color = color.red, linestyle = hline.style_solid)
hline(1.5, 'Warning (+1.5)', color = color.new(color.red, 50), linestyle = hline.style_dashed)
hline(-1.5, 'Warning (-1.5)', color = color.new(color.blue, 50), linestyle = hline.style_dashed)
hline(-2, 'Oversold (-2)', color = color.blue, linestyle = hline.style_solid)

// 0선 위는 상승 추세색, 아래는 하락 추세색으로 표현
lineColor = compZ >= 0 ? color.new(#26A69A, 0) : color.new(#EF5350, 0)

// 히스토그램과 선을 함께 출력하여 가독성 극대화
plot(compZ, title = 'Composite Z-Score (Line)', color = lineColor, linewidth = 2)
plot(compZ, title = 'Composite Z-Score (Area)', color = color.new(lineColor, 80), style = plot.style_area)

[코드 핵심 포인트]

  • prcZ * 2 :가격 데이터에 가중치를 두 배로 부여하여 지표가 실제 가격 움직임에 민감하게 반응하도록 설계했습니다. 전체 가중치의 합이 4(1+1+2)가 되므로 4로 나누어 정확한 가중 평균을 산출합니다.
  • ta.ema(..., 10) : 세 지표를 합친 후 10주기 지수이동평균(EMA)을 적용하여 잔파도(노이즈)를 걸러내고 추세의 방향성을 부드럽게 시각화했습니다.

3. 실전 차트 분석: 슈퍼트렌드와의 완벽한 조화

단일 보조지표만으로는 시장의 거짓 신호(Whipsaw)에 당하기 쉽습니다. 따라서 명확한 방향성을 제시하는 오버레이 지표인 슈퍼트렌드(Supertrend)와 결합했을 때 최적의 시너지를 발휘합니다.

아래 삼성전자(005930) 1시간 봉 차트를 통해 두 지표의 조합을 확인해 보겠습니다.

슈퍼트렌드와 복합 Z-Score 모멘텀 지표를 활용한 실전 매매 전략

차트 해석 포인트

  1. 방향성의 일치 (0선 돌파와 클라우드 전환) 차트 상단의 슈퍼트렌드가 녹색(상승)으로 전환될 때, 하단의 복합 Z-Score 지표 역시 0선을 상향 돌파하며 청록색 면적을 만들어냅니다. 반대로 붉은색(하락) 전환 시에는 Z-Score 역시 0선 아래로 내려갑니다. 두 지표가 같은 방향을 가리킬 때 진입하는 것이 매매의 기본 원칙입니다.
  2. 과매수/과매도 구간을 활용한 익절 및 반등 타점 (±1.5 ~ ±2) 복합 Z-Score 지표에 설정된 1.5와 2.0 점선/실선 구간은 매우 유용합니다.
    • 슈퍼트렌드가 상승장(녹색)을 유지하는 와중에, Z-Score가 +1.5~+2.0 영역에 도달하면 단기 과열로 판단하여 분할 익절을 고려할 수 있습니다.
    • 반대로 하락장(붉은색)에서 Z-Score가 -1.5~-2.0 영역을 터치한 후 위로 고개를 돌리는 시점은, 단기 과매도에 의한 기술적 반등(또는 매집) 타점으로 활용할 수 있습니다.
  3. 다이버전스와 노이즈 필터링 가격에 2배의 가중치를 주고 EMA 10주기로 스무딩 처리를 했기 때문에, 자잘한 캔들의 속임수에 지표가 요동치지 않습니다. Z-Score 선의 완만한 곡선을 통해 시장 참여자들의 심리와 자금 유입이 서서히 식어가고 있는지, 혹은 달아오르고 있는지 직관적으로 파악할 수 있습니다.

4. 마무리하며

오늘 소개해 드린 '복합 Z-Score 모멘텀 지표'는 가격, 거래량, 심리라는 세 가지 차원의 데이터를 하나로 압축하여 보여주는 강력한 도구입니다. 특히 슈퍼트렌드와 같은 추세 기반의 오버레이 지표와 함께 사용한다면, 숲(전체 트렌드)과 나무(현재의 과열/침체 모멘텀)를 동시에 확인하는 안정적인 매매 시스템을 구축하실 수 있을 것입니다.

본인의 주력 매매 종목이나 타임프레임(1시간, 4시간, 일봉 등)에 맞춰 코드 내의 기간 값(psyLen, zLen, EMA 주기)을 조절하며 백테스팅을 진행해 보시기를 권장합니다.

성공적인 트레이딩을 응원합니다. 감사합니다.


문의하기
연구소 구독