일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- hive
- 딥러닝
- effective python
- collections
- 파이썬
- LSTM
- RNN
- GRU
- C언어
- recursion
- HelloWorld
- graph
- codingthematrix
- 하둡2
- 선형대수
- 텐서플로
- 하이브
- NumPy
- yarn
- Java
- Sort
- C
- hadoop2
- scrapy
- 코딩더매트릭스
- 주식분석
- 알고리즘
- tensorflow
- 그래프이론
- python
- Today
- Total
EXCELSIOR
6. Pandas와 Plotly를 이용한 MACD 차트 그리기 본문
Pandas와 Plotly를 이용한 MACD 차트 그리기
이전에 포스팅한 5. Pandas를 이용한 Naver금융에서 주식데이터 가져오기는 Naver금융에서 주식데이터를 수집하는 방법에 대해 알아보았다.
이번 포스팅에서는 수집한 주식 데이터를 가지고 주식 분석에서 필수 보조 지표라고 할 수 있는 MACD를 Python의 pandas
모듈을 이용하여 구현해 보도록 한다.
1. MACD 란?
MACD는 Moving Average Convergence Divergence의 약어로써, 이동평균선(MA)이 수렴과 발산을 반복한다 는 원리를 이용해 단기이동평균선(12)과 장기이동평균선(26) 사이의 관계를 보여주는 Gerald Appel이 개발한 지표다. MACD에서 단기이동평균으로는 12일, 장기이동평균으로는 26일을 사용하고, MACD의 9일 이동평균선을 Signal
이라고 하고, MACD와 Signal의 차이를 Oscillator
라고한다.
MACD
: 단기이동평균(12)와 장기이동평균선(26)의 차이값- 보통 주식HTS에서는 이값을 파라미터 값으로써 조정할 수 있게 되어있다. 우리나라 주식시장에 맞는 5일과 20일로 대체해서 사용하기도 한다.
Signal
: MACD의 9일 이동평균값- 일반적으로 9일을 설정하여 MACD의 값들을 완충 및 일반화 하는 역할을 한다.
Oscillator
: MACD값과 Signal값의 차이- MACD의 값이 Signal값보다 클때는 양의 막대, 작을 때는 음의 막대가 그려진다.
1) MACD 공식
MACD
: (: 일간의 지수이동평균선)Signal
: (일반적으로 로 설정)Oscillator
:
2) MACD를 이용한 주식분석 - 참고 : 앤트하우스
- MACD선이 0값을 상향돌파 할 경우: 아래의 그림처럼 MACD선이 0을 상향돌파 할 경우는 단기이동평균선이 장기이동평균선 위에 있는 정배열을 의미한다. 매수 포지션 (상승추세 전환)
- MACD선이 0값을 하향돌파 할 경우: 아래의 그림처럼 MACD선이 0을 하향돌파 할 경우는 단기이동평균선이 장기이동평균선 아래에 있는 역배열을 의미한다. 매도 포지션 (하락추세 전환)
- MACD선이 Signal선을 상향돌파 할 경우: Oscillator가 (+)로 전환된다. 매수 포지션
- MACD선이 Signal선을 하향돌파 할 경우: Oscillator가 (-)로 전환된다. 매도 포지션
2. pandas
를 이용해 MACD 구현하기
위의 내용에서 MACD가 무엇이며 어떻게 활용하는지에 대해 알아보았다. 이제 부터는 python
의 pandas
모듈을 이용하여 MACD를 직접 구현해 보도록 한다.
1) pandas.read_html()
을 이용해 krx에서 종목코드 가져오기
네이버금융에서 원하는 종목의 주식데이터를 가져오기 위해 먼저 코스피(KOSPI)과 코스닥(KOSDAQ)의 종목코드가 필요하다. 한국거래소(krx)에서는 주식시장에 상장된 기업들에 대해 종목코드를 제공한다. pandas
모듈의 pandas.read_html()
을 이용해 종목코드를 가져올 수 있다. pandas.read_html()은 HTML에서 <table></table>
태그를 찾아 자동으로 DataFrame
형식으로 만들어준다. 아래의 소스코드를 통해 주식의 종목코드를 가져올 수 있다.
head()
함수를 통해 상위 5개의 코드를 확인할 수 있다.
N0. | name | code |
---|---|---|
0 | BYC | 001460 |
1 | CJ | CGV |
2 | CJ씨푸드 | 011150 |
3 | DSR제강 | 069730 |
4 | KB금융 | 105560 |
2) Naver금융에서 일자별 주식데이터 가져오기
이제 네이버금융에서 원하는 종목의 일자 데이터를 가져와 보도록 하자. 여기서는 신라젠(215600) 의 일자 데이터를 가져온다. 아래의 소스코드는 특정 종목뿐만 아니라 사용자가 원하는 종목의 일자데이터를 가져올 수 있도록 get_url
이라는 함수를 만들어 줬다. Naver금융에서 주식데이터를 가져오는 방법에 대해 자세히 알고 싶다면 5. Pandas를 이용한 Naver금융에서 주식데이터 가져오기를 참고하면 된다.
아래의 소스코드는 추후에 데이터 분석에서 편하게 하기위해 추가적으로 처리해 준 코드이다.
3) MACD 지표 구현하기
MACD를 구현하기 위해 필요한 데이터들을 수집하였으면, 이제 MACD를 구현해보도록 한다. 아래의 소스코드는 MACD를 get_macd()
라는 함수로 구현하였다.
입력값으로 DataFrame, 단기(short=12), 장기(long=26), Signal을 구할때 사용할 일자(t=9)를 입력값으로 받으며, MACD 지표들이 추가된 DataFrame
을 리턴(return)해준다.
위의 코드에서 구현한 get_macd()
를 이용해 아래의 코드를 입력하면 DataFrame
에 macd의 지표 macd, macds, macdo
가 포함되어 있는것을 확인할 수 있다.
3. plotly
를 이용해 MACD 차트 그리기
마지막으로 plotly
를 이용하여 MACD 차트를 그려보도록 한다. plotly
에 대한 설명은 이전 포스팅인 4. Plotly를 이용한 캔들차트-Candlestick chart 그리기를 참고하면 된다.
아래의 소스코드를 통해 MACD 차트를 그릴 수 있다.
'Python > 주식 분석' 카테고리의 다른 글
7. Pandas와 Plotly를 이용한 Stochastic 차트 그리기 (5) | 2017.12.03 |
---|---|
5. Pandas를 이용한 Naver금융에서 주식데이터 가져오기 (26) | 2017.11.20 |
4. Plotly를 이용한 캔들차트-Candlestick chart 그리기 (4) | 2017.10.30 |
3. 주식 데이터를 PostgreSQL에 저장하기 (1) | 2017.10.29 |
2. 주식 분석 개발환경 설정 - 파이썬 환경 설정 및 실행 (4) | 2017.10.29 |