1. 방향을 묻지 마라, 오직 '힘'만 측정한다: ADX의 탄생
우리가 앞서 다루었던 034번 DMI 지표가 자동차의 '방향(상승장인가 하락장인가)'을 알려주는 나침반이었다면, J. 웰스 와일더(J. Welles Wilder)가 고안한 ADX(Average Directional Index)는 오직 그 자동차의 '엔진 파워(속도계)'만을 측정하는 순수한 추세 계측기입니다.
초보 트레이더들이 가장 많이 착각하는 것이 "ADX가 오르면 주가도 오른다"는 것입니다. 하지만 ADX는 현재 시장이 상승장인지 하락장인지에는 전혀 관심이 없습니다. 오직 "지금 시장에 추세라는 것이 존재하는가? 존재한다면 얼마나 강력하게 한 방향으로 밀어붙이고 있는가?"라는 질문에만 0에서 100 사이의 수치로 대답합니다. 방향성 없는 횡보장에서 발생하는 수많은 가짜 돌파(Whipsaw) 신호를 걸러내고, 진짜 굵직한 추세장에만 안전하게 올라탈 수 있도록 돕는 최고의 필터 역할을 합니다.
2. 수리적 원리와 계산 구조
ADX는 DMI 지표에서 도출된 상승 압력($+DI$)과 하락 압력($-DI$)의 격차를 활용하여 추세의 순수한 강도를 뽑아냅니다.
Step 1. DX (Directional Index) 산출
먼저 $+DI$와 $-DI$의 차이(절댓값)를 두 지표의 합으로 나누어 백분율로 환산합니다. 상승 압력과 하락 압력의 격차가 크게 벌어질수록(한쪽이 시장을 압도할수록) DX 값은 커집니다.
Step 2. ADX 도출 (이동평균 평활화)
위에서 구한 DX 값 자체는 위아래로 너무 거칠게 요동치기 때문에, 일정 기간(보통 14일) 동안 이동평균(Smoothing)을 적용하여 궤적을 부드럽게 깎아낸 선이 바로 ADX입니다.
3. 실전 매매 활용법 (추세 강도 판독 테이블)
일반적으로 ADX 수치가 25를 넘어서면 시장에 유의미한 추세가 시작되었다고 판단하며, 20 아래에 머물면 추세가 없는 횡보장으로 간주합니다.
| 시그널 형태 | 현상 설명 (추세의 강도) | 실전 매매 대응 전략 (Action) |
|---|---|---|
| ADX < 20 (수면 아래) | 추세가 소멸하고 매수/매도 세력이 팽팽히 맞서는 횡보장 | 추세 추종 매매 절대 금지. 이동평균선 돌파 매매 등을 시도하면 잦은 휩쏘(가짜 신호)에 손절만 반복하게 됩니다. 박스권 역추세 매매를 하거나 관망합니다. |
| ADX > 25 상향 돌파 | 잠자던 엔진에 시동이 걸리며 새로운 추세가 점화됨 | 추세 방향으로 적극 진입 (돌파 매매). 위로든 아래로든 방향이 정해지면 강력하게 뻗어나갈 확률이 높습니다. 방향은 가격 캔들이나 DMI(+/-)를 보고 판단하여 편승합니다. |
| ADX > 40 이상 (극단적 과열) | 추세가 폭발적으로 가속하여 한계치에 다다른 상태 | 포지션 홀딩 및 분할 익절 준비. 추세가 매우 강력하지만, 50을 넘어가며 ADX가 꺾이기 시작하면 에너지가 고갈되었음을 뜻하므로 수익을 챙길 준비를 해야 합니다. |
4. 차트에서 나타나는 수리적 특성: 한국기업평가(A034950) 분석 사례
횡보장의 늪을 피하고 대세 추세장에만 올라타게 해주는 ADX의 마법을 한국기업평가의 차트로 확인해 보겠습니다.

