-
AWS Lightsail에서 가상화폐 자동매매 봇 돌리기 - 초보자도 이해 가능기타/가상화폐 2021. 9. 19. 16:52반응형
우선 이 글은 초보자를 위해 쓰여졌다. 내가 초보자고, 이거 하나 알아내는 데도 정말 많은 노력이 들었기 때문에
나랑 비슷한 수준인 사람들이 구글링 좀 덜하고 자동매매 돌릴 수 있었으면 해서 썼다.
굳이 서버를 이용하는 이유
컴퓨터를 항상 켜둘 수는 없고, 항상 켜두더라도 그게 24시간 제대로 작동할 거라는 보장이 없기 때문이다.
하필이며 내가 자고 있을 때 인터넷 연결 문제로 포지션 진입은 했는데 청산이 되지 않았다고 해보자.
오버나잇한 포지션에서 얼마나 무시무시한 일이 일어날 수 있을지는 가상화폐에 투자해본 사람은 모두 알 것이다.
한달에 한번 정도는 시장이 발작을 일으키며 미친듯이 떨어지고,
어제까지만 해도 수익에 기뻐하다가도 하룻밤 사이에 모든 수익이 다 날아가는 게 가상화폐 시장이다.
그래서 웹서버를 이용해야 한다.
라이트세일이란
돈 받고 서버를 임대해주는 서비스다. 간단하게 구성되어 있고, 가벼운 목적으로 사용하는 사람들에게 적합하다.
최소 요금이 월 3.5달러고 3개월간은 무료다. 자동매매를 돌리는 사람들은 3.5달러로도 충분할 것이다.
1년 무료라든지 가벼운 용도에 한해서는 완전 무료인 서비스들도 있지만,
비전문가 입장에서도 정말 쉽게 할 수 있는 건 라이트세일인 것 같다.
내가 여러개 시도해봤는데 성공한 게 이것밖에 없다.
https://lightsail.aws.amazon.com/
인스턴스 생성
가입 후 인스턴스 생성으로 들어가 OS ONLY로 우분투 서버를 만들어주면 된다.
요금제를 선택하고나면 인스턴스가 만들어지고 자동으로 실행된다.
30초 정도 기다리면 접속할 수 있게된다. 빨간 화살표가 가르키는 부분을 누르면 된다.
라이브러리 설치
서버를 실행하면 터미널 화면이 나와서 당황스러울 것이다. 나도 그렇긴 한데 사람들이 알려주는대로만 하면 큰 문제 없다.
파이썬에서 라이브러리를 설치할 때는 터미널에서 pip install ---- 이런식으로 많이들 했을 것이다.
그런데 aws의 우분투에는 라이브러리 설치를 도와주는 pip가 설치되어있지 않아서 그걸 먼저 설치해줘야 한다.
그리고 설치를 위해서는 패키지 목록부터 업데이트 해야한다.
sudo apt update # 패키지 목록 업데이트 sudo apt install python3-pip # pip3 설치
이렇게 pip3를 설치한 후에는 라이브러리를 평소처럼 설치할 수 있게된다.
자동매매를 하는 사람은 아마 아래의 세 라이브러리를 깔아야 할 것이다.
각자의 코드 파일에서 사용하는 라이브러리를 설치해주자.
pip3 install ccxt # 라이브러리 설치 pip3 install pandas pip3 install schedule
코드 파일 업로드
이제 코드를 실행하기만 하면 된다. 그런데 코드 파일은 어디서 구해야 하는가?
깃허브에 올린 뒤 업로드하는 방법이 있고, 서버로 직접 업로드하는 방법이 있다.
나는 깃허브를 쓸 줄 모르기 때문에 직접 업로드하는 방법으로 했다.
이때 업로드를 도와주는 프로그램이 FileZilla다.
설치한 후 파일 -> 사이트 관리자로 들어가자(맥의 경우 커맨드 + s로 실행).
여기서 서버의 ip와 키 파일이 필요하다. ip는 인스턴트의 목록에서 쉽게 확인이 가능하다.
키 파일은 라이트세일의 Account탭에 들어가서 SSH Kyes에서 다운로드 받을 수 있다.
이게 접속시의 인증키 역할을 한다.
이제 사이트 관리자의 설정을 하면 된다
0. New site 클릭
1. 프로토콜 : SFTP
2. 호스트 : 우분투 서버의 IP. 인스턴스의 목록에서 확인 가능
3. 사용자 : 마음대로. ubuntu라고 입력해도 된다
4. 키 파일 : 위에서 다운로드한 키 파일 선택
다 설정한 뒤에 연결을 누르면 이제 파일을 업로드할 수 있는 상태가 된다.
자신이 가지고 있는 .py 파일을 업로드하면 된다.
코드의 실행
터미널에서 ls를 입력하면 자신이 업로드한 파일의 목록이 나온다
auto_trade.py라는 파일을 실행하고 싶다면,
python3 auto_trade.py
와 같이 입력하면 코드를 실행한다. 그런데 별다른 반복 설정이 없다면 1회만 실행하고 종료된다.
그래서 반복처리가 필요하다.
1. while문을 이용해서 계속 실행되게 해주거나
2. 실시간으로 모니터링할 필요가 없는 경우, 지정된 시간에 실행되도록 time 혹은 schedule 라이브러리를 이용한다.
그런데 이렇게 하더라도, 우분투 서버의 창을 닫으면 코드의 실행이 중단된다.
세션이 끊어지면 실행이 중단되도록 되어있기 때문이다.
그러므로, 코드를 실행할 때는 다음과 같이 입력해서 항상 실행되게 해줘야 한다.
nohup python3 auto_trade.py &
이렇게하면 코드가 항상 실행되는데, 이를 중단하기 위해서는
ps -ef # 실행 중인 프로그램 조회
를 입력하여 자신이 실행한 파일의 PID를 알아내고 (두 번째 열에 나오는 숫자다)
kill -9 PID # PID의 위치에 숫자 입력
와 같이 입력해주면 실행이 종료된다.
이정도만 알아도 웹서버에서 자동매매를 돌리는 데 큰 문제는 없는 것 같다.
반응형'기타 > 가상화폐' 카테고리의 다른 글
[파이썬] Historical Correlation(상관관계 추이) 계산하기 (0) 2021.11.25 [파이썬] 업비트 인덱스 UBCI 크롤링하기 (0) 2021.11.23 FTX 거래소 API 이용하기 - 펀딩피 불러오기 (0) 2021.09.13 파이썬으로 바이낸스에서 데이터 크롤링하기 (1) 2021.07.11 가상화폐 알고리즘 투자, 헤이비트 2달 투자후기 (1) 2021.06.06