파이썬 바이낸스 API로 차트 분석. 판다스 스토캐스틱

파이썬 바이낸스 API로 차트 분석. 판다스 스토캐스틱

파이썬 바이낸스 API로 코인 가격에 대한 시계열 데이터 분석을 쉽게 할 수 있습니다. 이번 포스팅에서도 캔들 차트를 이용합니다. 파이썬 바이낸스 API의 get_historical_klines() 함수로 시간, 시가, 고가, 저가, 종가 데이터를 가져온 후 판다스 데이터프레임을 이용하여 차트 보조지표 중 스토캐스틱 구하는 방법과 스토캐스틱의 활용법에 대해 알아보겠습니다.


글의 순서

스토캐스틱 오실레이터 (Stochastic Oscillator) 개념
스토캐스틱이 보여주는 과매수, 과매도 상태
스토캐스틱 종류
스토캐스틱 이용 방법
파이썬 코드 : 바이낸스 API, 판다스 데이터프레임을 이용한 스토캐스틱


스토캐스틱 오실레이터 (Stochastic Oscillator) 개념

스토캐스틱은 주가의 마감 가격(종가)가 어떤 기간 내에서 어느 곳에 있었는지를 나타내주는 보조지표입니다. 최근 n일간의 최고가와 최저가의 범위 내에서 현재 가격의 위치를 표시해 줍니다. 물론 지난 포스팅의 이동평균선처럼 코인 가격에도 적용 가능합니다. 스토캐스틱은 매수세가 강할 때 높은 위치에, 매도세가 강할 때는 낮은 위치에 형성됩니다.

예를 들어, 어떤 주식의 최근 5일간 최고가가 10000원, 최저가가 5000원이었고, 현재가가 9000원이라면 매수세가 강하며, 오르는 추세라는 것을 알 수 있습니다. 반대로 현재가가 6000원이라면 매도세가 강하고 내리는 추세인 것입니다.

이제는 현재가를 스토캐스틱으로 환산해 보겠습니다. 현재가 9000원은 80%입니다. 최고가와 최저가의 차이, 그러니까 가격 변동폭이 5000원이고, 현재가는 최저가로부터 4000원이 높은 위치이므로, 변동폭 대비 80%가 됩니다. 4000/5000 × 100(%) = 80%로부터 구할 수 있습니다. 만약 현재가가 6000원이라면 최저가로부터 1000원이 높은 위치이며, 1000/5000 × 100(%) = 20%가 됩니다.



스토캐스틱이 보여주는 과매수, 과매도 상태

현재가가 5일간의 구간에서 최고가인 10000원이라면, 스토캐스틱은 100%이니까 매수세가 가장 강한 경우입니다. 100%에 가까울수록 과매수 상태, 0%에 가까울수록 과매도 상태라고 판단할 수 있습니다. 그러니까 현재 가격이 어느 정도 위치에 있는지를 알 수 있게 해주는 지표입니다.


스토캐스틱 종류

2가지 종류가 있습니다. 하나는 Fast Stochastic, 다른 하나는 Slow Stochastic입니다. 패스트스토캐스틱은 주가의 변동이 자주 발생해서 단기매매, 빠른 매매에 유리한 지표입니다. 그런데, 패스트 스토캐스틱은 변동이 잦아서 투자 판단에 어려움이 있습니다. 이를 느리게 만든 것이 슬로 스토캐스틱입니다. 위의 ‘스토캐스틱 오실레이터 개념’ 에서 계산했던 스토캐스틱이 바로 Fast 스토캐스틱입니다.

▶스토캐스틱 %K = (현재가 – n일 중 최저가)/(n일 중 최고가 – n일 중 최저가) × 100
▶스토캐스틱 %D = m일 동안 %K의 평균
▶Slow %K = 스토캐스틱 %D
▶Slow %D = t 일 동안의 Slow %K 평균

여기서, n, m, t라는 날짜가 나왔는데요, 보통 (n, m, t) = (5, 3, 3), (10, 6, 6), (14, 3, 3), (20, 12, 12)의 4가지를 주로 사용합니다. (n-m-t) = (5-3-3)의 의미를 살펴보면, 먼저 최근 5일간의 최고점과 최저점을 이용하여 스토캐스틱 %K를 구합니다. 이렇게 구한 %K의 3일 동안의 평균으로 스토캐스틱 %D를, 3일 동안의 스토캐스틱 %D(=Slow %K) 평균으로 Slow %D를 구한다는 의미입니다.


스토캐스틱 이용 방법

차트 보조지표 스토캐스틱은 일정한 방향이 없는 박스권의 구간에서 효과적입니다. 보통 Slow %K선이 20이하의 과매도 구간까지 하락했다가, 다시 상승할 때를 매수 시점으로 보고, 80 이상의 과매수 구간까지 상승했다가 다시 하락할 때를 매도 신호로 봅니다.

좀 더 구체적으로 정리해보면 다음과 같습니다.
▶ 매수 : 스토캐스틱 20 이하, %K 선이 %D를 상향돌파
▶ 매도 : 스토캐스틱 80 이상, %K 선이 %D를 하향돌파

판다스 데이터프레임과 넘파이(numpy) 라는 파이썬 패키지를 함께 사용하면, 상향 또는 하향 돌파할 때의 교차점을 쉽게 찾아낼 수 있습니다.

아래는 numpy의 where 함수를 사용해서 두 스토캐스틱의 교차지점을 찾아내는 코드입니다. np.where(조건, 1, 0) 함수는 조건이 참일 때 1, 거짓일 때 0을 출력합니다. 그러니까 아래 코드는 %K가 %D 보다 위에 있을 때 1을 출력하게 합니다. 따라서 df[‘cross’] 열이 0이었다가 1로 바뀌는 시점이 바로 %K가 %D를 교차한 후 위로 올라가는 시점입니다.


파이썬 코드 : 바이낸스 API, 판다스 데이터프레임을 이용한 스토캐스틱

지금까지의 과정을 ‘판다스 데이터프레임을 이용한 이등평균선’ 파이썬 코드에 나타내었습니다. 지난 포스팅 파이썬 바이낸스 API 시계열 데이터분석. 판다스 시간 처리의 판다스로 시계열데이터 전처리 (바이낸스 차트 분석)라는 파이썬 코드에 스토캐스틱 부분을 덧붙인 코드입니다. 여기서는 스토캐스틱 부분만 출력하도록 했습니다. 스토캐스틱 계산 부분을 함수 get_stochastic_fast_k, get_stochastic_slow_k, get_stochastic_slow_d에서 확인해 보시기 바랍니다. 이동평균선 구할 때 사용했던 판다스 데이터프레임 함수인 rolling(n).mean()가 중요한 역할을 합니다.

스토캐스틱은 일정한 방향이 없는 박스권의 구간에서 효과적입니다. Slow %K와 Slow %D가 교차하는 지점이 중요한 의미를 지니며, 이 시점을 거래에 참고합니다.


마치며 …

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

pandas DataFrame의 rolling().mean() 함수로 스토캐스틱을 쉽게 구했고, 넘파이의 where 함수를 이용해서 Slow %K, Slow %D의 교차지점을 알아내는 방법도 확인하였습니다. 판다스 데이터프레임에서 쓰는 함수 2개를 기억해주시기 바랍니다.

 

 

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


참고자료

[1] python-binance Docs >> get_historical_klines
[2] WENDYS(2019), [Python] pandas 주식정보로 스토캐스틱(Stochastic Oscillator) 구하기

Leave a Comment