안녕하세요~Zemba입니다. 지난번 포스팅에서 예고했듯이 MFI의 기본이 되는 지표 RSI에 대해서 공부해보려고 합니다.
이미 사용해보고 공부도 했지만 기록을 남기기 위해서 한번더 포스팅을 해보려고 합니다. :)
우선 RSI란? 상대강도지수라도 불리고 있으며 상승 압력과 하락 압력의 상대적인 강도를 나타내는 지표라고 합니다. 강도는 0~100까지의 수치로 표시되면 음수는 없습니다.
차트의 형태는 다음과 같습니다.
가장 하단에 RSI지표가 보이실겁니다. 점선으로 30/70 영역이 표시가 되어있으며 그래프가 왔다 갔다 하는 모습을 볼 수 있습니다.
일반적으로 30일 경우에 과매도 구간의 신호로 판단하며 70일 경우 과매수 구간의 신호로 판단합니다. 그래서 30일 때 매수하고 70일 때 매도하는 전략을 사용하는 사람들이 많습니다. (이건 일반적인 사례)
다른 전략들도 다수 존재합니다. 앞서 말씀드린 것과같이 30/70구간에서 매수/매도를 하는 거래방법과 70부터 상승이 확실하게 시작되기 때문에 70을 상향 돌파할 때 매수하며 70선을 하향 돌파할 때 매도하는 전략을 적용하시는 분도 있습니다. 또한 주가와 RSI의 수치를 확인하며 다이버전스의 기법으로 매수/매도를 적용하시는 분도 있습니다.(요 부분은 잘 정리된 블로그들이 많기 때문에 따로 정리하진 않겠습니다.)
그럼 RSI를 구하는 방법을 살펴 보겠습니다.
RS = AU / AD
RSI = 100 - (100 / (1 + RS))
- AU : 지난 14일 동안의 이득의 합 / 14
- AD : 지난 14일 동안의 하락의 합 / 14
그러면 코드로 RSI를 구현해보겠습니다.
def rsi(ohlcv: pd.DataFrame, period: int = 14):
delta = ohlcv["close"].diff(1)
up, down = delta.copy(), delta.copy()
up[up < 0] = 0
down[down > 0] = 0
_gain = up.ewm(com=(period - 1), min_periods=period).mean()
_loss = down.abs().ewm(com=(period - 1), min_periods=period).mean()
RS = _gain / _loss
return pd.Series(100 - (100 / (1 + RS)), name="RSI")
주기는 기본 14일로 계산하지만 변경 가능하기 때문에 파라미터로 받을 수 있도록 설정합니다. 그리고 상승, 하락의 이득의 합을 계산하여 RSI값을 구합니다. RSI는 자료가 정말 많이서 적당히 여기까지만 포스팅해도 될 것 같습니다 ㅎㅎ
역시나 이렇게 꾸준히 만들면 저에게 언젠가는 큰 도움이 될 것입니다. 매매법은 일반적인 부분들을 적어놓은 것이니 실제 거래에 대해서는 본인이 전략에 맞도록 잘 판단하여 거래하시길 바랍니다.
다음 포스팅에서 만나요~ ㅎ
'경제공부' 카테고리의 다른 글
[Chart Study] MFI(Money Flow Index) (0) | 2022.04.16 |
---|---|
[Chart Study] 일목균형표(ichimoku cloud) (0) | 2022.04.03 |
[Chart Study] 볼린저밴드(Bollinger Bands) (0) | 2022.03.30 |
[Chart Study] 이동평균선(moving average) (0) | 2022.03.27 |
[Chart Study] 차트의 형태 및 구성요소 (0) | 2022.03.15 |
댓글