본문 바로가기
Finance/Coding

python - RSI 구하기 ( pandas )

by ZaRi 2023. 6. 24.

 

 저번에 스토캐스틱을 구해봤고,

 이번에는 파이썬에 판다스를 통해 rsi 를 구해보겠습니다.

 


RSI

우선 코드는 다음과 같습니다.

 

 

rsi

# rsi
def rsi(source, length):
    au = source.diff()
    ad = source.diff()
    
    au[au < 0] = 0
    ad[ad > 0] = 0
    
    au = au.rolling(windows=length).mean()
    ad = ad.rolling(windows=length).mean()
 
    rs = au/-ad
    
    return rs / (rs + 1) * 100

 

rsi 상대강도 지수 적용

# rsi 상대강도 지수 적용
def rsi(source, length):
    au = source.diff()
    ad = source.diff()
    
    au[au < 0] = 0
    ad[ad > 0] = 0
    
    au = au.ewm(com = length - 1, min_periods = length).mean()
    ad = ad.ewm(com = length - 1, min_periods = length).mean()
 
    rs = au/-ad
    
    return rs / (rs + 1) * 100

 

rsi 공식에는 두 가지가 있습니다. 하지만 현재 거래소에서 주로 사용되는 rsi는 상대 강도 지수가 적용된 rsi 입니다.

 

 


활용하기

그러면 rsi를 적용해서 코드를 만들어보겠습니다.

 

 

import pandas as pd
import ccxt
import fical as fi

symbol = 'BTC/USDT'
timeframe = '1h'
candle = 100

binance = ccxt.binance()
btc_ohlcv = binance.fetch_ohlcv(symbol, timeframe = timeframe, limit = candle)

df = pd.DataFrame(btc_ohlcv, columns=['date', 'open', 'high', 'low', 'close', 'volume'])
df['date'] = pd.to_datetime(df['date'], unit='ms')
df = df.set_index('date')

df['rsi'] = fi.rsi(df['close'], 14)

print(df)

 

fical 모듈 안에 rsi 함수를 넣어 놓았습니다.

출력결과를 봐보겠습니다.

 

 

비트코인의-시가&#44;고가&#44;저가&#44;종가&#44;rsi의-데이터가-출력됨
데이터

 

RSI도 저번에 스토캐스틱을 비교했던 것과 마찬가지로 1시간 전의 값을 비교하겠습니다.

현재 1시간 전의 값은 39.63입니다.

트레이딩뷰에서의 rsi 값을 봐보겠습니다.

 

 

rsi값이-39.63임
rsi

 

트레이딩뷰에서 rsi 1시간 전의 값이 39.63으로 데이터와 같은 것을 확인할 수 있습니다.

참고) 데이터의 시간과 다른 것은 세계시간관 한국시간이 차이 나기 때문임.

 

 


보조지표 rsi에 대해 구현해 보았습니다. rsi도 트레이딩을 할 때 정말 많이 쓰이는 지표 중에 하나로 알고 있습니다. 

나중에 자동매매나 딥러닝을 돌릴 때 도움이 됐으면 좋겠습니다.

댓글