2. 해외선물/2-2. 해외선물 알고리즘 연구

(해외선물 자동매매 알고리즘) (2) rsi 보조지표의 알고리즘 관련

봄이오네 2023. 11. 7. 08:01
반응형
목 차
1. 들어가며
2. 사전설명
3. 내용 설명
   1) 엑셀의 2번째 줄에서 틀고정을 하자
   2) 불필요한 내용은 삭제한다.
   3) 진입을 위한 확인사항은 1분전의 rsi이다.
   4) 진입점, 고가, 저가를 구해보자
   5) 승/패를 기록해보자.
   6) 상단에 3줄 정도 "줄 삽입"을 한다.
4. 승률 계산해보기
5. 마치며

 

1. 들어가며

지난 글에서는 해외선물 알고리즘의 개념과 "가정사항"에 대해 알아보았다. 알고리즘이라고 해서 큰 의미는 없다. 반복되는 패턴을 알고리즘이라고 하면 될 것 같다. 가정사항은 상당히 많았다. 어디에서 진입할지, 진입후 보유시간, 수익/손절가 설정 등 생각보다 고려해야 하는 내용이 많다는 내용을 설명하는 정도였다.
 
이번 글에서는 필자가 가장 선호하는 보조지표 중 하나인 rsi 관련 알고리즘 설정 관련해서 알아보고자 한다.
 


2. 사전설명

rsi는 종가의 상대적 움직임을 백분율로 나타낸 지표이다. 대개는 rsi 30이하일 때는 과매도 상태로 long 진입, 70이상 때는 과매수 상태로 short진입으로 배운다. 과연 이게 맞을까? 결론부터 말하면, 위에서 말한 rsi 30이하일 때 long진입, rsi 70이상일 때 short 진입은 이론상 맞는 말이겠지만, 실전에서 적용하는 것은 곤란해 보인다.
 
< 그림1 >에서 확인해보자. 미니 나스닥(NQZ23)의 10월 28일(토) 03:00~05:59분의 1분봉 차트이다. 03:45분 최고가 14,284.75, rsi는 63.59이며 04:40분 최저가 14,209.75이고 rsi는 34.88이다. rsi 보조지표를 30이하 long, 70이상 short으로 설정하였다면, 03:00~04:40분 동안은 진입을 하지 않는 내용이다.
 
< 그림1 >에는 표기되지 않았지만 04:59분 rsi는 69.65 → 05:00분 rsi는 75.17으로 05시에 처음으로 rsi가 70을 돌파하였다. 05:00분 최고가(14281.5)에서 short 진입하였을 때, 수익이 발생하였겠는가? 계속 횡보를 거치고 있다. 필자의 생각에 05:00분 최고가로 short 진입하였다고 하더라도, "청산"이 안되고 오버나잇(over-night)이 되었을 가능성이 농후하다.
 

그림1. 미니 나스닥(NQZ23)의 10월 28일(토) 03:00~05:59분의 1분봉 차트

 


3. 내용 설명

1분봉 받는 내용은 앞에서 많이 설명하였다. 링크(https://springcoming.tistory.com/198)를 참고하자.
< 그림1 >의 미니 나스닥(NQZ23)의 1분봉의 원본을 첨부한다. 원본에 설명한 내용을 연습을 하면 될 거 같다.

1. 미니 나스닥(NQZ23) 1분봉_231028 (원본)
0.12MB

 
알아보고자 하는 것은 2023년 10월 28일(토), 03:00~05:59분 rsi 보조지표 설정으로 알고리즘을 만들 경우, 수익을 확신할 수 없다는 것을 보여주는 것이다.
 

1) 엑셀의 2번째 줄에서 틀고정을 하자

엑셀의 2번째 줄에서 틀고정을 하려고 한다. 2번째 줄 전체를 선택하자. 2번째 줄(①)을 마우스 좌클릭하여 전부 선택한다. 엑셀의 경로는 메뉴 > 보기 > 틀고정 > 틀고정을 누르면, 2번째 줄이 틀고정이 된다.
 
틀고정을 하는 이유? 1줄의 일자, 시간, 시가~종가 등 맨 윗줄의 내용(구분)을 확인하기 위함이다.
 

그림2-1. 엑셀의 2번째 줄에서 "틀고정"을 하자.

 

2) 불필요한 내용은 삭제한다.

첨부한 엑셀의 G열(종가 단순 5) ~ X열(단순 120 거래량)까지 삭제한다. 그리고 rsi 지표가 없는 2줄~15줄은 삭제한다.
 

그림2-2. rsi 외 불필요한 내용은 삭제한다.

rsi 보조지표가 없는 G열의 2줄~15줄은 삭제한다.
< 그림2-2 >의 G열은 지표가 없는 줄은 삭제하기 전이며, < 그림2-3 >은 삭제한 후의 내용이다. < 그림2-2 >의 B2가 20:00:00이며, < 그림2-3 >의 B2는 20:14:00인 것을 확인할 수 있다.
 

