기업 가치 분석/금융데이터 분석과 자동화(파이썬)
[pandas] RSI 기법 부수기 ( with python )
보보트레인
2023. 11. 13. 22:49
사용툴 및 세팅은 이전글 참고
[Pandas] 이동평균선 매매기법 뿌수기(with python) (tistory.com)
1. 코드
def SMA(data,period = 30, column = 'Close') :
return data[column].rolling(window = period).mean()
def RSI(data, period = 14, column = 'Close') :
delta = data[column].diff(1)
delta = delta.dropna()
up = delta.copy()
down = delta.copy()
up[up <0] =0
down[down>0] = 0
data['up'] = up
data['down'] = down
AVG_Gain = SMA(data, period, column = 'up')
AVG_Loss = abs(SMA(data,period,column = 'down'))
RS = AVG_Gain / AVG_Loss
RSI = 100.0 - (100.0 / (1.0+RS))
data['RSI'] = RSI
return data
df = RSI(df, period = 14)
column_list = ['RSI']
df[column_list].plot(figsize = (18,8))
plt.title('RSI',position = (0.5,1.05),fontsize = 23)
plt.xlabel('Date', fontsize = 17)
plt.ylabel('RSI Values (0 - 100)', fontsize = 17)
plt.axhline(30, ls = '--', c='y', alpha = 0.9)
plt.grid(b=True, color='DarkTurquoise', alpha=0.3, linestyle=':', linewidth=2)
plt.legend( loc='upper left', fontsize = 13)
plt.axhline(70, ls = '--', c='y', alpha = 0.9);
RSI = 100.0 - (100.0 / (1.0+RS))
data['RSI'] = RSI
해당부분이 RSI공식을 도입한 설명부분이다.
RSI공식을 적용하여 30과 70을 기준으로 체크를 하는 그래프를 만들었다.
( 30 과매도구간 매입 70 과매수구간 매도 )
2. 결과
이전 글에서 구해둔 종가기준 주가추이 그래프를 비교분석하여 다음과 같이
매수/매도 사인을 그래프상으로 출력할 수 있음.
대상기업 : HES / MPC / EOG
<HES>
1차매수 매도 수익률 -14%
2차매수 매도 수익률 -41%
3차매수 매도 수익률 2%
< MPC >
1차 매수매도 수익률 : -0.83333
2차매수 매도 수익률 : -58%
3차매수 매도 수익률 : 7%
< EOG >
1차 매수매도 수익률 : -51%
2차매수 매도 수익률 : -2%
반응형