파이썬 바이낸스 API로 차트 분석. 판다스 RSI (상대강도지수)

파이썬 바이낸스 API로 차트 분석. 판다스 RSI (상대강도지수)

파이썬 바이낸스 API로 가져온 코인 데이터와 판다스 데이터프레임의 조합으로 시계열 데이터 분석을 쉽게 할 수 있습니다. 이번 포스팅에서는 파이썬 바이낸스 API의 get_historical_klines() 함수로 시간, 시가, 고가, 저가, 종가 데이터를 가져온 후 판다스 데이터프레임을 이용하여 RSI (상대강도지수)를 구하는 방법에 대해 알아보겠습니다.


글의 순서

RSI, (Relative Strength Index, 상대강도지수)
RSI 계산 방법
RSI 활용 방법
파이썬 코드 : 판다스 데이터프레임을 이용한 RSI


RSI, (Relative Strength Index, 상대강도지수)

RSI지표는 J. Welles Wilder가 1978년 “New Concepts in Technical Trading Systems” 라는 책에서 소개했습니다. RSI는 일정 기간 동안 주가가 전일 가격에 비해 상승했는지, 하락했는지의 추세를 0 ~ 100의 퍼센트 수치로 나타낸 지표입니다. 가격의 상승압력과 하락압력 간의 상대적인 강도를 나타낸다고도 표현합니다.

RSI는 현재가 과매수 상태인지, 과매도 상태인지를 알려줍니다. 여기서, 과매수란 주가 폭등으로 투자자들이 주식을 적정 수준 이상으로 매수하는 현상을 말합니다. 상승한 변화량이 크면 과매수로, 하락한 변화량이 크면 과매도로 판단하는 방식입니다. 보통 RSI 퍼센트 수치로는 30이하면 과매도, 70 이상이면 과매수로 해석합니다.



RSI 계산 방법

시간 간격을 하루 단위로 정해 놓고 계산해 보겠습니다. 시간 간격의 경우 하루가 아니라 1분, 1시간, 1주 등 다양하게 적용할 수 있습니다.

우리가 정한 기간에서 가격이 상승한 날의 상승분을 Up, 가격이 하락한 날의 하락분을 Down이라고 해보겠습니다. 상승분 Up 값의 n일 동안의 평균을 AU, 하락분 Down 값의 n일 동안의 평균을 AD하고 하면, AU와 AD의 비율을 상대강도라고 정의합니다. 상대강도가 크다는 것은 상승폭이 크다는 것을 의미합니다.

n일 동안이라고 말씀드렸는데요. 많은 애널리스트들은 9일, 14~15일, 25~28일 동안의 가격 변동으로 RSI를 구합니다. 주식 HTS(Home Trading System)에서는 기본값으로 14일이 설정되어 있는데, 사용자가 바꿀 수 있게 되어 있습니다.

RSI 계산방법을 정리해보겠습니다.
step1) 기간 선정 : n일
step2) 상승분 Up 값의 n일 동안의 평균 AU 구하기
step3) 하락분 Down 값의 n일 동안의 평균 AD 구하기
step4) 상대강도 RS = AU/AD 구하기
step5) 상대강도지수 RSI = RS/(1+RS) × 100% 구하기


RSI 활용 방법

RSI 50% 이상은 매수세 우세, 50%이하는 매도세 우세를 나타냅니다. 주식 HTS에서 보조지표 RSI를 선택하면, RSI를 나타낼 때, 70%, 30% 선이 그어져 있습니다. RSI는 대체로 이 두 선 사이, 그러니까 30~70% 구간에서 움직입니다. 그러다가 RSI 70% 이상이 되면 과매수, 30% 이하가 되면 과매도 상황으로 돌입한 것입니다.

단기적인 관점에서는 일반적으로 RSI가 70% 이상이 되어 과매수 상태였다가 70% 이하로 내려갈 때 매도하며, 30% 이하인 과매도 상태에서 30% 선을 교차해서 올라갈 때, 매수합니다.

반면, 장기적 관점에서는 좀 길게봐야 합니다. 장기적으로 상승추세일 때, 70% 이상일 때가 많으므로, 50% 보다 밑으로 떨어질 때(하향 돌파할 때) 매도하며, 장기적인 하락 추세일 때는 30% 이하일 때가 많으므로, 50%를 상향 돌파할 때 매수합니다.


파이썬 코드 : 판다스 데이터프레임을 이용한 RSI

지금까지의 과정을 ‘판다스 데이터프레임을 이용한 RSI’ 파이썬 코드에 나타내었습니다. 지난 포스팅 파이썬 바이낸스 API 시계열 데이터분석. 판다스 시간 처리의 판다스로 시계열데이터 전처리 (바이낸스 차트 분석)라는 파이썬 코드에 RSI 부분을 덧붙였습니다. RSI 부분만 출력하도록 했는데, 유심히 봐 주실 부분은 새롭게 데이터프레임을 만든 방법, shift 함수, np.where 함수입니다. 이동평균선 구할 때 사용했던 판다스 데이터프레임 함수인 rolling(n).mean()도 중요한 역할을 합니다.


마치며 …

이번 포스팅에서는 파이썬 바이낸스 API의 get_historical_klines() 함수로 시간, 시가, 고가, 저가, 종가 데이터를 가져온 후 판다스 데이터프레임을 이용하여 RSI를 구해 보았습니다.

pandas DataFrame의 shift() 함수, abs() 함수, rolling().mean() 함수, 넘파이의 np.where() 함수가 중요한 역할을 했습니다.

 

 

함께 참고하면 더 좋은 글 :
1. 바이낸스 코인거래소 API Key로 계좌에 접속하는 파이썬 프로그래밍
2. 파이썬 바이낸스 API로 시계열 데이터를 가져오는 파이썬 프로그래밍
3. 바이낸스 API 보안을 위한 환경 변수 설정 : 윈도우 10
4. 파이썬 바이낸스 API 시계열 데이터분석. 판다스 시간 처리
5. 파이썬 바이낸스 API로 차트 분석 : 판다스 이동평균선
6. 파이썬 프로그래밍 time 이해 : timestamp, UTC, KST
7. 파이썬 바이낸스 API로 차트 분석. 판다스 스토캐스틱
8. 바이낸스 비트코인 투자 백 테스팅. 파이썬 코인 투자 연습
9. 파이썬 프로그래밍 시작 (8) 자료구조(Data Structure) : 리스트
10. 파이썬 프로그래밍 시작


참고자료

[1] python-binance Docs >> get_historical_klines
[2] 치킨요정의 경제공부방, 주식 RSI 보조지표 개념 및 활용방법 정리

Leave a Comment