ADX 매매 신호: 추세 강도와 방향을 따로 읽기
ADX가 측정하는 것, +DI와 −DI로 방향을 읽는 법, 20과 25가 규칙이 아닌 참고값인 이유, ADX 필터를 검증하는 방법을 살펴봅니다
이 글에서 다루는 내용ADX는 상승과 하락이 아니라 강도를 측정합니다
짧은 요약
ADX는 방향성 움직임을 평활화해 강도를 측정하지만 가격이 오르는지 내리는지는 알려주지 않습니다. 방향 비교에는 +DI와 −DI를 사용합니다. 세 값을 서로 구분하고, 흔히 언급되는 20과 25를 관행적인 참고값으로 다루며, 지표를 매매에 연결하기 전에 가격 기준 신호와 위험 계획을 따로 정하세요.
ADX는 상승과 하락이 아니라 강도를 측정합니다
평균방향성지수(Average Directional Index, ADX)는 와일더의 방향성 움직임 체계에서 마지막에 계산되는 평활화 지표입니다. 양의 방향성 지표와 음의 방향성 지표가 얼마나 분리되어 있었는지를 요약합니다. 값은 보통 0에서 100 사이로 표시되며, 수치가 높다는 것은 해당 계산에서 방향성 움직임이 강하다는 뜻입니다. 시장이 상승한다는 뜻도, 수익 확률이 높다는 뜻도, 예상 수익이 크다는 뜻도 아닙니다. −DI가 우세한 상태로 가격이 하락해도 ADX는 높을 수 있습니다.
방향성 움직임 지표(Directional Movement Index, DMI)는 ADX와 +DI, −DI를 함께 봅니다. 강도는 ADX에서, 어느 쪽 움직임이 우세한지는 두 DI의 상대 위치에서 읽습니다. 차트에 ADX 선만 표시되어 있다면 어느 방향이 우세한지는 알 수 없습니다. TradingView도 ADX의 강도 측정과 DI의 방향 비교를 구분합니다 {source:tradingViewDirectionalMovement}. 어느 한 선도 다음 봉의 움직임을 예측하지는 않습니다.
방향성 움직임과 실제 범위에서 지표를 계산합니다
완료된 봉마다 고가와 저가를 직전 봉과 비교합니다. UpMove = High[t] − High[t−1], DownMove = Low[t−1] − Low[t]로 둡니다. UpMove가 양수이면서 DownMove보다 크면 +DM은 UpMove, −DM은 0입니다. DownMove가 양수이면서 더 크면 −DM은 DownMove, +DM은 0입니다. 둘 중 어느 쪽도 우세하지 않으면 두 방향성 움직임을 모두 0으로 둡니다. 이렇게 해야 한 봉에서 위아래 움직임을 동시에 우세한 방향처럼 세지 않습니다.
실제 범위(True Range, TR)는 High[t]−Low[t], |High[t]−Close[t−1]|, |Low[t]−Close[t−1]| 중 가장 큰 값입니다. +DM, −DM, TR에 와일더 평활화를 적용합니다. 기간 n의 평활 합계는 이전 평활 합계 − 이전 평활 합계 ÷ n + 현재 값으로 갱신됩니다. 이후 +DI = 100 × 평활 +DM ÷ 평활 TR, −DI = 100 × 평활 −DM ÷ 평활 TR로 계산합니다. TradingView 계산 안내는 입력값과 평활 과정을 설명합니다 {source:tradingViewAverageDirectionalIndex}.
그다음 DX = 100 × |+DI − −DI| ÷ (+DI + −DI)를 구하고 DX를 다시 평활화해 ADX를 계산합니다. 와일더 방식의 14봉 갱신식은 초기 구간 이후 ADX[t] = (13 × ADX[t−1] + DX[t]) ÷ 14입니다. 여러 단계의 평활 과정 때문에 ADX는 DI 선보다 느리게 반응합니다. TA-Lib 문서는 와일더 평활화, 0~100 출력 범위, 방향과 무관한 추세 강도 측정을 설명합니다 {source:taLibAverageDirectionalIndex}. 초기값과 워밍업 데이터 처리에 따라 구현 결과가 달라질 수 있으므로 플랫폼 간 비교 전에 설정을 맞추세요. 두 방향 움직임이 같은 크기이거나 모두 양수가 아니면 어느 쪽도 우세하다고 보지 않아 둘 다 0으로 둡니다. 한 봉에서 고가와 저가가 모두 넓게 확장되더라도 이 규칙은 더 큰 방향 움직임 하나만 반영합니다. TR은 직전 종가와의 차이도 포함하므로, 밤사이 또는 세션 사이 갭이 큰 봉에서는 단순한 고가−저가 범위보다 크게 나올 수 있습니다. 따라서 DM은 고저의 방향성 확장을 비교하고, TR은 그 비교를 해당 시점의 전체 가격 범위에 맞춰 정규화하는 역할을 합니다.
DX의 분모인 +DI와 −DI의 합이 0이면 원식은 0으로 나눌 수 없으므로, 방향성 움직임이 없는 구간의 처리는 구현 규칙을 확인해야 합니다. 값이 0으로 표시되는지 비워지는지, 워밍업 구간에서 어떤 초기값을 쓰는지는 플랫폼과 라이브러리에 따라 다를 수 있습니다. 이를 확인하지 않고 표시된 0을 유효한 저강도 관측값으로 해석하면 초기 ADX 비교가 달라질 수 있습니다. 수식뿐 아니라 충분한 과거 봉을 넣었을 때의 원시 출력도 점검하세요. 화면에 반올림되어 같아 보이는 두 DI도 내부 정밀도에서는 다를 수 있습니다. 교차나 임계값 부근을 재현할 때는 표시 자릿수가 아니라 계산값과 완료 봉 기준을 기록해야 합니다.
수준과 기울기는 서로 다른 정보를 줍니다
수준과 기울기는 서로 다른 질문에 답합니다. 특정 봉에서 ADX가 27이라면 해당 계산의 추세 강도 수준을 나타냅니다. ADX가 상승한다는 것은 최근 평활된 DX의 차이가 커졌다는 뜻이지, 가격이 가속한다거나 돌파가 이어진다거나 상승 추세라는 뜻은 아닙니다. ADX가 내려도 가격은 한 방향으로 계속 움직일 수 있습니다. 방향은 +DI와 −DI를 비교하고, 가격 구조는 별도로 살펴보세요.
흔히 인용되는 20과 25는 와일더의 체계에서 이어진 참고 관행입니다. 20 미만을 약하거나 횡보에 가까운 상태, 25 초과를 더 강한 추세로 보는 해석이 있지만 모두에게 적용되는 경계값은 아닙니다. 20~25는 전환 구간으로 보기도 합니다. 변동성, 봉 간격, 자산, 세션, 평활 방식에 따라 시계열이 달라집니다. TradingView는 적정 기준값이 종목과 분석자의 해석에 달려 있다고 설명합니다 {source:tradingViewDirectionalMovement}. 기준값을 쓴다면 결과를 본 뒤 고르지 말고, 실제로 살펴볼 시장과 시간대에서 미리 정해 검증하세요. ADX 수준이 같아도 +DI와 −DI의 위치가 다르면 시나리오는 달라집니다. ADX가 26인 두 차트 중 하나에서는 +DI가 −DI보다 위에 있고, 다른 차트에서는 −DI가 위에 있을 수 있습니다. 둘 다 강한 방향성 움직임을 나타내지만 우세한 쪽은 다릅니다. 또 ADX가 내려가는 중이라는 사실만으로 추세가 끝났다고 판단하지 마세요. 방향성 움직임의 강도가 완화되는 것과 가격 구조가 실제로 뒤집히는 것은 별개의 사건입니다.