- 추세 소멸과 매매 금지(필터링): 차트 중앙의 2025년 10월 말부터 11월 말 사이 구간을 보십시오. 주가가 뚜렷한 방향 없이 좁은 박스권에서 지루하게 횡보합니다. 이때 하단 패널의 보라색 ADX 선은 20(회색 점선) 밑으로 완전히 가라앉아 수면 아래를 깁니다. "지금은 추세가 없으니 섣불리 돌파 매매를 하지 마라"라고 시스템이 경고를 보내며 잦은 손절을 막아준 완벽한 방어 구간입니다.
- 엔진 폭발과 추세 가속: 반면, 2026년 2월의 압권인 급등 구간을 보십시오. 주가가 박스권을 뚫고 수직으로 솟구치자, 하단의 ADX 선 역시 25(붉은 점선)를 강하게 돌파하며 붉은색 추세장 영역으로 진입합니다. 이후 상승에 엄청난 가속도가 붙자 ADX는 무려 60 부근까지 미친 듯이 치솟아 오르며, 현재 시장을 지배하는 추세의 힘이 얼마나 압도적인지를 시각적으로 완벽하게 증명해 냅니다.
5. 장점 및 한계
- 장점: "지금이 추세 매매를 해야 할 때인가, 아니면 쉬어야 할 때인가?"를 가장 명확하게 알려주는 거름망(Filter)입니다. 횡보장에서 무의미한 잦은 손절로 계좌가 녹아내리는 것을 방지해 주는 최고의 방어 수단입니다.
- 한계: 가장 치명적인 약점은 이중 평활화(가격 변화 → DI 변환 → DX 이동평균화)를 거치기 때문에 실제 추세보다 한 박자 늦게 반응하는 후행성(Lagging)이 심하다는 점입니다. 주가가 이미 꽤 오른 뒤에야 ADX가 25를 돌파하는 경우가 많으므로, 단독 타점용보다는 다른 지표를 보조하는 추세 필터용으로 사용하는 것이 정석입니다.
6. 파이썬 구현 (DMI 연산 및 ADX 평활화)
판다스의 diff()와 넘파이의 np.where()를 이용해 +DM과 -DM을 구하고, 이를 지수 이동평균(EMA)으로 부드럽게 만들어 +DI와 -DI를 도출한 뒤, 마지막으로 DX를 한 번 더 평활화하여 ADX를 도출하는 정교한 퀀트 알고리즘입니다. (와일더의 고유 평활법 대신 현대적인 EMA를 적용했습니다.)
import pandas as pd
import numpy as np
def calculate_adx(df, period=14):
# 1. TR (True Range) 산출 및 평활화 (ATR)
tr1 = df['high'] - df['low']
tr2 = (df['high'] - df['close'].shift(1)).abs()
tr3 = (df['low'] - df['close'].shift(1)).abs()
tr = pd.concat([tr1, tr2, tr3], axis=1).max(axis=1)
atr = tr.ewm(span=period, adjust=False).mean()
# 2. +DM, -DM (방향성 움직임) 산출
up_move = df['high'] - df['high'].shift(1)
down_move = df['low'].shift(1) - df['low']
plus_dm = np.where((up_move > down_move) & (up_move > 0), up_move, 0)
minus_dm = np.where((down_move > up_move) & (down_move > 0), down_move, 0)
# 3. +DM, -DM 평활화 후 ATR로 나누어 +DI, -DI 비율(%) 산출
plus_di = 100 * (pd.Series(plus_dm, index=df.index).ewm(span=period, adjust=False).mean() / atr)
minus_di = 100 * (pd.Series(minus_dm, index=df.index).ewm(span=period, adjust=False).mean() / atr)
# 4. DX 도출 및 14일 EMA로 한 번 더 평활화하여 최종 ADX 산출
dx = (abs(plus_di - minus_di) / (plus_di + minus_di)) * 100
df['ADX'] = dx.ewm(span=period, adjust=False).mean()
return df
7. 실전 Tip 및 요약
ADX의 진정한 파괴력은 '대세 하락장'에서 발휘됩니다. 폭락장이 시작되어 상단의 주가 캔들이 끔찍하게 쏟아져 내릴 때, 하단의 ADX 선은 25를 뚫고 40, 50을 향해 수직으로 미친 듯이 치솟아 오릅니다 (방향과 무관하게 하락의 '힘'이 강해졌으므로).
만약 당신이 보유한 종목이 하락하고 있는데 ADX마저 고개를 들고 솟구치기 시작했다면, 그것은 단순한 개미 털기(눌림목)가 아니라 '패닉 셀링(대세 하락 추세)'이 시작되었다는 명백한 사형 선고입니다. 이때는 물타기를 절대 금지하고 즉시 도망쳐야 합니다.
'기술지표' 카테고리의 다른 글
| 카마릴라 피벗(Camarilla Pivot) 단타 데이트레이딩 지지저항 타점 잡는 법 [지표 백과 052] (0) | 2026.03.24 |
|---|---|
| 엘더 레이 지수(Elder-Ray Index) 황소의 힘과 곰의 힘: 매수/매도 압력 균형 [지표 백과 051] (0) | 2026.03.23 |
| PVI(Positive Volume Index) 지표 군중 심리 파악 및 거래량 증가 분석 [지표 백과 049] (0) | 2026.03.21 |
| 샹들리에 엑시트(Chandelier Exit) 지표: 변동성(ATR) 기반의 익절 출구 전략 [지표 백과 048] (0) | 2026.03.20 |
| 코너스 RSI (Connors RSI) 파이썬 수식 및 단기 역추세 시스템 매매 [지표 백과 047] (0) | 2026.03.19 |