오늘 살펴볼 툴은 이동평균선, 볼린저밴드, RSI 등 다양한 지표 도출과 차트 분석 기능 까지 제공하는 TA-Lib이라는 강력한 라이브러리이다.
한 두줄의 코드만으로 다양한 보조지표 데이터를 생성하고 시각화 할 수 있다.
하나하나 친절하게 알려드릴테니 10분만 투자해서 따라와 보시라.
이번 글에서는 코인 정보를 불러와서 이동평균선을 구하고 골든크로스, 데드크로스 구간을 찾는 방법을 소개해드린다.
Ta-Lib을 구글 코랩에 설치하고 여러가지 기능을 구현하는 방법을 알아보겠다.
시작하기 전에 권장하는 사전 지식은 다음과 같다.
- 기본적으로 Python 사용하실 줄 안다.
- Google Colab이 뭔지 안다.
- pyupbit API 가 뭔지 안다.
1. 구글 코랩에 환경 구축
구글 코랩은 리눅스 기반이다.
TA-Lib 설치를 위해 여러가지 방법을 시도해봤지만 아래의 방법이 가장 쉽고 빠른 방법이므로 그냥 복붙해서 쓰시기 바란다
TA-Lib 설치
url = 'https://anaconda.org/conda-forge/libta-lib/0.4.0/download/linux-64/libta-lib-0.4.0-h516909a_0.tar.bz2'
!curl -L $url | tar xj -C /usr/lib/x86_64-linux-gnu/ lib --strip-components=1
url = 'https://anaconda.org/conda-forge/ta-lib/0.4.19/download/linux-64/ta-lib-0.4.19-py37ha21ca33_2.tar.bz2'
!curl -L $url | tar xj -C /usr/local/lib/python3.7/dist-packages/ lib/python3.7/site-packages/talib --strip-components=3
import talib
윈도우에서 구현 중이라면 공식 문서에서 설치 방법을 확인하기 바란다.
공식 문서 : https://mrjbq7.github.io/ta-lib/install.html
pyupbit 설치
코인 정보를 불러오기 위해 pyupbit 라이브러리를 설치해주자.
!pip install Pyjwt pyupbit
설치 확인
아래와 같이 설치된 아이들을 불러와보자. 오류가 뜨지 않으면 잘 설치 된 것이다. 안된다면 구글링 해보세용.
import talib as ta
import pyupbit
설치가 완료 됐다면 이제 모든 준비가 끝났다.
2. 캔들 스틱 이해하기
주식, 코인투자를 하시는 분들은 이미 익숙하실 것이다. 캔들 스틱을 그리기 위해서는 다섯가지 정보가 필요하다.
- 시간(Time Stamp)
- 시가(Open)
- 고가(High)
- 저가(Low)
- 종가(Close)
이를 우리는 OHLC 값이라고 부르고,
여기에 거래량, 즉 Volume을 추가하여 OHLC-V 데이터 라고 부른다.
대부분의 코인 거래소에서 API를 제공해 주고 있고 우리는 파이썬을 이용하면 아주 간단하게 OHLCV 데이터를 받아 볼 수 있다.
이러한 데이터는 DataFrame으로 저장 되는데, 엑셀 표와 같은데 Programmable한 표라고 생각하면 쉽다.
3. 단순 이동평균선 그리기
단순 이동평균선(SMA : Simple Moving Average)
주식차트에서는 주로 5, 20, 60, 120일 이동평균선을 볼 수 있으며, 5, 20일 이동평균선을 단기 이평선, 60, 120일 이동평균선을 장기 이평선이라고 주로 부른다.
단기 이평선이 장기 이평선을 상방 돌파 했을때, 이를 골든 크로스(Golden Cross)라고 부른다. 강한 매수 신호로 널리 알려져 있어 보조지표로 활용된다.
그럼 위에서 설치한 TA-Lib으로 이평선 값을 구해보자.
pyupbit를 통해 데이터를 불러온다.
이더리움의 60분봉 144개를 갖고 오겠다. (144 시간 = 24 x 6 = 6일치 60분봉)
import talib as ta
import pyupbit
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
ticker = "KRW-ETH"
df = pyupbit.get_ohlcv(ticker, interval = 'minute60', count=144)
df.head()
실행하면 아래와 같이 잘 불러와 졌음을 알 수 있다.
TA-lib 라이브러리로 Simple Moving Average를 생성한 후 차트를 그려본다.
#단순 이동평균선 구하는건 한줄로 끝!
df['MA'] = ta.SMA(df['close'], 20)
#차트를 그려주자.
df[['close','MA']].plot(figsize=(12,6))
plt.title("ETH - 6 Days", {"fontsize" : 20})
plt.show()
위 코드를 실행하면 아래와 같이 예쁘게 차트가 나온다~!
그런데, 이동평균선 하나만 있으니까 좀 아쉽다.
단기 이평선과 중기 이평선을 추가하여 골든 크로스, 데드 크로스가 발생하는지 살펴 보자.
#이동평균선 두개를 구하자. 5시간, 20시간 이평선이다.
df['MA'] = ta.SMA(df['close'], 20)
df['5MA'] = ta.SMA(df['close'], 5)
#차트로 그려주자.
df[['close','MA','5MA']].plot(figsize=(12,6))
plt.title("ETH - 6 Days", {"fontsize" : 20})
plt.show()
골든크로스가 발생한 구간, 데드크로스가 발생한 구간이 보인다. 실제로 골든크로스이후로 상승하고 데드크로스 이 후 하방 돌파 하는 차트 모양을 볼 수 있다. 물론 이평선을 활용한 분석은 후행성 지표라 효용성이 크지 않다는 의견이 많기에 명확한 투자 지표로 활용하기엔 무리가 있다. 하지만 추세를 파악하기엔 굉장히 용이한 지표이기 때문에 지금도 많이 활용되고 있다고 생각한다.
이렇게 이동평균선을 구하고 골든크로스, 데드크로스를 단 몇 줄의 코드로 그려 보았다. 차트로 시각화 되었지만 실제로는 DataFrame에 값으로 계산되어 저장되어 있으므로 다른 분석이나 자동매매에 활용할 수 있을 것이다.
다음 포스팅에서는 더 다양한 활용법을 알아보겠다.
- 지수 이동평균선 그리기
- 볼린저 밴드 그리기
- 차트 분석 기능으로 상승 전환, 하락 전환 시점 캐치하기
아이언맨의 자비스 친척뻘인 코인 자동매매봇 자빛스(Jarvits)를 개발하고 있습니다.
초보 개발자인 만큼 자동매매봇 개발에 도전하시는 분들에게 도움이 되는 포스팅을 적어보려합니다.
- 이전글 구경하기-
업비트 전체 코인 정보 정리 엑셀 공유_코인 소개, 시가총액 등 싹다 정리(한화 마켓 108개)
[EP3] 코인 자동매매봇 자빛스 임신 9일차, 근황과 현황. (탄생은 아니어서 임신..)
[EP2] 업비트 openAPI 가이드 내용을 한눈에 볼 수 있게 요약해 드리겠습니다. (자동매매 봇 만들기의 교과서)
[EP1] 내 파이썬과 업비트 API를 연결해 버리자_야너두 코인봇으로 부자 될 수 있어!(feat. 자빛스)
[EP0] 야너두 코인 봇으로 부자 될 수 있어!_초보개발자의 코인 자동매매로 부자되기의 서막
'경제와 데이터 분석 > 데이터 분석' 카테고리의 다른 글
백테스팅은 뭘로 할까? 백테스팅 라이브러리 전격 비교 (0) | 2024.01.31 |
---|---|
자동 거래 시스템이 실제로 작동하나요? 그렇다면 왜 모두가 그렇게 하지 않는 걸까요? 에 대한 현답 (3) | 2024.01.31 |
[Python x Upbit][EP3] 코인 자동매매봇 자빛스 임신 9일차, 근황과 현황. (탄생은 아니어서 임신..) (1) | 2021.10.25 |
[Python x Upbit][EP2] 업비트 openAPI 가이드 내용을 한눈에 볼 수 있게 요약해 드리겠습니다. (자동매매 봇 만들기의 교과서) (0) | 2021.10.17 |
[Python x Upbit][EP1] 내 파이썬과 업비트 API를 연결해 버리자_야너두 코인봇으로 부자 될 수 있어!(feat. 자빛스) (3) | 2021.10.16 |
댓글