수치 예제로 기준값을 적용하기 전에 계산을 확인합니다
+DI가 32이고 −DI가 14라고 가정해 보겠습니다. 차이는 18, 합계는 46이므로 DX는 100 × 18 ÷ 46, 약 39.13입니다. 이 값은 두 DI 사이의 차이를 나타내며 아직 ADX 자체는 아닙니다. ADX는 여러 시점의 DX를 평활한 값입니다. 계산 중 분자에는 두 선의 간격이 들어가고 분모에는 두 값의 합이 들어가므로, 같은 간격이라도 DI 수준에 따라 DX가 달라질 수 있습니다. 반대로 두 선의 비율이 같으면 절대 수준이 달라도 DX는 같습니다. +DI 64, −DI 28은 +DI 32, −DI 14와 같은 비율이므로 DX가 똑같이 약 39.13입니다. 반면 +DI 22, −DI 21처럼 두 값이 가까우면 두 선이 모두 양수여도 DX는 약 2.33에 그칩니다. DX는 DI의 상대적 분리를 요약하지, 실제 가격이 몇 원이나 달렸는지 또는 다음 가격 변화가 얼마나 클지를 측정하지 않습니다.
직전 14기간 ADX가 24이고 현재 DX가 39.13이면 와일더 갱신값은 (13 × 24 + 39.13) ÷ 14, 약 25.08입니다. 이 가상의 사례에서 ADX가 25를 넘지만, 계산 결과만으로 진입 시점이나 향후 가격을 알 수는 없습니다. 현재 DX 39.13이 직전 ADX 24보다 큰 만큼 14기간 갱신에서 ADX를 끌어올리는 크기는 약 1.08포인트뿐입니다. 한 번의 큰 DX 변화도 평활식에서는 전체가 그대로 반영되지 않습니다. 그래서 DI가 먼저 교차하거나 급격히 벌어져도 ADX는 여러 봉에 걸쳐 천천히 반응할 수 있습니다. 이 지연은 계산의 성질이지, 다음 움직임의 확률을 나타내는 별도 신호가 아닙니다. 반대로 +DI가 14, −DI가 32여도 DX는 똑같이 약 39.13입니다. 음의 방향성이 우세해도 강도 계산은 같습니다. ADX 자체에 방향이 없다는 점을 확인하기 좋은 대칭 사례입니다. 실제 플랫폼의 첫 계산값은 초기화와 과거 데이터 길이에 따라 달라질 수 있으므로 표시된 숫자와 수식이 정확히 일치하지 않을 때에는 입력 봉과 워밍업 구간도 확인하세요.
별도의 가격 신호에 ADX 필터를 붙입니다
한 가지 절제된 활용법은 별도로 정한 가격 매매 조건에 ADX를 국면 필터로 붙이는 것입니다. 예를 들어 미리 정한 수준을 완료된 봉의 ADX가 웃돌고, 롱 조건에는 +DI가 −DI보다 높은 상태를 요구할 수 있습니다. 숏 조건에는 반대를 요구할 수 있습니다. 실제 진입은 별도의 눌림, 범위 돌파, 가격 수준 종가 통과 조건으로 정합니다. 필터가 가격 신호보다 먼저 충족되어야 하는지 같은 봉에서 충족되어도 되는지도 명시하세요. 예를 들어 이전 20개 완료 봉의 고점을 종가로 넘는 규칙에, 같은 종가 시점의 ADX 25 초과와 +DI 우위를 추가할 수 있습니다. 이때 고점 돌파를 확인한 종가가 이미 확정된 뒤 다음 봉에서 주문이 가능하다는 점을 반영해야 합니다. ADX가 돌파 다음에야 25를 넘으면 그 봉을 진입으로 볼지, 다음 신호부터 허용할지에 따라 과거 거래 수가 달라집니다. 이 선택을 숨기면 필터 성능뿐 아니라 신호가 알려진 시점도 함께 바뀝니다.
필터는 후보 거래 수를 줄일 수 있지만 남은 거래의 품질까지 높여주지는 않습니다. ADX가 높은 시점에는 움직임이 이미 상당히 진행되었을 수 있고, 낮은 ADX는 초기 움직임을 제외할 수도 있습니다. 필터를 적용한 규칙과 적용하지 않은 동일 규칙을 같은 기간, 체결 가정, 비용으로 비교하세요. ADX를 진입, 무효화 조건, 손절 거리, 청산, 포지션 크기 규칙의 대용으로 쓰지 마세요. 손절 위치가 너무 멀어졌다면 ADX가 높다는 이유로 계약 수를 그대로 두지 말고, 위험 예산에서 수량을 다시 계산해야 합니다.
DI 교차는 조건이지 완성된 진입 신호가 아닙니다
+DI와 −DI의 교차는 평활된 방향성 측정치의 상대 관계가 바뀌었다는 뜻입니다. +DI가 −DI를 위로 넘으면 강세, 반대면 약세 신호로 해석하는 관행이 있습니다. 그러나 횡보 구간에서는 교차가 반복될 수 있고, 한 번의 교차가 지속적인 추세의 시작을 입증하지는 않습니다. 진행 중인 봉에서 나타난 교차는 종가 전에 사라질 수도 있습니다.
DI 교차가 나올 때 ADX는 직전 움직임 때문에 여전히 높을 수 있습니다. 하락 중 −DI가 우세하다가 +DI가 위로 올라왔다면, 높은 ADX는 최근 방향성 움직임의 강도를 반영할 뿐 새 상승 추세가 이미 강하다는 확인은 아닙니다. 종가에서 교차가 유지되어야 하는지, 최소 DI 간격이나 ADX 수준 또는 기울기가 필요한지, 어떤 가격 사건이 확인 신호인지 미리 정하세요. 과거 차트에 가장 잘 맞는 조건을 보고 난 뒤 골라서는 안 됩니다. 진입 신호와 추세 변화 확인을 같은 사건으로 취급하면, 뒤늦은 강도 확인을 새 추세의 조기 진입으로 오해할 수 있습니다. 예컨대 +DI 22, −DI 21은 +DI가 상대적으로 앞서지만 DX가 약 2.33에 불과해 두 방향 측정이 거의 붙어 있습니다. 크로스만으로 방향을 판단할지, 최소 간격이나 두 번의 종가 유지까지 요구할지는 다른 매매 규칙입니다. 어떤 확인을 추가하든 후행 차트에서 교차 지점을 골라 표식하면 미래 봉이 이미 포함될 수 있으므로, 신호가 처음 확정되는 봉과 주문 가능 시점을 각각 기록하세요.
기간, 봉, 계산 방식을 고정합니다
14기간은 14일이 아니라 14개의 봉을 뜻합니다. 5분봉 14개와 일봉 14개, 선물 세션 봉 14개는 서로 다른 데이터를 사용하고 다른 질문에 답합니다. ADX는 보통 고가, 저가, 종가를 사용하므로 세션 경계, 누락 봉, 조정 가격, 종목 선택이 입력값을 바꿀 수 있습니다. 완료 전 봉의 고가, 저가, 종가는 변하므로 실시간 ADX 값도 함께 움직일 수 있습니다.
종목과 거래소, 봉 간격, 세션, 기간, 평활 방식, 입력 필드, 워밍업 이력, 신호를 봉 안에서 읽을지 완료된 종가에서 읽을지 기록하세요. 플랫폼마다 초기 평활값의 시드, 추가 평활 기간, ADX 단독 표시와 3개 선을 포함한 DMI 표시가 다를 수 있습니다. TA-Lib 문서의 14기간 기본값과 초기화 동작은 특정 구현의 세부사항이지 보편적인 매매 설정이 아닙니다 {source:taLibAverageDirectionalIndex}. 값이 다를 때는 먼저 데이터와 설정을 맞춰 비교하세요. 일봉을 장중 차트에 표시한다면 완료되지 않은 일봉을 참조하는지, 직전 완료 일봉을 참조하는지도 구분해야 합니다. 완료 전 일봉의 고가와 저가는 장중에 계속 바뀌므로 그 값을 쓰는 하위 시간대 필터 역시 실시간으로 달라질 수 있습니다. 거래소 시간대, 정규장과 연장 세션 포함 여부, 휴장일 처리도 고저와 종가를 바꿉니다. 플랫폼 간 비교에서는 종목만 맞추지 말고 바 집계 방식과 워밍업 구간까지 일치시켜야 합니다. 특히 초기화 직후의 ADX는 충분한 과거 기록을 썼을 때의 값과 차이가 날 수 있으니, 값 비교와 신호 판정에서 준비 구간을 어떻게 처리할지 미리 정하세요.
전체 규칙을 검증하고 포지션 위험은 따로 관리합니다
검증 전에 가설 전체를 기록합니다. 가격 조건, DI 조건, ADX 수준 또는 기울기, 종가 확인 여부, 주문 방식, 무효화 조건, 청산 기준, 포지션 크기까지 포함합니다. 완료된 봉에서 신호를 확인한 뒤 같은 종가에 체결된 것으로 가정하지 말고 다음 실행 가능한 가격을 모델링하세요. 스프레드, 수수료, 슬리피지, 갭을 포함합니다. 고정 위험 예산과 별도의 손절 거리를 사용해 수량을 정하세요. ADX는 포지션의 손실 가능 금액을 알려주지 않습니다.
기본 규칙과 ADX 필터 규칙, 주변의 합리적인 기준값을 시간순 홀드아웃 또는 워크포워드 검증으로 비교하세요. 여러 기간이나 기준값을 시도했다면 전체 검색을 기록합니다. 한 가지 설정에서만 설득력 있어 보이는 필터는 데이터 선택의 결과일 수 있습니다. 관련 주제는 돈치안 돌파 시점, RSI와 시장 국면, ATR 손절 거리에서 살펴볼 수 있습니다. 과거 결과는 선택한 시장, 기간, 구현, 비용을 전제로 하며 미래 성과를 보장하지 않습니다. 승률만 비교하지 말고 거래 수, 평균 손익, 최대 낙폭, 보유 시간, 회전율을 함께 살펴보세요. ADX 기간과 임계값을 여러 조합으로 바꿨다면 시험한 조합 수와 선택 기준도 기록해야 합니다. 가장 좋아 보이는 조합을 같은 데이터에서 고르면 우연한 적합을 실력으로 오해할 수 있습니다. 최종 규칙을 정한 뒤에는 조정에 쓰지 않은 시간 순서의 구간에서 검증하고, 실제 계좌의 주문 조건이 백테스트와 달라지는 지점도 별도로 확인하세요.
자주 묻는 질문
Q1ADX가 25를 넘으면 매수해야 하나요?
아닙니다. 흔히 쓰이는 강도 참고값일 뿐 매수 지시가 아닙니다. 방향은 +DI와 −DI에서 확인하고 별도의 가격 신호와 위험 계획을 정하세요.
Q2가격이 하락하는 동안 ADX가 상승할 수 있나요?
가능합니다. ADX는 방향 부호 없이 방향성 움직임의 강도를 측정합니다. ADX가 오르는 동안 −DI가 우세할 수 있습니다.
Q3DI 교차가 완성된 매매 신호인가요?
아닙니다. 봉 종가에서 교차가 유지되어야 하는지, 어떤 가격 사건이 확인하는지, 무효화 기준과 포지션 크기를 정하세요.
출처와 더 읽을 자료
내용 정정 제보
이 아티클 링크를 담은 이메일 초안을 준비합니다. 직접 보내야 Mark에 제보가 접수됩니다
QUICK CHECK
글을 다 읽었다면, 3문항으로 확인해보세요
Question 01
ADX가 31이고 −DI가 +DI보다 높습니다. 무엇을 읽을 수 있나요?
정답을 고르면 바로 설명을 볼 수 있어요
옵션 용어 사전
콜·풋과 옵션 체인부터 IV, 그릭스, 미결제약정, 맥스 페인까지 핵심 옵션 용어를 정확하게 설명합니다
옵션 용어 사전 보기