[TA-Lib] #4: TA-Lib를 활용한 이동평균 분석 - 시장추세 확인 및 골든 크로스와 데드 크로스 포착

TA-Lib를 사용한 이동 평균 구현

TA-Lib는 금융 시장 분석에 필수적인 도구로서 다양한 지표의 계산을 도와준다. TA-Lib에 대한 소개는 [TA-Lib] #1 기술적 분석과 TA-Lib의 개요을 참고하고, 설치에 관한 사항은 [TA-Lib] #2: 기술적 분석을 위한 TA-Lib 설치를 참고하길 바란다. 가격 데이터를 받아오기 위한 yahooquery 사용법은 [파이썬] Yahooquery로 과거 주식 데이터와 재무 데이터 얻는 방법을 참고하면 된다.

이동 평균 계산 및 코드 예제

python
from yahooquery import Ticker
import talib
import pandas as pd

# 삼성 주식 데이터 받아오기
google = Ticker("005930.KS")
price_data = google.history(period="2y")
close_prices = price_data['close'].values

# 단순 이동 평균 계산
sma = talib.SMA(close_prices, timeperiod=20)

# 지수 이동 평균 계산
ema = talib.EMA(close_prices, timeperiod=20)

# 가중 이동 평균 계산
wma = talib.WMA(close_prices, timeperiod=20)

# 결과 출력
result = pd.DataFrame({
    'Close Prices': close_prices,
    'SMA': sma,
    'EMA': ema,
    'WMA': wma
})
print(result.tail())
     Close Prices      SMA           EMA           WMA
487       68900.0  70450.0  69944.221083  69709.047619
488       68000.0  70255.0  69759.057171  69475.714286
489       67500.0  69960.0  69543.908869  69213.333333
490       67300.0  69660.0  69330.203262  68960.000000
491       67000.0  69410.0  69108.279142  68706.666667

TA-Lib를 이용한 시장 추세 분석

이동 평균을 활용하면 시장의 전반적인 추세를 분석할 수 있다.

python
last_5_sma = sma[-5:]

# 상승 추세 확인
if all(last_5_sma[i] < last_5_sma[i + 1] for i in range(4)):
    print("시장은 상승 추세이다.")
# 하락 추세 확인
elif all(last_5_sma[i] > last_5_sma[i + 1] for i in range(4)):
    print("시장은 하락 추세이다.")
else:
    print("시장은 안정적이다.")

이 예제에서는 마지막 5일 동안의 이동 평균을 통해 시장의 추세를 분석하고 있다. 이동 평균이 연속적으로 상승하면 상승 추세로, 하락하면 하락 추세로 판단한다. 이 외에도 다른 기간과 다른 이동 평균 지표를 활용하여 보다 정교한 분석을 수행할 수 있다.

python
sma5 = talib.SMA(close_prices, timeperiod=5)
sma20 = talib.SMA(close_prices, timeperiod=20)
sma60 = talib.SMA(close_prices, timeperiod=60)

# 가정: 마지막 5일 동안의 단기, 중기, 장기 이동 평균 값
short_ma_last_5 = sma5[-5:]
mid_ma_last_5 = sma20[-5:]
long_ma_last_5 = sma60[-5:]

# 각 이동 평균이 연속적으로 상승하는지 확인
is_short_ma_rising = all(x < y for x, y in zip(short_ma_last_5, short_ma_last_5[1:]))
is_mid_ma_rising = all(x < y for x, y in zip(mid_ma_last_5, mid_ma_last_5[1:]))
is_long_ma_rising = all(x < y for x, y in zip(long_ma_last_5, long_ma_last_5[1:]))

# 추세 분석
if is_short_ma_rising and is_mid_ma_rising and is_long_ma_rising:
    print("강력한 상승 추세")
elif is_short_ma_rising:
    print("단기 상승 추세")
elif is_long_ma_rising:
    print("장기 상승 추세")
else:
    print("추세가 불분명함")

이 예제에서는 마지막 5일 동안의 단기, 중기, 장기 이동 평균을 비교하여 시장의 추세를 분석하고 있다.

  • 각 이동 평균이 연속적으로 상승하는지 확인하여 상승 추세를 파악한다. 이를 통해 단기, 중기, 장기 이동 평균이 연속적으로 상승하면 강력한 상승 추세로 판단하며, 단기 이동 평균만 상승하고 있다면 단기 상승 추세로, 장기 이동 평균만 상승하고 있다면 장기 상승 추세로 판단한다.
  • 하락 추세의 경우, 각 이동 평균이 연속적으로 하락하면 하락 추세로 판단한다. 마찬가지로 단기, 중기, 장기 이동 평균 중 어떤 것이 하락하는지에 따라 추세의 세부 분류를 할 수 있다.
  • 추세가 불분명한 경우, 즉 단기, 중기, 장기 이동 평균 중 일부만 상승하거나 하락하는 경우에는 추세 판단이 어려울 수 있으며, 추가 분석이 필요할 수 있다.

