차밍이

[Python] KOSPI 이동평균선, 주가 이동평균선 구하기 // 파이썬 주식투자(2) 본문

투자/Quant & BackTest

[Python] KOSPI 이동평균선, 주가 이동평균선 구하기 // 파이썬 주식투자(2)

2020. 10. 11. 14:12
반응형

파이썬에서 이동평균선을 그리는 방법을 알아보겠습니다.

해당 내용은 주가 이동평균선, 혹은 지수 이동평균선을 구하는 쪽에 활용할 수 있을 것입니다.

이평선 돌파 혹은 지지 등을 확인해 보기 위해서 알아두면 좋은 내용이라 생각합니다.

그 외에도 이평선을 활용한 다양한 것들을 마켓 타이밍이라던지 등등에 활용할 수 있으니 숙지하면 좋습니다.

 

주가 데이터 가져오기

우선, 주가 데이터를 가져오는 부분이 필요합니다.

해당 코드는 아래에 첨부하였고 조금 더 상세한 설명은 아래 링크를 참조해주세요.

from pandas_datareader import data  
from datetime import datetime

start_date = datetime(2007,1,1)
end_date = datetime(2020,3,3)

kospi_df = data.get_data_yahoo("^KS11", start_date, end_date) 
kospi_df

[Python] pandas_datareader 코스피 코스닥 지수 데이터 가져오기

 

[Python] pandas_datareader 코스피 코스닥 지수 데이터 가져오기

목차 pandas_datareader pandas_datareader library를 사용하면 훨씬 쉽게 코스피 or 코스닥 지수 데이터를 가져올 수 있습니다. 1. pandas_datareader 설치하기 기존에 pandas_datareader 를 설치하지 않았다면 a..

chancoding.tistory.com

 

주식 이동평균선

주식에서 사용되는 이동평균선은 "단순 이동평균선" 또는 "산술 이동평균선"이라고 합니다.

일반적인 주식에서 사용되는 주가 이동평균선은 n일 간의 값의 산술평균입니다.

n 일의 평균 ex) 5일 이동평균선은 5일간의 값의 평균입니다.

오늘 5일 이동평균선의 값은 D-4, D-3, D-2, D-1, Today의 종가 평균입니다.

pandas DataFrame에 내장된 함수가 있어서 이를 활용하면 쉽게 사용하실 수 있습니다.

kospi_df['MA3'] = kospi_df['Close'].rolling(3).mean()
kospi_df['MA5'] = kospi_df['Close'].rolling(5).mean()
kospi_df['MA10'] = kospi_df['Close'].rolling(10).mean()
kospi_df['MA60'] = kospi_df['Close'].rolling(60).mean()

kospi_df[['Close','MA3','MA5','MA10']].plot()

n일 간의 평균이므로 n일 이전의 값이 없는 경우는 NaN으로 값이 비어있는 것을 볼 수 있습니다.

그래프는 다음과 같이 그려지는 것을 볼 수 있습니다.

 

이동평균선 그래프 그리기

좀 더 보기 좋게 그래프를 그려보면 아래와 같습니다.

fig, ax = plt.subplots(figsize=(10,5))

ax.set_title('KOSPI INDEX', fontsize=15)
ax.set_ylabel("KOSPI")
ax.set_xlabel("Date Time")
ax.plot(kospi_df.index, kospi_df[['Close','MA5','MA10']])
ax.legend(['Close','MA5','MA10'])
plt.show()

주가 이동평균선은 똑같이 데이터만 주가 데이터를 사용해서 진행해주시면 되겠습니다.

 

전체 소스코드

from pandas_datareader import data  
from datetime import datetime
from IPython.display import display

start_date = datetime(2020,3,15)
end_date = datetime(2020,7,15)

kospi_df = data.get_data_yahoo("^KS11", start_date, end_date) 
display(kospi_df.head(5))

kospi_df['MA3'] = kospi_df['Close'].rolling(3).mean()
kospi_df['MA5'] = kospi_df['Close'].rolling(5).mean()
kospi_df['MA10'] = kospi_df['Close'].rolling(10).mean()
kospi_df['MA20'] = kospi_df['Close'].rolling(20).mean()
display(kospi_df.head(5))


fig, ax = plt.subplots(figsize=(10,5))

ax.set_title('KOSPI INDEX', fontsize=15)
ax.set_ylabel("KOSPI")
ax.set_xlabel("Date Time")
ax.plot(kospi_df.index, kospi_df[['Close','MA5','MA10']])
ax.legend(['Close','MA5','MA10'])
plt.show()

전체 코드에는 "IPython.display" 부분이 추가되었으니 만약 해당 import 에러가 발생되면 "pip install IPython" 해주시면 됩니다.

 

이처럼 이동평균선의 움직임을 살펴보기 위한 내용이었습니다.

단순이 이동평균선만 있으면 분석하는 것에 어려움이 있겠죠?

그러므로 python에서 주가 그래프를 보기위한 캔들차트 그리는 방법을 다음에 알아보겠습니다.

반응형

관련된 글 보기

Comments