2. 해외선물/2-1. 해외선물 자동매매 연구

(키움증권 해외선물 자동매매 파이썬) 22. 진입/청산 알고리즘 구상하기(完)

봄이오네 2023. 10. 29. 08:04
반응형

 

목 차
1. 들어가며
2. 사전설명
3. 엑셀로 수익/손실 검증하기
4. 마치며

 

1. 들어가며

지난 글에서는 매매내역을 엑셀로 내보내는 코드를 알아보았다. 사용자 취향에 따라 엑셀이든, csv이든 매매내역을 보관하고 싶다면, 한번 정도는 시도해 볼만한 "매매내역의 엑셀 보내기"의 내용이었을 것이다.
 
이번 글에서는 진입/청산 알고리즘을 구상하는 방법에 대해 설명해 보고자 한다.
 
이번 글(22번)을 마지막으로 1번 글부터 진행하였던, 해외선물 자동매매 코드에 대한 설명을 마무리하려고 한다. 앞에서도 언급하였지만 해선 자동매매에 대한 글은 꾸준히 쓸 것이다. 이렇게 앞의 내용을 이어가면서 글을 쓰는 것을 마무리 할 것이라는 뜻이다.
 
주식, 해외선물, 암호화폐 등 사람들 간의 거래에 의해 가격이 결정되는 구조에서는 저렴할 때 구입해서, 비쌀 때 팔면 수익이 나는 구조(long 기준)이다. 그래서 사람들은 끊임없이 차트를 보고, 봉(bong)의 세기에 관심이 있다.
 
흔히들 최고점 및 최저점은 신의 영역(God Knows)이라고 한다. 알고리즘을 구상할 때, 지나치게 최고점/최저점에 얽매일 필요는 없어보인다. 왜? 시장은 유동적으로 변한다. 지난번 수익을 냈던 진입점이, 다음날에는 손실을 줄 수도 있다.
 
우리가 일반적으로 아는 rsi, macd, 볼린저밴드, 장대양봉/음봉 등 우리가 활용할 수 있는 지표는 많다. 보조지표를 맹목적으로 믿는 것도 문제지만, 지나치게 경시하는 것도 문제라고 생각한다. 사용자에 따라 적당한 균형 관점을 가지면서 보조지표를 활용하자.
 
필자는 알고리즘 등을 공개하지 않을 예정이다. 알고리즘이 만들어지는 과정에 관심이 있다. 그래서 그동안 보조지표, 시간관리 등을 설명한 것이다.
 


2. 사전설명

알고리즘이라는 단어를 계속 써야하나... 살짝 고민과 부담이 된다. 그래도 지금껏 사용해왔으니, 이 글을 읽는 분들께 양해를 구하고 "알고리즘"이라는 용어를 쓰고자 한다.
 

1) 엑셀로 알고리즘 만들때 필요한 1분봉 모음

엑셀로 알고리즘을 만들기 위해서는 1분봉 데이터가 필요하다. 필자는 미니 나스닥의 1분봉 데이터 모으는 것에 굉장히 관심이 많다. 나스닥은 3개월에 한번씩 "대표 월물"이 바뀐다. 12월물은 9.8(금)부터 10.21(금)까지 다운로드 받고 있다.
    ※ 나스닥 1분봉 다운로드 받는 방법 : https://springcoming.tistory.com/198
 
알고리즘을 만드려면 무엇인가 구체적 데이터에 기반한 뚜렷한 근거가 있어야 한다. 그 근거로 필자는 1분봉 모음을 활용한다. 참고로 필자는 9월물의 1분봉도 가지고 있다. 데이터는 많을수록 좋다. 9월물 → 12월물로 대표월물이 바뀌었을 때, 9월물 수익 알고리즘이 12월물 수익 알고리즘이 적용될지 안될지 모르는 일이기 때문이다. 즉, 수익패턴의 변경을 인지하기 위해서라도 1분봉은 꾸준히 모으는 습관을 들이자.
 
지난번에 이런 패턴으로 수익을 냈다면, 이번에도 동일하게 수익을 낼 것인가? 9.8~10.21일까지 이 패턴은 몇 번 출현했으며, 수익 확률(=수익횟수/전체 출현횟수)은 몇 퍼센트인가? 이 다음에 출현했을 때도 수익이 날 것인가?
 
위의 고민들이 수익으로 안내하는 발전적인 생각들일 것이다. 영화에서 보듯이 최저점에서 진입해서 최고점에서 청산하는 일은... 평범한 우리에겐 발생하지 않는다는 사실만 기억하자. 치열하게 고민하고, 수익을 얻을 수 있도록 해야 한다.
 

2) 파이썬으로 코드 작성

지난 글(~21번 시간관리)까지 파이썬(파이참)에서 코드 작성하는 방법을 알아보았다. 엑셀로 알고리즘을 만들고, 파이참에 코드를 작성하여야 진정한 자동매매라고 생각한다.
 
알고리즘에 따른 코드 작성이 상당히 외로운 작업이다. 나는 100% 확신을 가지고 코드를 작성하여 자동매매를 실행했는데, 그 다음날 거짓말처럼 손실이 발생하는 사례가 허다하게 발생한다. 이럴 땐 괜히 스스로가 바보같고, 답없는 자동매매를 계속 해야 하나... 회의가 들기도 한다.
 
