ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로젝트] TradingBot / 업비트 자동 매매 봇
    개발/프로젝트 2022. 1. 18. 01:21

    원래 굉장히 거창한 목적으로 만들었지만

    기본 기능만 구현하고 멈춰버린 봇......

    https://github.com/LJBang/Coin_Trading_Bot

     

    GitHub - LJBang/Coin_Trading_Bot

    Contribute to LJBang/Coin_Trading_Bot development by creating an account on GitHub.

    github.com


    프로젝트 시작

    2020년 말에 동아리 해커톤에서 뭘 하지 생각하다가 아는 동생이랑 매매봇을 만들기로 했다.  

    처음에는 그냥 api받아와서 뭔가를 하려고 했는데, 쉽지 않았다... 

    계속 찾아보니까 pyupbit라는 라이브러리가 있어서 대충 가격만 받아와서 매매 시뮬레이션만 돌려봤었다.

     

    그러다가 21년 초에 갑자기 코인 붐이 일어나서....

    여러가지 지표를 이용해서 한번 만들어보자! 라고 생각했고, 날잡고 만들었다.

    물론 이때는 지금보다도 더 금융공학적 지식이 없던 시절이라 RSI지표 하나만 사용하는 단순 매매봇이다.


    프로젝트 진행

    일단 먼저 매매기법부터 정했다.

    주식에 비해서 업비트에 올라와있는 코인은 매우 적고,

    그중에서도 KRW로 거래가능한 코인은 더 적으니까 모두 돌면서 계산하고 매매할 수 있을것이라 생각했다.

    따라서 정해진 매매 방법은 다음과 같다.

    1. 단타로 하고 싶으니까 3분봉을 기준으로 잡고 데이터를 불러온다.
    2. 모든 코인을 돌면서 각각의 RSI를 계산한다.
    3. rsi가 n%(30%)이하일때 최소금액 단위로 매수
    4. 코인별로 개별 수익이 +m%이상 이거나 -k% 이하일 경우 매도
    5. 봉이 바뀌어야 하므로 3분 대기

     

    가장 먼저 RSI부터 계산해야 했다.

    일단 15개의 봉 기준으로 증가분과 감소분을 더해 RSI를 계산했다.

    문제는 현재틱 기준으로 15개를 잡고 계산했으므로 최소 정보밖에 없고,

    과거부터 쭉 RSI를 계산해온 업비트의 RSI값과는 차이가 있었다..

    하지만 일단 프로토타입이니까 그대로 진행.

     

    RSI를 계산하고 나서는 그저 기준에 맞춰서 매매만 하면 되므로 간단했다.

    모두 구현 후 로컬에서 while문을 통한 무한 반복으로 정상 작동을 확인했다.

     

    둘째로 해야할 것은 AWS설정.

    자동매매봇이니까 하루종일 돌면서 대신 매매해야하는데, 내 컴퓨터로 돌리고 싶진 않았다.

    AWS사랑해요

    계획은 EC2에 Jupyter notebook을 깔고 그를 계속 켜두는 것이다.

    일단 EC2를 24시간 돌려야 하고, 언제든지 로컬에서 notebook환경에 접속해

    코드나 파라미터들을 바꾸기 위해서 위와 같이 설정해봤다.

     

    ec2를 실행하고, 주피터 노트북 설치까지는 문제없었으나 보안을 생각해야했다.

    가장 먼저 주피터 노트북의 password기능으로 sha-1값으로 된 비밀번호를 만들고, 

    ec2 아이피와 위의 sha-1값을 주피터 노트북의 config.py 파일에 지정해준다.

     

    그리고 마지막으로 ec2컴퓨터에서 주피터노트북을 항상 켜둔다.

    방법은 좀 신기했는데, 일단 주피터 노트북을 켜고, 백그라운드로 빠져나간 뒤, 주피터 노트북의 소유권을 해제하는 것이다. 

    그러면 ec2가 켜진 상태로 주피터가 계속 돌아가게 된다.


    후기

    이렇게 설정을 마치고 한 2주정도 지켜봤었다.

    02/15 - 52,423

    -> 02/22 - 68,921

    꽤 불었는데, 아마 불장이라서 그랬던 것이 아닐까.. 생각해본다.

     

    뭐 금융공학이 원래 크게 버는게 목적이 아니라 절대수익을 목표로 하는것이기 때문에,

    많이 벌었네, 적게 벌었네 할 수는 없지만, 아무튼 ec2 서버비는 벌었던 걸로 기억한다!

     

    언젠가는 이것을 수습해서 좀 더 멋진 친구로 바꾸고 싶은데, 언제가 될진 모르겠다.

    그저 RSI로만 하는것이 아니라 다양한 지표들도 활용해보고, 백테스팅을 해서 알고리즘 검증도 해보고 하고 싶은데,

    공부도 부족하고 마음을 먹기도 힘든것 같다......

     

     

    댓글

Designed by Tistory.