그림2-3. rsi가 기재되지 않는 줄은 삭제한다.

 
 

3) 진입을 위한 확인사항은 1분전의 rsi이다.

< 그림2 >의 i열부터 승률을 알아보기 위해 내용을 작성할 것이다. i열에는 진입 전 우리가 확인해야 하는 것은 1분전의 rsi이다. G2셀에 있는 RSI 40을 i3셀에 넣는 방법은 i3에 " =b2 "를 넣어주면 된다.
 

그림2-4. 1분전의 rsi를 현재시간에 넣어준다.

 

4) 진입점을 j열, 60분내 최고가를 k열, 60분내 최저가를 L열에 넣어준다.

진입점 : 현재시간의 현재가(시가)이므로, J3셀에는 " = C3 "을 넣어준다.
60분내 최고가 : K3셀에 " = max(d3 : d62)를 넣어준다.
60분내 최저가 : L3셀에 " = min(e3 : e62)를 넣어준다.
 
여기서 주의할 것은 max, min을 해준 모수는 60개이다. 60개가 아니면 결과의 왜곡이 발생하는 점이 있어 삭제할 필요가 있다.
 

그림2-5. 575줄을 확인해보면, 모수(60개)가 충분하지 않다.

 
< 그림2-6 >에서 확인가능하듯, 모수는 60개인 것은 528줄까지이다. 529줄~ 이후는 삭제한다. (모수가 60개가 안된다)

그림2-6. 528줄까지만 모수가 60개이다. 529줄 이하는 삭제 필요

 
삭제한 후의 데이터는 < 그림2-7 >과 같다.

그림2-7. 모수가 60개가 안되는 i열~L열의 529줄 이상의 줄은 삭제하였다.

 

5) 승/패를 기록해보자.

간단한 계산을 위해 "최고가-진입"이 "진입-최저가"보다 크면 롱수익이라고 하고, 반대의 경우를 숏수익이라고 하자.

  • (최고가 - 진입) > (진입-최저가)이면, 롱수익
  • (최고가 - 진입) < (진입-최저가)이면, 숏수익

먼저는 진입가 대비로 각각을 계산해보자. N열(K열최고가 - J열진입점), O열(J열진입점 - L열최저가)로 계산된다.
 
우리가 지금까지 한 작업은 Q열(롱/숏 수익)을 구하기 위함이다. 1열에 필터를 걸어준다.
 

그림2-8. 롱/숏 수익에 해당하는지 확인하는 화면

 

6) 상단에 3줄 정도 "줄 삽입"을 한다.

줄 삽입을 하는 이유는 승률을 구하기 위함이다.

그림2-9. 상단에 3줄 정도를 줄 삽입을 해준다.

 
지금까지 작업한 엑셀파일은 아래와 같다.

2. 미니 나스닥(NQZ23) 1분봉_231028 (변경)
0.07MB

 


4. 승률 계산해보기

우리는 rsi 지표의 30이하, 70이상일 때의 승률을 알고 싶다.
엑셀의 J4셀(1분전의 RSI)에서 필터 > 숫자필터 > (" 작거나 같음 " or "크거나 같음")을 클릭한다.
 
30이하 롱일 때 수익/손실을 알고 싶다면, "작거나 같음"으로 클릭한다.

그림3-1. 1분전의 rsi를 확인하고 진입하고자 한다.

 
1분전의 rsi가 30이하인 경우, 11개가 해당하는데, 롱수익 4개, 숏수익 7개이다. 즉, rsi 30이하라고 해서, long 진입한 경우, 손실날 가능성이 더 높다. G열을 보면, 수익(N열)이 날수도 있지만, 손실(O열)도 46.26p, 55.25p 등으로 발생될 수 있다. 시장 상황에 따라 유연하게 매매하자.
 

그림3-2. 1분전의 rsi 30이하인 경우로 필터조회한 경우, 롱은 4개, 숏은 7개이다.


5. 마치며

지금까지 1분전의 rsi가 30이하, 70이상일 때의 승률을 계산해 보았다. 물론 위에서 설명한 것처럼 단순하게 계산되지는 않을 것이다. 시장은 항상 살아움직이는 생물체처럼 변한기 때문일 것이다.
 
필자가 말하고 싶은 것은, 이 글을 읽는 사람들이 알고리즘 설정을 할 때, 한가지 보조지표만으로 진입 알고리즘을 구성하는게 얼마나 위험한지 보여주기 위함이다.
 
우리가 알고있는 rsi 30이하일 때 과매도이므로 long, rsi 70이상일 때 과매수이므로 short이라는 내용 하나만으로 해외선물이  매매하는가 통하지 않는다. 여러 보조지표를 고려해도 결과는 거의 비슷한거 같다. ㅠㅠ
 
그래도 꾸준히 고민해 보아야 할 문제로 보인다. 알고리즘 만드는 것을 계속 공부하고, 패턴을 만들어봐야겠다.
 
 

반응형