그러면 필요한 값들을 하나씩 만들어 보겠습니다. 먼저 RSI(2)를 계산해 보겠습니다. 4장에서 다룬 RSI를 구하는 공식을 그대로 적용하면 어려울 것은 없습니다. 앞서 만든 check_sell_signal 함수에 다음 코드를 추가합니다.
RSIStrategy.py
(...)
def check_sell_signal(self, code):
(...)
period = 2 ------ 기준일 N 설정
date_index = df.index.astype('str')
U = np.where(df['close'].diff(1) > 0, df['close'].diff(1), 0) ------ df.diff로 ‘기준일 종가 - 기준일 전일 종가’를 계산하여 0보다 작으면 감소분을 넣고, 증가했으면 0을 넣음
D = np.where(df['close'].diff(1) < 0, df['close'].diff(1) * (-1), 0) ------ df.diff로 ‘기준일 종가 - 기준일 전일 종가’를 계산하여 0보다 크면 증가분을 넣고, 감소했으면 0을 넣음
AU = pd.DataFrame(U, index=date_index).rolling(window=period).mean() ------ AU, period = 2일 동안 U의 평균
AD = pd.DataFrame(D, index=date_index).rolling(window=period).mean() ------ AD, period = 2일 동안 D의 평균
RSI = AU / (AD + AU) * 100 ------ RSI(N) 계산, 0부터 1로 표현되는 RSI에 100을 곱함
df['RSI(2)'] = RSI