Daum 블로그
암호화폐 상대강도지수 파이선 알고리듬:Python Cryptocurency RSI(Relative Strength Index)
암호화폐 상대강도지수 파이선 알고리듬:Python Cryptocurency RSI(Relative Strength Index)
바이낸스 (Binance) 의 오픈 (public) API 를 사용하여 그래픽 지원 라이브러리인 Plotly 를 사용하여 인터액티브 한 가격 캔들 커브를 작성하였다 . 오픈 API 를 상대강도지수(RSI) 통해 입수되는 암호화폐의 시가 , 저가 , 고가 및 종가 데이터 중에서 종가 정보를 사용하여 앞서의 코드 이후에 셀을 추가하여 RSI( 상대강도지수 ) 를 계산해보자 .
J. Welles Wilder 가 창시한 상대강도지수 (Relative Strength Index) RSI 는 증권이나 코인의 가격 움직임을 측정하기 위한 대표적인 모멘텀 지표 (indicator) 이다 . 0~100 사이의 값을 가지는 RSI 는 그 값이 70 이상이면 과매수 (overbought) 상태이며 30 이하이면 과매도 (oversold) 상태로 정의한다 .
1978 년에 출판한 Wilder 의 저서 “New Concepts in Technical Trading Systems” 에서 Parabolic SAR, Average True Range, 및 DAX(Directional MOvement Concepts) 지표에 관한 내용을 포함하고 있다 . 본격적인 컴퓨터 시대 이전에 개발되었음에도 불구하고 시간에 따른 테스트에도 살아남아 지금은 대중적으로 잘 알려지게 되었다 .
Wilder 의 RSI 공식을 잘 이해하기 위해서는 시계열 데이터의 SMA(Simple Moving Average: 단순이동평균 ) 과 EMA(Exponential Moving Average) 상대강도지수(RSI) 에 관해서 사전 이해가 필요하다 . SMA 는 말 그대로 순차적인 N 개의 데이터의 산술 평균을 뜻한다 . 현재 시점의 시계열 데이터는 그에 앞선 시계열 데이터들로부터의 균일한 가중치 영향을 받게끔 산술 평균 처리한다 . 반면에 EMA 는 최근 시계열 데이터에 더 큰 가중치가 부여된다 .
특히 EMA 는 증권 가격 트렌드 분석에서 단기 50 일선과 장기 200 일선과의 교차 Golden Cross 또는 Death 출현에 따른 트렌드의 역전 (reversal) 여부를 판단을 위한 기술적 분석에 흔히 사용되는 좀 지연이 심한 지표 (lagging indicator) 로 사용된다 .
EMA 계산 공식을 살펴보자 .
일반적으로 Smoothing 은 2.0 으로 취한다 . Days 값은 이동평균 계산에서 주로 5, 10, 50, 200 이 주로 사용 된다 . 공식의 뒷 부분 괄호친 부분의 값은 대체로 1.0 보다 아주 작은 값이 되기 쉽다 . 한편 앞 뒷부분 박스 친 부분들을 합하면 1.0 이 된다 . 이 공식은 엔지니어링에서 흔히 사용되는 저주파 필터링 공식과 동일한 모양을 보여준다 .
다음 그래프는 비트코인 1 분봉 챠트 사례이다 . 이동평균들이 서서히 변동되는 부드러운 곡선임에 반해 매도 매수를 결정하기 위한 RSI 곡선은 캔들의 급격한 변동을 잘 반영하고 있음을 알 수 있다 . 특히 4 시간봉 또는 일본의 RSI 곡선에서 70% 이상은 과매수 상태임을 뜻하고 30% 이하는 과매도 상태를 의미한다고 하므로 매도 및 매수의 판단 조건으로 사용된다 .
캔들의 기민한 움직임을 잘 추적할 수 있는 RSI 지표를 계산해 보도록 하자 . RSI 지표를 계산하기 위해서는 2 종류의 평균값 즉 SMMA(U,n) 과 SMMA(D,n) 이 필요하다 . n 은 지금 현재를 기준으로 그 앞의 연속된 한 주기의 캔들 개수를 뜻한다 . U(Up) 는 n 개의 캔들 중 연이은 2 개의 캔들을 대상으로 상승이면 그 차이 값을 , 하강이면 0 을 취하도록 하고 모두 합산한 후에 n 으로 나누어 평균값을 구한다 . D(Down) 는 그 반대이다 . 즉 n 개의 캔들 신호를 대상으로 (n-1) 개의 SMMA(U,n) 과 SMMA(D,n) 값을 계산할 수 있다 . SMMA 는 Simplified or Modified Moving Average 의 약어이다 . 이 2 종류의 평균값을 사용하여 RS(Relative Strength) 를 정의하자 .
RS 를 사용하여 상대강도지표 RSI 는 다음과 같이 표현된다 .
처음 RSI 계산을 시작함에 있어서 자신을 포함하는 n 개의 캔들 신호에 대한 U(Up) 값과 D(Down) 값이 준비되어 있지 않다 . 즉 초기 데이터들이 아예 없음을 뜻한다 . 초기치 문제를 풀어야 할 경우 임의 값을 줄 수도 있으나 RSI 계산에 있어서는 첫 번째 단계만큼은 SMA(Simple Moving Average) 를 사용하는 것 하나의 방법이다 . 즉 초기치 문제에서는 첫 출발 단계에서 만큼은 어느 정도 오차 값이 있을 수밖에 없으나 캔들 데이터수가 늘어남에 따라 제대로 RSI 값들을 계산할 수 있을 것이다 . 이런 방법으로 첫 단계 계산이 이루어지게 되면 그 다음 단계에서부터는 즉 i 와 (i-1) 상태에 대해서 다음과 같이 SMMA(U,n) 와 SMMA(D,n) 계산이 가능해진다 . 이 계산 공식은 상대강도지수(RSI) 상대강도지수(RSI) 파이선에서 ewm.avg() 명령어를 사용하여 계산이 가능하다 . 하지만 예를 들어 n=14 를 적용할 경우 13 개까지는 n=14 를 충족하지 못하므로 계산 자체가 불가능하기에 파이선 ewm.avg() 상대강도지수(RSI) 를 사용할 경우 NaN 이 출력 될 수밖에 없음에 유의하자 .
한편 이 공식을 잘 살펴보면 계수들의 합이 1.0 이 되는 저주파 필터 공식임을 알 수 있다 .
RSI 계산을 위한 computeRSI(data, time_window) 함수의 코드를 살펴보자 .
파이선 명령 또는 pandas 명령이기도 한 diff() 와 dropna() 를 알아보자 .
- diff(axis=n, periods=m): 지정 축 (axis) 을 기준으로 m 번째 간격을 띤 요소와 차이 계산
axis=0 은 row, axis=1 은 column 을 뜻한다 .
- dropna(): 매트릭스의 row 에서 Nat, None, NaN 이 들어 있는 항을 제거한다 .
즉 pandas DataFrame 인 data 에 대해서 periods=1 로 차이 값을 계산하되 그 결과가 Nat, None, NaN 이면 제외한다 . data 의 요소 수가 500 개라면 diff 는 차이 값 계산 이므로 499 개 가 된다 . 본 블로그 끝 부분에 첨부된 computeRSI 상대강도지수(RSI) 코드는 다음 블로그 사이트에서 일부 참조하였다 .
Predicting XRP (Ripple) Cryptocurrency Price with Python and Machine Learning
바이낸스 API 를 사용하여 엔드포인트에서 반환 받는 데이터 수는 pandas DataFrame 기준 500 개로 고정 되어 있다 . 이 중에서 종가 (Close) 만 뽑아내어 RSI 를 계산해보자 . RSI 계산에 필요한 차이값은 499 개가 된다 .
다음의 그림은 RSI 계산 과정 이해를 위해 변수 값들을 중간에 출력해 보았다 .
이 499 개의 차이 값을 대상으로 위와 같이 명령어 ewm.avg() 을 사용하여 up_chg_avg 와 down_chg_avg 를 계산한다 . 파라메터 값 time_window = 14 가 사용된다 .
아울러 다음의 파라메터 설명을 참조하자 . 즉 Default 인 adjust=False 이면 앞서 기술된 SMMA 계산 공식이 적용될 수 있으며 adjust=True 면 α =(1/(1+com)) 의 고차 항들까지 고려가 된다 .
이 명령에 따라 14 번째 데이터를 사용하여 15 번째 SMMA(U,14) 를 계산해 보자 . 14 번째 데이터는 위 수치계산 사례에서 두 번째 컬럼에서의 diff 출력 값 중 + 에 해당하는 값들을 14 개 합하여 평균한 SMA 값이다 . 15 번째 SMMA 는 다음 계산을 통해 확인이 가능하다 .
동일한 방식으로 Up 과 Down SMMA 값 계산이 이루어지면 RSI 계산이 이루어질 수 있다 . 계산이 완료된 RSI 컬럼 데이터를 따로 뜯어내어 별도로 pandas DataFrame 인 r_df 를 준비한 후 matplotlib 의 iplot 기능을 사용하여 그래프를 출력하자 . 그래프 속성이 캔들이 아닌 라인 그래프인 만큼 matplotlib 사용이 편리하다 . 전체 500 개 데이터 위치 중 그래프 전반 부 13 개 NaN 만큼 비어 있음을 확인하자 .
#compute RSI after exeucuting cryptocurrency_etc.ipynb
def computeRSI ( data , time_window ):
diff = data.diff( 1 ).dropna() # diff in one field(one day)
print (diff[: 15 ]) #499개 출력
#this preservers dimensions off diff values
up_chg = 0 * diff
down_chg = 0 * diff
# up change is equal to the positive difference, otherwise equal to zero
up_chg[diff > 0 ] = diff[ diff> 0 ]
# down change is equal to negative deifference, otherwise equal to zero
# we set 상대강도지수(RSI) com=time_window-1 so we get decay alpha=1/time_window
up_chg_avg = up_chg.ewm(com=time_window -1 , min_periods=time_window, adjust= False ).mean()
down_chg_avg = down_chg.ewm(com=time_window -1 , min_periods=time_window, adjust= False ).mean()
상대강도지수(RSI)
2018. 11. 26. 23:41
-
본문 폰트 크기 조정 본문 폰트 크기 작게 보기 본문 폰트 크기 크게 보기 가
잘 지내셨나요? 지난주에 MACD와 히스토그램에 대해서 설명했었는데요.
오늘은 상대강도지수(RSI: Relative Strength Index)에 대해서 소개해보려고 합니다. 호불호가 갈리긴 하지만 단기 트레이딩이나 추세 강도 분석에 있어서 자주 쓰이는 편이고, 자신의 것으로 만든다면 큰 도움이 될 것이 분명합니다.
RSI는 엘레스 윌더 주니어가 개발한 지표로, 현재는 거의 모든 트레이딩 차트에서 사용할 수 있는 도구입니다. 투자에 앞서 주가의 흐름과 추세에 대한 강도를 직관적으로 보여주는 지표로써 선행 혹은 동행 지표로 자주 사용합니다.
주가의 흐름이 잔잔할 때는 특별한 신호를 발생하지는 않지만, 변동폭이 크고 요동칠 때 과매수와 과매도 상태를 수치로 제시하기 때문에 매매 결정에 도움을 줍니다. 과도한 상승 추세가 이어질 경우 매수를 자제하고, 과매도 상태일 때는 매도보다는 매수포지션 진입을 고려하도록 의사결정에 유용합니다.
위의 공식으로 계산한 RSI는 0과 100사이를 오가게 됩니다. 산출기간 동안의 주가 변동폭에 따라 RSI는 위아래로 움직이게 되고, 이 값들을 선으로 이어서 보기 편하게 세팅을 합니다. 보통 단기는 산출기간을 7~9일로 사용하지만 비트코인에서 가장 자주 쓰이는 기간은 14일을 기준으로 두고 사용합니다.
어떻게 보면 이동평균선과 같은 맥락입니다. 현재의 주가의 변동폭을 평균 변동폭과 비교하여 수치로 나타내는 것으로 0에 가까울수록 하방으로 변동이 큰 상태이며, 100에 가까울수록 상방으로 큰 변동이 발생한 것입니다.
RSI 선은 0과 100사이를 오가게 됩니다. 대체로 30과 70에 평행한 두 선을 긋고 이를 시그널 선이라고 합니다. 대부분은 시그널 선 사이에서 RSI가 생성이 되는데, 시그널선을 넘어가는 순간 과매도, 과매수로 정의를 합니다.
연이어 발생한 하락 때문에 현재 비트코인의 일봉차트 RSI는 20이하로 생성이 되고 있습니다. 시그널 선 구간은 상황에 맞게 조정을 할 수 있습니다. 상승장에서는 40/80을 사용하기도 하며, 하락장에서는 20/60의 수준을 사용하기도 합니다. 최근 9월과 10월 동안 횡보기간이 길게 형성되었기 때문에 RSI의 하락이 더욱 대두되는 모습으로 보입니다.
RSI는 다른 지표들보다 고전적인 기술로 사용하면 잘 어울립니다. 봉 차트의 패턴과, 추세선 그리고 지지선과 저항 등을 사용하면 적중률이 높습니다. 예를 들면 저항선과 지지선 근처에서 시그널선 안쪽으로 들어오는 RSI의 움직임 방향에 따라 매수, 매도를 진행하면 보다 안정적으로 수익을 낼 수 있습니다.
뿐만 아니라 단기 트레이딩 시에도 RSI는 요긴하게 사용될 수 있습니다. 특히 암호화 화폐 시장에서는 자주 발생하는 급상승 종목의 경우에 한에서 15분봉 RSI를 사용합니다. 과매수 상태를 파악하여 매도 타점을 파악하거나, 재진입을 고려할 때 도움이 됩니다.
사실 오늘 소개하려고 했던 건 추세전환 분석에서 주로 사용하는 다이버전스(Divergence)였습니다. 다이버전스에 사용하는 보조지표는 여러 가지가 있긴 한데, 대표적으로 MACD 히스토그램과 RSI가 쓰입니다. 그래서 선행으로 RSI를 설명할 필요가 있다고 생각해서 포스팅했습니다!
다이버전스 분석이 아니더라도 RSI 자체로도 잘 사용한다면 훌륭한 보조지표 쓸 수 있습니다.
자신만의 기준과 방법을 찾아낼 필요가 있으며, 횡보구간을 이탈하고 추세 초기 부분에서 가짜 신호를 자주 상대강도지수(RSI) 발생시키기 때문에 조기에 진입하거나 매도하는 경우가 많으니 조심해야 합니다.
단일 지표로만 사용하기보다는 패턴과 추세선, 저항선과 지지선을 적극 활용하는 방법이 적중률과 수익률이 높을 것으로 사료됩니다.
오늘 배운 내용이 도움이 되셨나요? 다음 시간에 포스팅할 내용에 앞서서 꼭 연습해 둘 필요가 있다고 생각하는데요 ^^
혹시 이해가 잘 안되거나 부족한 설명이 있다고 생각하시면 댓글로 문의하시거나 오픈 카톡 방에 오셔서 질문하셔도 됩니다. 또한 다양한 정보와 새로 업데이트되는 교육자료를 보고 싶으시다면, 댓글에 달린 카톡 방에서 편하게 소식 전해 받으세요~
Relative Strength Index (RSI)
설명
웰즈 와일더가 개발한 상대강도지수(RSI)는 가격 이동 속도와 변화를 측정하는 모멘텀 오실레이터다. RSI는 0 에서 100 사이에서 왔다 갔다하는 값입니다. 전통적으로 RSI는 70 이상이면 과매수되고 30 미만이면 과매도 된 것으로 간주됩니다. 신호는 divergence와 Failure swings(역추세전환 실패)을 찾아 생성할 수 있습니다. RSI를 사용하여 일반적인 추세를 상대강도지수(RSI) 식별할 수도 있습니다.
* divergence: 주가의 움직임이 RSI와 맞지 않고, 방향이 서로 다른 상태 (일탈)를 말한다.
* Failure swing: 가격선과 RSI선이 서로 갈라지는 RSI 다이버전스의 순간이다. 이는 특히 시장이 과매수 또는 과매도 영역에 있을 때 현재 모멘텀의 감소를 나타낸다.
차트 1: RSI 표시기
이 표시기의 작동 방식
RSI는 70 이상에서는 과매수, 30 미만에서는 과매도으로 간주됩니다. 이러한 기존 레벨은 필요에 따라 주가에 더 적합하도록 조정할 수도 있습니다. 예를 들어, 주가 수준이 반복적으로 과매수 수준인 70에 도달하는 경우 이 수준을 80으로 조정할 수 있습니다.
참고: 강한 추세에서는 RSI가 장기간 과매도 또는 과매수 상태를 유지할 수 있습니다.
또한 RSI는 종종 이중 상단 및 하단 및 추세선과 같은 기본 가격 차트에 표시되지 않을 수 있는 차트 패턴을 형성 하기도 합니다. 그럴 때는 해당RSI에서 지지 또는 저항선을 찾아야 합니다.
상승장세나 강세장세에서는 RSI가 40~90대를 유지하며 40~50대가 지지선 역할 을 하는 경향이 있다. 하락세 또는 약세장세 동안 RSI는 50-60 구역이 저항으로 작용하면서 10-60 범위에 머무르는 경향 이 있습니다. 이러한 범위는 RSI 설정과 주가 또는 시장의 기본 동향의 강도에 따라 달라집니다.
만약 기초 가격이 RSI에 의해 확인되지 않은 새로운 고저가 현상을 만든다면, 이러한 차이는 가격 반전의 신호탄이 될 수 있다. RSI가 더 낮은 높이로 이동한 다음 이전 낮은 아래로 하강하면 Top Swing Failure가 발생한 것입니다. RSI가 더 낮은 값을 만든 다음 이전 값보다 위로 이동하면 Bottom Swing Failure가 발생한 것입니다.
차트 2: RSI 표시기
계산
RSI는 상당히 간단한 공식이지만 예시 페이지 없이는 상대강도지수(RSI) 설명하기 어렵습니다. 추가 계산 정보는 Wilder의 책을 참조하십시오. 기본 공식은 다음과 같습니다.
RSI = 100 - [100 / (1 + (상향 가격 변동 평균 / 하향 가격 변동 평균)]
좋은 설명을 하는 유튜브 영상이 있어서 소개하고자 한다.
종목찾기 예시
Finviz 종목 스크리너에서 종목 찾기
위의 예시는 내가 종목을 찾을 때 주로 찾는 방법이다.
Country는 USA, P/E(PER), Forward PER은 수익이 있는 (0 이상) 회사로, PEG는 1 이하 (PEG 지표 보는 방법 참고: https://jooniyar.tistory.com/80) , ROE는 10% 이상으로 전반적으로 돈을 벌고 있는 회사로 filtering 하였다. 그리고 오늘 배운 RSI 값은 40 으로 설정했다. (0730 기준 30에 해당하는 주식은 없었다.) 이 종목 스크리너의 아이디어는 회사는 돈을 버는데 단기적인 악재로 과매도 된 회사들로 주식을 매수하기 좋은 타이밍으로 본다는 것이다.
25개의 회사가 검색되었고 모두 최근 한달간 다소 하락된 주식들이다. P/E로 정렬한 결과가 위와 같다.
이중에서 잘알고 있고, 현재 경제 상황에서 유리할 것 같은 섹터에서 좋은 회사를 찾아서 공부해보는 방법이다.
개인적으로 경제 상대강도지수(RSI) 재개로 17번의 아베크롬비와 같은 의류브랜드의 매출 성장이 기대되지만, 이렇게 검색했을 때의 주의할 점은 왜 과매도 되었는가를 잘 이해해야 된다. 최근에 어떤 악재가 있었는지 찾아보고, 분기내에 복구할 수 있는 내용인지 알아봐야겠다.
상대강도지수(RSI)
잠깐! 현재 Internet Explorer 8이하 버전을 이용중이십니다. 최신 브라우저(Browser) 사용을 권장드립니다!
- 기사공유하기
- 프린트
- 메일보내기
- 글씨키우기
- 가나다라마바사
- 가나다라마바사
- 가나다라마바사
- 가나다라마바사
- 가나다라마바사
- 가나다라마바사
- 윤시윤 기자
- 승인 2022.02.04 08:53
- 댓글 0
- 기사공유하기
- 프린트
- 메일보내기
- 글씨키우기
- 가나다라마바사
- 가나다라마바사
- 가나다라마바사
- 가나다라마바사
- 가나다라마바사
- 가나다라마바사
(서울=연합인포맥스) 윤시윤 기자 = 코스피가 기술적 분석상 과매도권을 벗어나면서2,650 정도에서 바닥권 통과 가능성에 대한 기대가 나오고 있다.
4일 연합인포맥스(화면번호 상대강도지수(RSI) 3011)에 따르면 코스피 상대강도지수(RSI)는 전일 32.72를 나타내 과매도권(30)을 웃돌았다.
코스피 차트에서 RSI는 지난 1월 21일 이후 30선 아래로 내려서며 과매도권에 진입한 후 설 연휴 전인 지난달 27일 13.40 수준을 나타내 극도의 패닉을 나타낸 바 있다.
RSI는 지수의 상승 및 하락 압력의 상대 강도를 측정하는 기술적 지표로 통상적으로 30 이하를 과매도, 70 이상을 과매수 구간으로 본다.
특히 이번 반등이 미국 기술주 반등에 따른 것인 만큼 국내 증권가에서도 반도체를 중심으로 한 대장주의 목표주가 상향이 이어졌다.
전일 하루에만 하나금융투자, 유안타증권, 키움증권, 메리츠증권, 이베스트투자증권 등 5개의 증권사가 SK하이닉스 목표주가를 한꺼번에 올렸다.
가장 높은 목표주가를 제시한 하나금융투자는 기존 16만 3천 원에서 17만 원으로 4.2% 상향 조정했다. 이는 목표 시가 총액 124조 원을 의미한다.
전일 SK하이닉스 종가(12만 4천원) 기준으로 37%의 추가 상승 여력이 있는 셈이다.
증시 전문가들은 점차 코스피가 과매도권 신호를 벗어나고 있는 만큼 2,650선에서 증시 조정의 바닥을 지날 것으로 보고 있다.
바닥권 탐색이 끝나가면서 반도체 대장주들의 상대강도지수(RSI) 반등도 전망된다.
김용구 삼성증권 연구원은 "코스피 2,650선이 현 증시 조정의 진바닥이자 올해 연저점일 수 있다"며 "한국 수출 선방과 기업 실적 모멘텀이 바닥을 통과한 상대강도지수(RSI) 가운데 동시다발적으로 확인되는 국내외 증시 과매도 시그널이 그 근거"라고 말했다.
김 연구원은 이어 "미국 S&P 내에서의 대장주가 견조한 가운데 시장은 이미 연방준비제도(Fed·연준)의 연내 5회 금리 인상 가능성을 선반영했다"며 "2월을 분기로 안정화에 나설 내부 수급 환경이 나타날 것"이라고 덧붙이기도 했다.
NH투자증권은 관심 업종으로 반도체, 자동차, 의류, 유통, 신재생, 원전 등을 꼽았다.
김영환 NH투자증권 연구원은 "알파벳, 애플, 마이크로소프트, 아마존 등 모두 시장 전망치를 상회하는 실적을 발표해 주식 시장에 온기를 불어넣었다"면서도 "설 연휴 상대강도지수(RSI) 기간 미국 증시 반등이 일단락돼 한국 증시의 기술적 반등폭은 기대에 미치지 못해 눈치보기 장세로 전환될 수 있다"고 말했다.
RSI 상향 신호
Rsi를 사용하는 거래의 주요 원칙은 지표가 과매 수 및 과매도 영역을 떠날 때 거래해야한다는 것입니다.
표시선이 과매도 영역을 벗어나면 거래를 열 수 있습니다.
이것은 지표가 30 미만이고 상승하기 시작하고 위쪽으로 교차하며 계속 상승하는 상황입니다.
무역의 진입 점은 30 을 넘는 순간이 될 것입니다.
copyright © 2021 Elio International. All Rights Reserved
Address : FLAT/RM B5/F GAYLORD COMMERCIAL BUILDING114-118 LOCKHART ROAD HK HONG KONG
Risk Warning : Trading CFDS on margin carries a high level of risk, and may not be suitable for all investors. Before deciding to trade foreign exchange, you should carefully consider your investment objectives, level of experience, and risk appetite. There is a possibility that you may sustain a loss of some or all of your investment and therefore you should not invest money that you cannot afford to lose. You should be aware of all the risks associated with foreign exchange trading, and seek advice from an independent financial advisor if you have any doubts.
0 개 댓글