본문 바로가기
무모한 도전-주식 인공지능 만들기

RSI 지수를 계산하기 위한 여정 -1-

by 인터넷떠돌이 2020. 3. 6.
반응형

안녕하세요?

 

평균회귀 방법을 사용하기 위한 매도/매수를 위한 룰은 평균과 표준편차만이 아니라 다른 방법도 있습니다. 그 중에 하나가 이 RSI라고 해서 relative strength index라고 하는 지수가 있습니다. 일단 이 지수를 사용해서 초기 테스트를 하기 위해서는 제대로 계산을 하는 과정이 필요합니다.

 

일단 위키피디아의 영문 자료를 뒤져 보다 보니, 우선 close라고 해서 종가의 변화가 중요한데, 어제보다 종가가 오른 경우와 반대의 경우를 각각 U와 D라는 그룹으로 묶도록 하고, 이후에 Wilder's SMMA라고 하는 특별한 공식의 이동평균을 구해야 하는 과정이 있습니다. 이게 조금은 복잡하기는 해도 어떻게 계산을 해야 하는가 하고 생각했더니.........

 

이 RSI지수를 간단하게 그냥 U와 D의 이동평균선을 사용해서 계산하는 방법이 커틀러의 계산법입니다. 이 방법은 100% 오리지날의 계산식과 같지는 않지만, 매우 유사한 결과를 낼 수 있어서 통상적으로는 이 공식을 사용하는 것으로 보입니다.

 

그래서 일단 이러한 커틀러의 공식을 이용해서 RSI를 계산하기 위해서는, 일단 기존의 차트 데이터를 계산하기 위한 py파일에서 먼저 numpy를 import해 오도록 합니다.

 

 

그리고 나서 작업을 하기 위해서 Rule002를 제작에 들어가도록 합니다. 일단 먼저 여기서 사용이 된 방식이 중요한데, 우선 numpy에서 where()이라는 함수는 조건에 맞는 경우와 아닐 경우에 각각의 값을 지정해 줍니다. 그리고 이후에 나오는 diff()라는 pandas의 Dataframe함수에서 나오는 이 함수는 자동으로 이전과 이후의 값을 계산해 주는데, 이 경우에는 close라고 해서 종가의 가격을 자동으로 계산해 주어서 상당히 편리합니다.

 

그리고 나서 위 스크린샷에서 나오는 것처럼 기존의 결과에서 이번에는 Rule002라는 액션을 결정하기 위한 룰을 만들어 보도록 합니다. 일단 이 룰에서는 먼저 nth가 몇번인가에 따라서 매도/매수를 하기 위해서 지정한 값을 가지도록 합니다.

 

그리고 나서 결정을 하기 위한 메서드의 나머지 부분도 만들어 주도록 합니다. 이렇게 해서 일단 하나 완성을 하기는 했습니다.

 

그렇게 하고 나서도, 다른 py파일에서 일일히 계산해 주지 않으면 아무런 소용이 없기 때문에, 일단 위 스크린샷처럼 원래는 001로 되어 있는 부분을 모두 002로 만들어 주도록 합니다.

 

일단 작업을 하기 위해서, 위 스크린샷에서 볼 수 있는 것과 같이 1종목만을 대상으로 해서 한번 테스트를 진행해 보도록 합니다.

 

이렇게 해서 일단 모든 과정을 60분봉 캔들차트 데이터를 활용해서 간단하게 하나 완료를 하는 것을 볼 수 있었습니다. 그럼 이제는 결과를 보러 가야 합니다.

 

그런데 결과로 나와야 하는 폴더가 한개도 나오지 않은 것을 확인할 수 있었습니다. 이래서야 상당히 난감한데, 아무튼 간에 이제 겨우 첫 발자국입니다. 일단 계속해서 시행착오를 하면서 어떻게 만들어 낼 수 있으리라 생각을 합니다만, 이래저래 해답을 찾아봐야 합니다.

반응형