모멘텀 (Momentum)¶
모멘텀 지표는 가격 변화의 속도와 방향을 측정합니다. 추세의 강도를 평가하고 전환점을 감지하는 데 유용합니다.
ta.mom()¶
모멘텀 (Momentum)
현재 가격과 N기간 전 가격의 차이입니다.
ta.mom(source, period) → TSeries
파라미터:
| 이름 | 타입 | 기본값 | 설명 |
|---|---|---|---|
source |
TSeries | — | 입력 시계열 |
period |
int | 10 | 기간 |
반환값: TSeries
계산식: MOM = source[0] - source[period]
해석:
- 양수: 가격 상승 중
- 음수: 가격 하락 중
- 0선 교차: 추세 전환 시그널
예제:
c = chart("1D")
mom = ta.mom(c.close, 10)
c.line("Momentum", mom, color="blue")
c.hline("Zero", 0, color="gray")
# 모멘텀 방향 전환
if mom[1] < 0 and mom[0] > 0:
buy(tag="모멘텀 양전환")
elif mom[1] > 0 and mom[0] < 0:
sell(tag="모멘텀 음전환")
ta.roc()¶
변화율 (Rate of Change)
N기간 동안의 가격 변화를 백분율로 표시합니다.
ta.roc(source, period) → TSeries
파라미터:
| 이름 | 타입 | 기본값 | 설명 |
|---|---|---|---|
source |
TSeries | — | 입력 시계열 |
period |
int | 10 | 기간 |
반환값: TSeries (백분율)
계산식: ROC = ((source[0] - source[period]) / source[period]) × 100
예제:
c = chart("1D")
roc = ta.roc(c.close, 10)
c.line("ROC 10", roc, color="green")
c.hline("Zero", 0, color="gray")
# 10일 변화율 기반 전략
if roc[0] > 5:
log(f"10일간 {roc[0]:.1f}% 상승")
elif roc[0] < -5:
log(f"10일간 {roc[0]:.1f}% 하락")
ROC 기반 과열/침체 판단¶
c = chart("1D")
roc20 = ta.roc(c.close, 20)
if roc20[0] > 15:
sell(tag=f"20일 {roc20[0]:.1f}% 과열")
elif roc20[0] < -15:
buy(tag=f"20일 {roc20[0]:.1f}% 침체 반등 기대")
ta.adx()¶
평균방향지수 (Average Directional Index)
추세의 강도를 측정합니다 (방향이 아닌 강도).
ta.adx(high, low, close, period) → TSeries
파라미터:
| 이름 | 타입 | 기본값 | 설명 |
|---|---|---|---|
high |
TSeries | — | 고가 시계열 |
low |
TSeries | — | 저가 시계열 |
close |
TSeries | — | 종가 시계열 |
period |
int | 14 | 계산 기간 |
반환값: TSeries (0~100 범위)
해석:
| ADX 값 | 추세 강도 |
|---|---|
| 0~20 | 추세 없음 (횡보) |
| 20~40 | 약한 추세 |
| 40~60 | 강한 추세 |
| 60~100 | 매우 강한 추세 |
ADX는 방향을 알려주지 않습니다
ADX는 추세의 강도만 나타냅니다. 상승 추세인지 하락 추세인지는 별도로 판단해야 합니다.
예제:
c = chart("1D")
adx = ta.adx(c.high, c.low, c.close, 14)
c.line("ADX", adx, color="orange")
c.hline("Strong Trend", 25, color="gray")
# ADX + 이동평균으로 추세 추종
sma20 = ta.sma(c.close, 20)
if adx[0] > 25:
# 추세가 있을 때만 진입
if c.close > sma20:
buy(tag=f"강한 상승 추세 (ADX={adx[0]:.0f})")
else:
sell(tag=f"강한 하락 추세 (ADX={adx[0]:.0f})")
else:
hold(tag=f"추세 부재 (ADX={adx[0]:.0f})")
ADX 기반 전략 전환¶
c = chart("1D")
adx = ta.adx(c.high, c.low, c.close, 14)
rsi = ta.rsi(c.close, 14)
sma20 = ta.sma(c.close, 20)
if adx[0] > 25:
# 추세 장세 → 추세 추종
if c.close > sma20:
buy(tag="추세 추종 매수")
else:
sell(tag="추세 추종 매도")
else:
# 횡보 장세 → 역추세 (오실레이터 활용)
if rsi[0] < 30:
buy(tag="횡보 구간 RSI 과매도 반등")
elif rsi[0] > 70:
sell(tag="횡보 구간 RSI 과매수 반락")
else:
hold()
관련 문서¶
- 오실레이터 — RSI, MACD 등 보조 지표
- 밴드 & 변동성 — ATR 변동성 지표
- ta.* 전체 레퍼런스 — 모든 지표 시그니처