비트코인 자동매매 오라클 서버에 프로그램 올리기
코드를 다 짰고
제 컴에서 잘 돌아가는것을 확인했다면
이제는 서버에 올릴 차례입니다.
서버에 올리지 않으면
집에 있는 컴을 24시간 켜두어야합니다.
전기세가 뭐 많이 나오지 않을 수는 있는데,
그래도 서버에 올리고 컴을 딱 끄고
알아서 돌아가게하는것이 뭔가 있어보이지요.
제가 참고하는 책 두개인
IT비전공자를 위한 돈버는 파이썬 코딩은
AWS를 이용하게 되어있었고,
파이썬을 이용한 비트코인 자동매매 에서는
iwinv라는 서버를 이용하게 되어있습니다.
다만 AWS는 1년간 무료고
이후 과금이 될 수 있다는 이야기가 있어
저는 검색하다가 오라클을 사용하기로 했고,
아래 블로그를 참고했습니다.
오라클에 프로그램을 올리기 위해서는
좀 복잡한 절차가 필요한데,
큰 덩어리로 나눠 정리하면 이렇습니다.
1. Putty 설치
2. Oracle 가입 및 서버 생성
3. 업비트에 연결 및 프로그램 올려서 돌리기
저 블로그가 너무나 잘되어있어서
저 이상으로 설명을 쓸 자신은 없네요.
Putty 설치
Putty가 뭐냐, 제가 이해한바로는
리눅스를 사용할 수 있게 해주는
프로그램인것같습니다.
일단 이 글을 따라서 putty를 설치합니다.
설치한 후에는 putty gen을 실행해서
무슨 key를 생성하고 하드에 저장하고
그 경로를 기억해놓습니다.
그 암호 key와 putty는 오라클 서버가 생성되면
쓸테니, 잠시 기다립니다.
Oracle서버가입 및 생성
다음으로는 이 글을 따라서 오라클에 가입을 합니다.
가입하는와중에 별 문제는 없는데
너무 자주 연타하거나
한글로 정보를 입력하지만 않으면되고
저 블로그에 써있지만
Linux가 아닌
Canonical Ubuntu 로 가입을 해야한다고 합니다
왜그런지는 모르겠습니다만.
여기의 create a VM instance를 눌러서
차근차근 만들다보면,
메일이 오게되고 그 메일을 눌러서 활성화를하면
좀 기다리면 주황색에서 녹색으로 바뀝니다.
그리고 나면
맨 위의 메인화면에서 instance라는 항목을 누르면
돌아가는 인스턴스 두개가 보입니다.
저는 아래있는건 리눅스로 잘못만들어서
하나 더만들었어요.
오라클은 100g까지 쓸수있게 해줍니다.
처음에 잘못만든걸 50G로 설정해서
용량이 남아있기에
그 다음에 제대로된걸 만들 수 있었습니다
저기 있는 public IP를 적어놓습니다.
기억이 필요합니다.
인스턴스를눌러보면
이렇게 보이는데
마찬가지로 여기서도 IP가 보이죠.
저 IP를 기억을 해놔야합니다.
저 IP를 이제 두군데다 입력을 해야하는데
복사한 후
업비트 오픈 API
Putty
이 두군데에 입력해야합니다.
업비트 오픈 API는,
저 허용 IP주소에 추가하는 것입니다.
일전에는 API를 발급받으면서
필수로 IP를 넣어야하니 내 컴퓨터의 IP를 넣었다면
이제는 클라우드 서버의 IP를 넣어야합니다.
즉 이 IP에서 업비트에 접속을 하도록 허용한다
라는 의미기때문입니다.
IP두개는 어떻게 넣느냐 라는 것에는
100.00.000.00 , 200.00.000.00 이런식으로
콤마로 연결해주면 들어가게 됩니다.
Putty 에 추가하는 방법은
저 host name에다가 입력해주면 됩니다.
그리고 아래의 saved sessions에
아무 이름이나 하나 추가해주고 save를 누른 다음,
왼편 connections의 SSH를 누릅니다.
그러면
이런 화면이 뜨게되고,
그 아래의 Auth를 누르면
이런 화면이 뜹니다.
여기서 Browse를 눌러야하는데요
Browse를 눌러서 무엇하느냐?
아까 Putty gen에서 생성했던 key를 찾아야합니다.
이렇게 말이죠.
추가한 후 Open을 누르면
이런 새까만 창이 뜹니다.
거기에 오라클 인스턴스의 Username을 넣고
암호를 넣어주면
이렇게 화면이 뜨는데,
내가 나의 오라클 서버에 접속했다는 이야기입니다.
프로그램 올려서 돌리기
이제 저 오라클서버에,
내 프로그래밍 파일,
즉 파이썬 파일을 올리고 돌려야합니다.
하지만 지금 저 서버는 아무런 기능이 없잖아요?
즉 파이썬 라이브러리가 안깔려있단말이죠.
파이썬 만 깔려있어요.
무슨 업비트 API접속하는 키 기능이고뭐고
이런게 없단말입니다.
그래서 몇가지 입력해줘야합니다.
이 블로그에 잘 나와있습니다.
(위에 링크를 갖다놨는데 또갖고왔네요)
그래서, 저 블로그에 따르면
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nano
sudo apt-get install python3
sudo apt-get install python3-pip
sudo apt-get install tmux
sudo pip3 install pyupbit
sudo pip3 install schedule
sudo pip3 install access
sudo pip3 install secret
이걸 한번씩 다 해야한다고 합니다.
중간중간 Y N 묻는거 있으면 Y를 잘 쳐주구요
띄어쓰기 잘해야됩니다.
특히 – 로 연결된 부분
띄고 안띄고 중요합니다.
다 하고 나면 셋팅이 완료된겁니다.
이제 진짜로 파이썬 파일을 업로드해서 돌려야하죠.
파이썬 파일을 올리는 방법은 두 가지가 있습니다.
첫번째는 직접 파일을 만들어서 치는 방법이고
두번째는 깃허브에 올려놓고 가져오는 방법입니다.
일단은 깃허브에 가져오든 직접 만들든
폴더가 있어야겠죠
폴더를 만들고 이동하는 명령어는
그옛날 MS-DOS를 썼던 사람이라면 익숙합니다
ls : (엘에스) 현재 디렉토리안의 것 보기
cd : change directory
cd .. : 한칸 상위 디렉토리 이동
cd [디렉토리명] : 디렉토리로 이동
md [디렉토리명] : 디렉토리 만들기
응용하면, md upbit라고 하면 upbit라는 디렉토리가
만들어지고, 그 다음 ls를 쳐보면
이렇게 upbit라는 디렉토리가 있다고 나옵니다.
그럼 cd upbit라고 치면
upbit 디렉토리로 움직이는 것이구요.
이동한 후 ls를 쳐보면
bitcoin.py파일과, output.log 파일이 있네요.
파일 직접 만들기
py파일을 직접 만들 수 있습니다.
nano라는 명령어를 치면 됩니다.
지금 저 bitcoin.py는 변동성돌파 매매 파일이고
이것을 상승장 판별까지 더하는
즉 이동평균을 반영한 파일을 하나 더 만들어보겠습니다.
이렇게 명령어를 치면
입력창이 나오는데요
다른 곳에서 코드를 컨트롤 c 컨트롤 v하려고해도
안먹습니다.
이걸 어떻게한다…
다 칠수도없고….
컨트롤 C를 해서 복사한 후
마우스 우클릭을 하면
이렇게 붙여넣어집니다.
컨트롤 X를 눌러서 나올 수 있습니다.
나올때 저장해야하구요.
그런 다음 ls를 쳐보면
이렇게 파일이 하나 더 생긴 것을 볼 수 있습니다.
깃허브를 이용해서 가져오기
자주 안할거면 이렇게 파일을 직접 만들어도되는데
자주 이거저거 할거라면
깃허브에 파일을 올려놓고,
그 링크를 통해서 가져오는게 좋습니다.
가져오는 방법은
깃허브의 저 녹색 코드 를 누르면 나오는
주소를 복사합니다.
그리고 저 콘솔창에
git clone 뒤에 입력해줍니다.
유튜버 조코딩님의 코드를 가져와보겠습니다.
디렉토리가 하나 생겼죠
pyupbit-autotrade라고.
파일을 싹다 불러온 것을 볼 수 있습니다.
아마 그냥 바로 실행은 안될거에요.
왜냐면 access key를 넣어야 작동할거거든요.
내용을 고쳐줘야된단 얘긴데,
vim + 파일명을 칩니다.
vim bitcoinAutoTradewithMA.py를 고쳐보죠.
이렇게 치면
그러면 이렇게 들어갈 수 있고,
여기서 수정하려면 insert키를 눌러주면됩니다.
업비트 API의 Access key와 secret key를 넣어주고
ESC를 누른 후
: w q ! 를 순서대로 누르면 나오게 됩니다.
요렇게말이죠.
컴퓨터를 꺼도 자동으로 돌아가게
이제 파일도 올려놨고,
이 파일을 돌리기만 하면 됩니다.
실행하는 방법은
python3 파일명 을 치면 됩니다.
이렇게 치면 시작이 됐고,
무한루프를 도는 코드이기때문에
멈추고싶으면 컨트롤 c를 누르면 됩니다.
하지만 저렇게 실행을 하면,
컴퓨터를 끌 수가 없어요.
우리는 컴퓨터를 꺼도 계속돌아가게 하려고
굳이 이 클라우드에 가입하는 짓을 했는데
이러면 의미가 없죠.
컴퓨터를 꺼도 자동으로 돌아가게 하기위해서
아래 절차를 밟으려 합니다.
1. 별도의 하부 작업 창을 하나 만듬
2. 거기서 nohup을 써서 돌림
별도의 작업 창을 만들기 위해서는
tmux라는 명령어를 치면 됩니다.
그러면 이렇게 깔끔한 새 작업창이 나옵니다.
ubuntu로 접속한 클라우드 서버 안에
새로운 도화지, 연습장이라고 보면 됩니다.
작업 파티션이라고할까…
여기서 돌릴건데요.
nohup이라는걸 써서 돌립니다.
명령어를,
nohup + python3 + 파일명 + > + output.log &
이라고 치면 알아서 돌아갑니다.
오라클 서버에 프로그램 올리기
ignoring input and redirecting stderr to stdout
이라고 이상한 메시지가 뜨면 잘 되는거라고 합니다.
근데 잘 돌아가는지 알수가 없잖아요?
그리고 돌리다가 끊고싶을때가 있잖아요?
그럴때 필요한 명령어가 몇개 있습니다.
tmux : 새로운 tmux창 생성
tmux ls : 현재 돌아가는 tmux 현황
tmux a -t [번호] : 해당 tmux로 이동
ps ax | grep .py : 현재 돌아가는 작업 확인
kill -9 [작업번호] : 작업 프로세스 중단
하나씩 해보겠습니다.
현재 저는 기존의 변동성돌파매매전략이 하나 돌아가고있고
방금 새로 돌린 이동평균을 가미한 변동성돌파까지
총 2개가 돌아가는 중입니다.
타자 칠때 띄어쓰기 정말 조심해야합니다
grep.py라고 치면 못알아먹고 grep .py로 한칸
띄어야 알아먹습니다.
저기 보면 27918번은 그냥 변동성돌파,
그리고 31606번이 방금 돌린
이평선을 가미한 변동성 돌파입니다.
두개 다 돌아갈 필요는 없으니
27918번을 죽여야죠.
죽이고 다시 보면하나만 돌아가고 있음을
알 수 있습니다.
지금 하고있는 tmux session에서 나오고 싶으면
컨트롤 B D 를 눌러주면 됩니다.
그러면 이렇게 다시 나오고
어떤 tmux들이 있는지 보고자하면
리스트를 보고 0번으로 이동하고싶으면
tmux a -t 0 을 입력하면 됩니다.
그러면
들어오면서 자동으로 어떤게 돌아가고 있나
보여주는데,
이렇게 31606이 돌아가고 있음을 보여줍니다.
이로써 컴퓨터를 꺼도
서버에서 알아서 돌아가는
비트코인 매매 프로그램을 만들었습니다.
보완 점
이제 기본은 했습니다.
이게 완성이긴 하지만 목표점에 도달했지만
도끼질을 하는 법을 배웠을 뿐,
나무를 베는건 이제부터입니다.
매매 아이디어를 가다듬고,
가다듬은 아이디어를 코드에 반영해서
다시 클라우드에 올리고,
이 짓을 반복해야 할 듯 합니다.
그래도 뿌듯하네요
뿌듯하긴 한데 막상 해보니까
1년씩이나 밍기적거릴 일이 아니었습니다.
달라붙었으면 일주일이면 했을만한……
일이었는데,
그래도 작년의 저와 지금의 저는
컴퓨터를 다루는게 달라졌으니까
지금의 저니까 할수있고
작년의 저라면 못했을거라고 당당하게 생각하렵니다
모르면 더듬어가며 검색해가며
완성할수 있게 해주신
이름모를 + 유명한
블로거 유튜버 그리고 저자님들
어떻게하는지 영상으로 캡쳐로 알려주시고
코드까지 공유해주셔서 감사합니다.