그래도 해외선물 자동매매를 한다고 마음먹었으면, 알고리즘을 계속 발굴하고 프로그램을 돌려서 수익낼 생각을 해야 한다.
 


3. 엑셀로 수익/손실 검증하기

엑셀을 통해 알고리즘이 만드는 과정을 간략히 설명하려고 한다. 1분전의 rsi가 30이하일 때를 가정하고 알고리즘을 만들어보자. 
 
5가지 정도 가정해 보자. 진입에 대한 판단은 ①1분전의 rsi, ②진입은 현재가격의 시장가, ③long진입, ④60분 이내 최고가 수익실현 및 최저가 손실 실현, ⑤RSI 보조지표만 고려하는 등 기본적으로 가정해야 설명이 가능하다.

그림1. 미니 나스닥(NQZ23)의 10월 21일 03:16분 RSI는 29.82이다.

 
필자가 위에서 가정한대로 < 그림1 >에서 03:16분 RSI가 30이하일 때, 03:17분의 시장가(시가)로 진입했다고 생각해보자.
< 그림2 >의 H9셀을 보자. 진입가는 1분전 봉(0316)의 다음봉(0317)의 시가이므로 14724.5(C10)이다.
60분 이내 최고값은 MAX(D11:D70)으로 구할 수 있다. "60분 이내 최고가 - long진입가"를 하면 I9셀에 나타나듯 8.5p의 수익만 얻는다.
 
이에 비해, 60분 이내 최저값 MIN(E11:E70)으로 구할 수 있다. "long진입가 - 60분 이내 최저가"는 J9셀에서 38p의 손실이 예상된다.
 
만약 사용자가 수익 30p, 손실 30p로 코드를 설정하였다면, 손실 38p가 발생하는 것이다. 알고리즘이라고 해봤자 대단한 내용이 있는 것은 아니다. 오해없길 바란다.
 
< 그림2 >의 M열에서 확인가능 하듯, rsi가 30이하인데도, long 진입을 했으면 J열에서 확인 가능하듯 계속 손실이 발생하는 구조이다. → 결론은 RSI 30이하일 때 long 진입은 자제하자는 것이다.
 
< 그림2 >의 M열에서 오름차순/내림차순을 통해, RSI 값에 따라 K열의 롱/숏 수익이 바뀌는 것을 알 수 있다.
 
※ 아래 파일은 미니 나스닥(NQZ23)의 23년 10월 21일(토) 03:16분 1분봉 데이터이다.

NQZ23 (231021, 0316 RSI).xlsx
0.02MB

 
그렇다고 결론을 함부러 내면 안된다. RSI 30이하일 때는 숏 진입을 해야 하나??? 이렇게 고민하는 것은 최악의 판단이다. 무슨 말을 하고 싶냐고 물어본다면, RSI가 30이하일 때 long 진입은 자제해야 하는구나... 또는 시장의 상황에 따라 숏 진입도 고려해야 하는구나.... 이렇게 결론이 나야 한다. (즉, 이럴 때는 투자를 자제해야 하는구나... 이렇게 결론이 났으면 좋겠다)
 

그림2. 미니 나스닥(NQZ23)의 10월21일 03:17분 long진입을 하였으면 숏손실을 보았을 것이다.

 
 


4. 마치며

사람들이 자동매매를 구상하는 이유는 수동매매(손매매)를 하는 본인의 실력에 회의를 느꼈기 때문이다. 수익이 난다면 하루종일 차트만 볼 수 있겠지만, 직장생활 등 개인마다 사정이 있다는 점을 고려하면, 해외선물에 올인하는 것도 한계가 있다.
 
해외선물 매매를 통해 수익을 내는 유형은 주식의 신(神), 투자고수, 자동매매 시스템을 잘 구축한 평범인 등 3가지 유형으로 나누어진다고 생각한다. 신(神)은 만날 일이 없다. 투자고수는 그 비법을 절대 알려주지 않는다. 인터넷 어디를 찾아보아도 투자고수의 비법공유는 찾아보기 힘들다. "투자고수"인척 하는 사람들이 강의 판매를 위해 꼬득이는 듯한 내용만 본것 같다.
 
하기야, 입장을 바꿔서 내가 투자고수라면 "투자의 필살기"를 인터넷에 공유할리가 없지 않겠는가? 공유하는 순간 "필살기"가 아닌, "상식적인 정보"가 되어 버린다. 너도나도 그 방법대로 투자할 것이 극명한데, 무슨 이득도 없이 인터넷에 본인의 "투자 필살기"를 공유하겠는가?
 
내 주변에 주식의 신(神)도, 투자고수도 없다. 또한, 해선 수동매매(손매매)에도 자신없으면... 내가 할 수 있는건 알고리즘을 연구하여 자동매매를 할 수 밖에 없다는 결론에 이르렀다.
 
그래서 자동매매에 관심을 가지게 되었고, 여기에 올인한 게 2년이 넘어간다. 3년 동안 올인해보고, 안되면 현실에 충실하자는 생각으로 치열하게 매달렸다. 내년(2024년 10월)이 결심한 3년의 마지막이다. 초조해 하지 말자. 대신 치열하게 진입 알고리즘에 대해 연구하고 고민하자! ^^
 

반응형