암호화폐 자동매매 프로젝트

변상현·2022년 2월 16일
0

자동매매

목록 보기
1/3
post-thumbnail

글을 시작하며...

내 통장에 잠자고 있는 돈이 너무 아깝다는 생각이 들었다. 그래서 적금식으로 얼마는 주식을 넣고 얼마는 코인을 해보기로 했다. 하지만 일을 하면서 코인을 하기에는 너무 힘들기 때문에 프로그램을 만들어 보기로 했다.

알고리즘

처음에는 단순히 몇 퍼 오르면 팔고 내리면 사고 단순한 로직을 생각을 했었는데, 찾아보니 변동성 돌파 전략이라는 간단하지만 괜찮은 알고리즘이 있었다. (괜찮다는거지 수익을 보장하지 않는다 그랬다면 누구나 다 부자가...)

기본 개념은 간단하다. 전날 고가 - 저가, 이것을 변동폭이라 부르고 저 변동폭에 k를 곱한다. 이를 변동성이라 부른다. 오늘 시가 + 변동성 이 금액에 도달하면, 오늘 장 중에는 탄력을 받아 더 오를것이라는 가정하에 매수를 한다. 그리고 그 날 종가에 매도를 하는 것이다.

언어

알고리즘은 정했고, 이제 개발 언어를 정할 차례이다. 당연히 JavaScript로 진행을 하려고 했다. 그러나 업비트의 JS 패키지가 영 맘에 들지 않았다. 사람들이 왜 파이썬으로 하는지 알 정도였다. 사실 API로 내가 그냥 만들어서 해도 되지만, 굳이 좋은게 있고 파이썬을 할 줄 모르는것도 아닌데 싶었다. 아나콘다를 깔고 Jupyter Notebook을 이용해 시작했다.

시작

주로 파이스탁조코딩 님의 영상을 많이 참조했다.
우선 백테스팅이란 것을 진행했는데, 알고리즘을 가지고 과거 데이터에서는 어떤 결과를 냈는지 테스트해보는 작업이였다. 백테스팅을 하면서 기준 시간대, k값 등을 변화시키며 진행했다. 하면 할 수록 빨리 만들고 싶은 마음은 커져만 갔다.

구현

마찬가지로 구현까지도 위 채널의 영상을 참조하며 만들고, 내 입맛에 맞게 리팩토링하고 로직도 짰다. 우선은 정말 베이직한 알고리즘으로 구현을 했고, Docker에 올려 동작을 해보고 간단하게 로컬환경에 minikube를 올려 테스트도 진행했다. 그런데 단순 도커 이미지로 동작 시킬때는 잘만 찍히던 로그가 minikube에 올라가니 안찍히기 시작했다.
해결방법을 찾아보니 python -u main.py저 -u 를 추가해주면 되는 것이였다. 사실 그럴 필요도 없었지만, Thread로 돌리고 있었는데 이것 또한 없애줘야 했다.
어쨋든 우여곡절 끝에 테스트를 마무리를 하고, 라즈베리파이에 k3s를 올려 동작시킨 다음 이틀 정도 돌리고 껐다.

회고

사실 애초에 기본 알고리즘은 취약한 곳이 많고, 프로그램 자체의 오류나 이런것들을 실제 돌려가며 잡기 위해 테스트 형식으로 돌려 봤던 것이여서 종료를 했다. 결정적으로는 왜 인지는 모르겠지만 현재 상태를 3분 간격으로 찍는데, 있어야 할 목표가가 어느 순간 null로 찍히고 있었다. 뭔가 잘못 됐다는 생각에 그냥 껐다.

애초에 기본 알고리즘의 취약점은 전날 너무 많이 오르고 오늘 오르긴 오르는데 변동성만큼 오르지 않는 경우, 애초에 진입할 코인 또는 시점을 잘못 고르는 경우, 시간대에 따라 흥하는 장이 있고 망하는 장이 있는데 그것에 대한 테스팅, 그리고 알림 등 여러 많은 아이디어가 떠올라서 그것들을 보완하고 다시 돌릴 생각이다.

마치며...

이 프로그램 또한 주식처럼 그냥 주구장창 돌릴 생각이다. 물론 여윳돈으로 하는 것이고, 추후에 이게 좀 진행이 어느정도 된다면 플랫폼화 해서 웹으로도 개발을 할 생각이다.

profile
놀자

0개의 댓글