이번 포스팅에선 저번 포스팅에서 수집한 비트코인 가격 데이터에 모델 학습을 위한 변수를 추가하기 위해

기술분석에 쓰이는 보조 지표들을 추가해볼 것이다.


본 포스팅에서 필요한 라이브러리들과 설치법은  다음과 같다 


  • Pandas:   cmd창에서 pip install pandas 커맨드 입력후 설치
  • Numpy:   pip install numpy
  • Ta-Lib:    하단에서 설명
  • sklearn:   pip install sklearn


Cmd창은 항상 관리자 권한으로 열어야 한다는 것을 잊지말자.

TA-Lib같은 경우 이상하게 설치가 되지 않으므로 따로 웹사이트를 방문하여 다운받아줘야 한다



여기서 파이썬 버전에 맞는 것을 설치해주면 된다.

잘 모르겠다면 아래와 같이 입력하여 확인해볼수 있다. 

나는 3.5.4이고 (실수로)32비트 아나콘다를 설치하였으므로 cp35~win32.whl를 받으면 된다.

혹시나 이 글 보고 아나콘다를 설치해야 한다면 64비트로 설치하면 된다.


해당 파일을 파이선 워킹디랙토리에 넣고 pip install 파일명을 해주면 잘 설치가 되며, 설치 완료후에는 아래와 같은 화면이 뜬다.



이제 준비를 끝냈으니 TA-Lib와 보조지표들에 대해서 간단히 설명해 보겠다.

비트코인 가격을 분석할때 많은 트레이더들은 다양한 보조 지표들을 사용하며, 

차트는 심리의 반영이기 때문에 이러한 보조 지표들이 (일정부분) 맞아 떨어지는 경우가 많다.


비트코인 3시간 봉 - RSI를 볼때 과매수 영역으로 진입하고 있음을 알 수 있으며 RSI와 MACD가 상승하고 있다는 것은 매수가 붙고 있다는 것을 뜻한다


(더 많은 차트분석은 제 트레이딩뷰 퍼블리시에서 보실 수 있습니다)

이러한 이유로 보조지표가 유의미한 변수가 될 수 있다고 생각하였으며, 선택한 보조지표 리스트는 아래와 같다.

  • SMA5

  • SMA20

  • SMA120

  • EMA12

  • EMA26

  • MACD

  • RSI

  • BBANDS

그 외 다른 보조지표들은 깃허브 참고


해당 지표들을 추가하기 위한 파이선 코드는 아래와 같다.


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
31
32
33
34
35
36
37
38
39
40
import csv
import numpy as np 
import talib
import pandas as pd
 
 
df = pd.read_csv("./duplication_eliminated_bitcoin_data.csv")
df.head(20)
 
close = np.array(df[['close']])
close
 
##################################지표추가#######################################
 
df['sma5'= talib.SMA(np.asarray(df['close']), 5)
 
df['sma20'= talib.SMA(np.asarray(df['close']), 20)
 
df['sma120'= talib.SMA(np.asarray(df['close']), 120)
 
df['ema12'= talib.SMA(np.asarray(df['close']), 12)
 
df['ema26'= talib.SMA(np.asarray(df['close']), 26)
 
upper, middle, lower = talib.BBANDS(np.asarray(df['close']), timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)
df['dn'= lower
df['mavg'= middle
df['up'= upper
df['pctB'= (df.close - df.dn)/(df.up - df.dn)
 
rsi14 = talib.RSI(np.asarray(df['close']), 14)
df['rsi14'= rsi14
 
macd, macdsignal, macdhist = talib.MACD(np.asarray(df['close']), 12269)  
df['macd'= macd
df['signal'= macdsignal
 
 
df.to_csv('./중복제거최종데이터_전처리전.csv', sep=',',na_rep='NaN')
 
cs

한 파이선 코드는 아래와 같

모든 보조지표는 종가를 매개변수로 받고 있으므로 우리는 종가(close)를 활용하여 보조지표를 추가해 준다



추가를 한 후 csv를 열어보면 잘 들어온 것을 확인할 수 있다. 

NaN은 아직 지표를 계산하기에 충분하지 못한 일수(ex 12일 이동평균선인데 12일보다 적게 데이터가 모여있음)이기 때문에 발생한 것이므로 

추후 분석시엔 NaN이 없는 지점부터 사용하게 된다.


다음 포스팅에선 해당 데이터들을 최종적으로 정리하여 전처리를 마무리하게 된다.

+ Recent posts