[이전]
def RSI(data):
theta = 14 #RSI 주기
delta = data['Close'].diff(1) # 다음 값과의 차이
delta = delta.dropna() # NaN 값 제거
Up = delta.copy() # 결과 복사
Down = delta.copy() # 결과 복사
Up[Up < 0] = 0 # RS 값 구하기 위한 0 보다 큰 값만 정렬
Down[Down > 0] = 0 # RS 값 구하기 위한 0 보다 작은 값만 정렬
data['Up'] = Up # DataFrame에 추가
data['Down'] = Down # DataFrame에 추가
AU = data['Up'].rolling(window=theta).mean() # 0 보다 큰 값들의 14일 평균 값
AD = abs(data['Down'].rolling(window=theta).mean()) # 0 보다 작은 값들의 14일 평균 값
RS = AU / AD
RSI = 100.0 - (100.0 / (1.0 + RS))
data['AU'] = AU # DataFrame에 추가
data['AD'] = AD # DataFrame에 추가
data['RS'] = RS # DataFrame에 추가
data['RSI'] = RSI # DataFrame에 추가
return data # RSI Function 결과 값 리턴
df = RSI(df)
df.to_csv('stock.csv') # DataFrame을 csv 파일로 저장
[결과]
High Low Open ... AD RS RSI
Date ...
2010-01-04 16180.0 16000.0 16060.0 ... NaN NaN NaN
2010-01-05 16580.0 16300.0 16520.0 ... NaN NaN NaN
2010-01-06 16820.0 16520.0 16580.0 ... NaN NaN NaN
2010-01-07 16820.0 16260.0 16820.0 ... NaN NaN NaN
2010-01-08 16420.0 16120.0 16400.0 ... NaN NaN NaN
... ... ... ... ... ... ... ...
2020-12-23 74000.0 72300.0 72400.0 ... 264.285714 2.135135 68.103448
2020-12-24 78800.0 74000.0 74100.0 ... 264.285714 2.702703 72.992701
2020-12-28 80100.0 78200.0 79000.0 ... 264.285714 2.567568 71.969697
2020-12-29 78900.0 77300.0 78800.0 ... 207.142857 3.275862 76.612903
2020-12-30 81300.0 77300.0 77400.0 ... 207.142857 3.448276 77.519380
[2708 rows x 12 columns]

'Python Code' 카테고리의 다른 글
| [파이썬코드] tkinter, Frame, Notebook, Canvas (0) | 2021.10.15 |
|---|---|
| [파이썬코드] tkinter, Lable, StringVar, Button (0) | 2021.10.10 |
| [파이썬코드] tkinter, tab, menu (0) | 2021.10.10 |
| [파이썬 코드] pandas, for (0) | 2021.10.05 |
| [파이썬 코드] pandas_datareader (0) | 2021.10.04 |