이 방법은 각 이동 평균의 변화를 함께 고려하여 시장의 전반적인 상황을 파악하고, 상승과 하락 추세를 세분화하여 정확하게 분석할 수 있는 장점이 있다. 다른 기간과 다른 이동 평균 지표를 활용하여 보다 정교한 분석을 수행할 수도 있으며, 투자 전략에 유연하게 적용할 수 있다.

TA-Lib를 이용한 골든 크로스, 데드 크로스 분석

골든 크로스

삼성전자의 지난 1년간 골든크로스와 데드크로스를 보여주는 주식 가격 차트
삼성전자의 최근 1년간의 주식 가격 움직임을 나타내며, 골든크로스와 데드크로스의 발생 지점을 표시하고 있다. 이러한 시그널은 주식 시장에서 트렌드 전환을 예측하는 데 도움을 줄 수 있다.

골든 크로스는 단기 이동 평균선이 장기 이동 평균선을 상향 돌파할 때 발생한다. 다음 코드는 골든 크로스를 찾는 예시이다.

python
short_sma = talib.SMA(close_prices, timeperiod=20)
long_sma = talib.SMA(close_prices, timeperiod=60)

# 골든 크로스 찾기
for i in range(1, len(close_prices)):
    if short_sma[i] > long_sma[i] and short_sma[i-1] <= long_sma[i-1]:
        print(f"골든 크로스 발견: {i}일")

데드 크로스

데드 크로스는 단기 이동 평균선이 장기 이동 평균선을 하향 돌파할 때 발생한다. 다음 코드는 데드 크로스를 찾는 예시이다.

python
# 데드 크로스 찾기
for i in range(1, len(close_prices)):
    if short_sma[i] < long_sma[i] and short_sma[i-1] >= long_sma[i-1]:
        print(f"데드 크로스 발견: {i}일")

이동 평균과 TA-Lib를 활용한 시장 분석은 투자자에게 중요한 정보를 제공할 수 있다. 단순한 이동 평균부터 골든 크로스, 데드 크로스와 같은 복잡한 지표까지 다양한 방법으로 시장 추세와 변화를 분석할 수 있다. 이를 통해 투자 전략을 보다 정교하게 계획하고 실행할 수 있으며, 시장의 미묘한 움직임을 파악하는 데 도움이 될 것이다.


FAQs (자주 묻는 질문)

  1. TA-Lib는 어떻게 설치할 수 있나요?
  2. 이동 평균 지표 외에 TA-Lib를 사용하여 계산할 수 있는 다른 지표는 무엇인가요?
    • TA-Lib는 150개 이상의 기술 지표를 제공하며, 볼린저 밴드, RSI, MACD 등과 같은 다양한 지표를 계산할 수 있다. 이 시리즈에서는 앞으로 이러한 다른 지표들도 상세하게 다룰 예정이므로 계속 주시하시기 바란다.
  3. 골든 크로스와 데드 크로스는 언제 발생하는지 어떻게 알 수 있나요?
    • 단기 이동 평균이 장기 이동 평균을 상향 또는 하향 돌파할 때 각각 골든 크로스와 데드 크로스가 발생한다. 코드 예제를 사용하면 이러한 시그널을 찾을 수 있다.
  4. 이동 평균 외에도 어떤 기술 지표가 초보 투자자에게 유용한가요?
    • 초보 투자자에게는 RSI(상대강도지수), MACD(이동평균수렴확산), 볼린저 밴드와 같은 지표도 유용할 수 있다. 이러한 지표들은 가격의 상대적인 강도나 변동성 등을 측정하므로, 이동 평균과 함께 사용하면 시장의 다양한 면을 분석하는 데 도움이 될 수 있다.
  5. 이동 평균선 분석만으로는 부족한 부분이 있나요? 다른 분석 방법과의 조합은 어떻게 이루어져야 할까요?
    • 이동 평균선은 시장의 일반적인 추세를 파악하는 데 유용하지만, 복잡한 시장 상황이나 특정 이벤트를 분석하는 데는 한계가 있을 수 있다. 이를 보완하기 위해 펀더멘탈 분석, 다른 기술 지표, 경제 지표 등과 결합하여 종합적인 투자 전략을 세우는 것이 좋다. 여러 분석 방법을 조합하면 시장의 다양한 측면을 보다 정확하게 이해하고 예측할 수 있을 것이다.
© Copyright 2023 CLONE CODING