파이썬으로 RSI 계산하기 (업비트(Upbit) Open API 활용)
IT2024. 3. 4. 23:17코인이나 주식에서 트레이딩하는 투자자들은 다양한 기술적 분석 도구를 사용합니다. 분석을 위해 많이 보는 지표 중 RSI(Relative Strength Index, 상대강도지수)는 매우 인기 있는 지표 중 하나입니다.
본 글에서는 RSI의 개념을 설명하고, pyupbit 라이브러리와 업비트 Open API를 활용하여 RSI를 계산하는 방법에 대해 소개합니다.
RSI란?
RSI는 1978년에 J. Welles Wilder가 개발하였으며, 시장의 모멘텀을 분석하는 데 유용합니다. RSI는 0에서 100 사이의 값을 가지며, 특정 자산의 가격 변동성을 측정하는 지표입니다.
일반적으로 RSI 값이 70 이상이면 과매수(overbought) 상태로 가격 하락이 예상되고, 30 이하면 과매도(oversold) 상태로 가격 상승이 예상됩니다.
pyupbit 라이브러리 설치
pyupbit는 업비트 거래소의 API를 파이썬에서 쉽게 사용할 수 있도록 만든 라이브러리입니다. 이 라이브러리를 사용하여 시장의 데이터를 가져와 RSI를 계산을 할 수 있습니다.
우선, pyupbit 라이브러리를 설치합니다
pip install pyupbit
파이썬을 활용하여 RSI 계산
이제 파이썬(Python) 코드를 작성하여 RSI를 계산해 보겠습니다
import pyupbit
def calculate_rsi(symbol, period=14):
# 업비트에서 가상화폐의 일봉 데이터를 조회
df = pyupbit.get_ohlcv(symbol, interval=interval, count=250)
# 가격 변동을 계산
delta = df['close'].diff()
delta = delta[1:]
# 상승분과 하락분을 분리
gain = delta.clip(lower=0)
loss = delta.clip(upper=0).abs()
# 평균 상승분과 평균 하락분을 계산
avg_gain = gain.ewm(alpha=1 / period).mean()
avg_loss = loss.ewm(alpha=1 / period).mean()
# RS와 RSI를 계산
rs = avg_gain / avg_loss
rsi = 100.0 - (100.0 / (1.0 + rs))
return rsi[-1]
# 비트코인의 RSI
symbol = "KRW-BTC"
rsi = calculate_rsi(symbol)
print(f"{symbol} RSI: {rsi}")

pyupbit.get_ohlcv함수를 사용해, 계산하고 싶은 코인 심볼의 일봉 데이터를 가져옵니다..diff()메서드로 가격 변동을 계산하고,.where()메서드로 상승분과 하락분을 구분합니다.ewm(...).mean()메서드로 지정된 기간(period) 동안의 평균 상승분과 하락분을 계산합니다.- 마지막으로, 상대강도(
RS)를 구하고 상대강도로RSI를 계산합니다.
위와 같이 함수로 만들어두고, symbol 값만 대입하여 여러가지 코인의 RSI를 계산할 수 있습니다.
결론
RSI는 트레이딩에서 중요한 기술적 분석 도구로, 과매수 또는 과매도 상태인지를 판단하는 데 유용합니다. RSI를 계산하여 과매도 일때 매수, 과매수일때 매도하는 방식으로 트레이딩 봇을 만들 수도 있습니다.
관련 글
업비트 Open API 신청하는 방법 가이드 (키 발급)
업비트 Open API 키 발급 가상화폐 거래소 업비트(Upbit)의 Open API를 사용하기 위해서는 API 호출을 위한 키 값을 발급받아야 합니다. 본 글에서는 키 값을 발급 받는 방법에 대해 하나씩 소개합니다.
bluemiv.tistory.com
python과 pyupbit로 호가 주문 취소하기
pyupbit 라이브러리 설치pyupbit는 업비트 거래소의 API를 파이썬에서 쉽게 사용할 수 있도록 만든 라이브러리입니다. 본 글에서는 해당 라이브러리를 사용하여 주문을 취소하는 메서드를 구현하도
bluemiv.tistory.com
'IT' 카테고리의 다른 글
| python과 pyupbit로 호가 주문 취소하기 (0) | 2024.05.03 |
|---|---|
| Media Stream 정의와 Streaming 기술 요소 (0) | 2024.05.02 |
| Kohya_ss를 이용하여 LoRA 트레이닝 (Stable Diffusion) (1) | 2024.02.12 |
| EUC-KR와 CP949 인코딩 (한글 인코딩) (0) | 2024.02.02 |
| MacOS에 쉽게 여러 버전의 JDK 관리하는 방법 (0) | 2024.01.01 |
IT 기술에 대한 글을 주로 작성하고, 일상 내용, 맛집/숙박/제품 리뷰 등 여러가지 주제를작성하는 블로그입니다. 티스토리 커스텀 스킨도 개발하고 있으니 관심있으신분은 Berry Skin을 검색바랍니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!