콘텐츠로 이동

모멘텀 (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()

관련 문서