일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ai
- pyqt6
- 비트코인
- 변동성 기반 지표
- ccxt
- adx
- MACD
- 행동패턴
- RSI
- Python
- frontend
- 디자인패턴
- Design Patterns
- 추세 기반 지표
- 디자인 패턴
- 어댑터 패턴
- behavioral pattern
- 구조패턴
- front-end
- 모멘텀 기반 지표
- 플러터
- pyQT
- Flutter
- 볼린저 밴드
- 오블완
- 소프트웨어공학
- design pattern
- 티스토리챌린지
- LLM
- next.js
변혁적인 삶
[AI | 데이터분석] 3. 모멘텀 기반 지표(RSI, Stochastic Oscillator, CCI) 본문
📊 [AI | 데이터분석] 3. 모멘텀 기반 지표(RSI, Stochastic Oscillator, CCI)
목차
- 1. RSI (Relative Strength Index)
- 2. Stochastic Oscillator
- 3. CCI (Commodity Channel Index)
1. RSI (Relative Strength Index)
RSI(상대 강도 지수)는 가격의 과매수와 과매도 상태를 평가하는 모멘텀 지표로, 0에서 100 사이의 값을 가집니다.
RSI는 보통 다음 기준으로 해석됩니다:
- RSI 70 이상: 과매수 상태 → 매도 신호 가능.
- RSI 30 이하: 과매도 상태 → 매수 신호 가능.
1.1 RSI 공식
RSI는 다음 공식으로 계산됩니다:
$$ \text{RSI} = 100 - \frac{100} {1 + RS} $$
RS(Relative Strength)는 다음과 같이 계산됩니다:
$$ RS = \frac{\text{평균 상승폭}}{\text{평균 하락폭}} $$
1.2 코드 예시
# RSI 계산 함수
def calculate_rsi(data, period=14):
delta = data["close"].diff()
gain = delta.where(delta > 0, 0).rolling(window=period).mean()
loss = -delta.where(delta < 0, 0).rolling(window=period).mean()
rs = gain / loss
rsi = 100 - (100 / (1 + rs))
return rsi
# RSI 계산
df["rsi"] = calculate_rsi(df)
# 결과 출력
print(df[["close", "rsi"]].tail())
1.3 출력 예시
close rsi
95 57300.0 55.6
96 57350.0 57.3
97 57400.0 59.1
98 57320.0 56.8
99 57300.0 54.2
2. Stochastic Oscillator
Stochastic Oscillator는 현재 가격이 일정 기간의 고점과 저점 사이에서 어느 위치에 있는지를 평가하는 지표입니다. 이 지표는 가격이 상승 추세에서는 고점 근처에서, 하락 추세에서는 저점 근처에서 마감되는 경향이 있다는 가정에 기반합니다.
2.1 공식
%K(빠르게 움직이는 단기 지표): $$ \text{%K}= \frac{\text{현재 종가 - 최저가}}{\text{최고가 - 최저가}} × 100 $$
%D(느리게 움직이는 장기 지표): %K의 3일 이동평균.
2.2 코드 예시
# Stochastic Oscillator 계산
low_14 = df["low"].rolling(window=14).min()
high_14 = df["high"].rolling(window=14).max()
df["%K"] = (df["close"] - low_14) / (high_14 - low_14) * 100
df["%D"] = df["%K"].rolling(window=3).mean()
# 결과 출력
print(df[["close", "%K", "%D"]].tail())
2.3 출력 예시
close %K %D
95 57300.0 45.6 50.2
96 57350.0 48.3 47.8
97 57400.0 51.2 48.4
98 57320.0 46.8 48.8
99 57300.0 44.3 47.4
3. CCI (Commodity Channel Index)
CCI는 현재 가격과 평균 가격 간의 차이를 평가하여 과매수와 과매도를 판단합니다.
CCI 값이 100 이상이면 과매수 상태, -100 이하이면 과매도 상태로 간주됩니다.
3.1 공식
$$ \text{CCI} = \frac{\text{TP} - \text{SMA(TP)}}{\text{0.015} × \text{MAD(TP)}} $$
$$ \text{TP(Typical Price)}: \frac{\text{고가 + 저가 + 종가}}{3} $$
3.2 Python 코드
# CCI 계산
df["tp"] = (df["high"] + df["low"] + df["close"]) / 3
df["sma_tp"] = df["tp"].rolling(window=20).mean()
df["mad_tp"] = df["tp"].rolling(window=20).apply(lambda x: pd.Series(x).mad())
df["cci"] = (df["tp"] - df["sma_tp"]) / (0.015 * df["mad_tp"])
# 결과 출력
print(df[["close", "cci"]].tail())
3.3 출력 예시
close cci
95 57300.0 45.3
96 57350.0 50.1
97 57400.0 58.7
98 57320.0 40.2
99 57300.0 35.9
마무리
3부에서는 모멘텀 기반 지표인 RSI, Stochastic Oscillator, CCI를 다뤘습니다. 각 지표는 시장의 과매수 및 과매도 상태를 파악하고, 매수와 매도 신호를 제공합니다. 다음 4부에서는 변동성 및 거래량 지표를 다뤄보겠습니다. 🚀
'AI' 카테고리의 다른 글
[AI | 데이터분석] 5. 종합 매매 전략 설계 (0) | 2024.11.22 |
---|---|
[AI | 데이터분석] 4. 변동성 및 거래량 지표(볼린저 밴드, ATR, Volume Oscillator, OBV) (0) | 2024.11.21 |
[AI | 데이터분석] 2. 추세 기반 지표(MA, MACD, ADX) (0) | 2024.11.19 |
[AI | 데이터분석] 1. 코인 자동 매매 프로그램을 위한 데이터 분석의 기본 (0) | 2024.11.18 |
[AI | 데이터분석] CCXT를 이용한 코인 데이터 수집하기 (1) | 2024.11.14 |