본문 바로가기

반응형

기록지/비트코인 자동 거래 시스템 만들기

(9)
[비트코인 자동 거래 시스템] LSTM 모델을 활용한 비트코인 가격예측 구현 📊 1. 개요 모델 분석을 진행하는 와중에 너무 좋은 논문을 봤다. 논문은 아래와 같다. 딥러닝을 이용한 비트코인 투자전략의 성과 분석 (저자: 김선웅 국민대학교 비즈니스IT전문대학원 교수) 딥러닝을 이용한 비트코인 투자전략의 성과 분석 최근 암호화폐거래소로 투자자들이 몰리면서 비트코인 가격이 급등락하고 있다. 본 연구의 목적은 딥러닝 모형을 이용하여 비트코인의 가격을 예측하고, 투자전략을 통해 비트코인의 수익성이 www.kci.go.kr 해당 논문을 보면, LSTM을 사용해서 가격을 예측하고, 예측된 가격을 사용하여 거래를 진행하는 내용이다. 나같은 경우 LSTM으로 추세를 확인하는 모델을 일단 만들어 보는 것이 목표였는데 교수님께서 예측된 가격과 실제 가격이 저장되어있는 테이블을 따로 생성하여 Chat ..
[비트코인 자동 거래 시스템] 새로운 알고리즘을 위한 Data 분석 Class 생성!📈 1. 개요 군대를 다녀오니 내 서버에서 24시간 돌아가던 비트코인 자동거래 시스템이 망가져 있었다. 인증 Key와 API 요청값 변경등이 이슈였다. 이런 것들을 변경하고 나니 트레이딩 알고리즘을 조금은 변경하고 싶어졌다. 기존에 너무 간단한 알고리즘을 사용하고 있었기에 조금은 강력한 알고리즘을 적용하고 싶었다. 그런 알고리즘들을 확인해보니 기존의 비트코인에 대한 거래값들이 매우 중요하다는 것을 알게 되었다. 필자가 사용하는 Korbit API에서는 과거의 값들을 제공해주는 API가 없기 때문에 매일 분마다 Korbit에서 제공하는 데이터를 저장해 사용하기로 했다. 몇일동안 계속 서버에 저장한다면 사용할만한 데이터가 나올 것이다. 24시간 서버에서 데이터를 수집할 생각이다. 2. 본문 이동평균과 같은 값들..
[비트코인 자동 거래 시스템] 6주차 시스템을 배포할 서버를 구축하자! - (Ubuntu로 서버구축하기) 💾 1. 개요 서버를 구축해야했다. 일단 이 모듈이 모든 날 수익을 낼 수는 없다. 결국 상승장에서 돈을 벌 수 있는 모듈이기 때문이다. 따라서 클라우드 컴퓨팅을 하기에는 금액이 고민되었다. 1분에 한번씩 API를 불러오는 코드를 계속 실행시키며 데이터베이스에 데이터를 생성한다. 만약 수입이 없는 상태에서 클라우드 컴퓨팅을 해야한다면? 어휴... 벌써 한숨이 나왔다. 다행이도 고모가 주신 노트북이 있어서 윈도우를 하나 밀고 Ubuntu를 설치해 개인서버로 사용할 계획을 세웠다. 2. 본문 서버구축의 순서는 다음과 같다. 1.Rufus 다운 2. Ubuntu ISO 다운 3. 부팅 USB 생성 4. 노트북에 설치 - Rufus 다운 Rufus는 USB를 ISO 파일로부터 부팅 가능한 USB로 만들어주는 프로그..
[비트코인 자동 거래 시스템] 5주차 Trading Module을 구현하자! 🎫 1. 개요 퇴사 후 시간이 생겨 비트코인 자동 거래 시스템에 많은 시간을 쓸 수 있었다. 조금은 지체되었던 개발속도를 빠르게 하기 위해 노력하고 있다. 배포와 웹에서 해당 시스템을 trigger할 수 있도록 하기 위해서는 시간이 그렇게 많지 않다. 따라서 친구들을 만나는 시간을 제외하고는 모든 시간을 시스템 개발에 사용하고 있다. 2. 본문 Trading Module을 구현하였다. 해당 모듈의 알고리즘은 간단하다. 1. 현재 가격으로 코인을 산다. 2. 가격이 오르면 코인을 판다. 핵심 알고리즘은 위와 같지만 세부적으로 보면 간단하진 않다. 매수요청을 한 후 매수가 완료되었을 때 매도요청을 해야한다. 이 과정은 1초에 한번씩 계속 실행되어야한다. 그렇다면 조금 더 세부적으로 알고리즘을 작성해보자. 1. ..
[비트코인 자동 거래 시스템] 4주차 Python을 활용한 Mail 자동 전송 시스템 1. 개요 내가 항상 터미널에 들어가서 Python 디렉토리에 저장된 logging 파일을 확인할 수는 없다. 하루하루 결과를 정리해서 전송해주는 시스템이 필요하였고, 비교적으로 구현이 간단한 EMail을 통한 결과 자동 전송 시스템을 작성하였다. 사실 어떤 내용을 담을지 그리고 어떤 템플릿을 사용할지는 정하지 못해서, 간단하게 Text만을 전송할 수 있을정도만 구현하였고 추후에 추가적으로 작성할 계획이다. 2. 본문 Email을 전송해주는 Class를작성하였다. Email은 개인정보가 담겨있기에, Git에는 올려놓지 않았다. 그래서 블로그에 소스코드를 공개하겠다. import smtplib from email.mime.text import MIMEText class Email: def __init__(..
[비트코인 자동 거래 시스템] 3주차 Python을 활용한 MongoDB CRUD 모듈 구현 1. 개요 3주차이다. 사실 가장 걱정한 주차이다. Database를 연결해야했기 때문이다. MongoDB 자체를 처음으로 경험하기 때문에 공부해야할 것이 많았다. 겨우겨우 CRUD 모듈을 구현하기는 했는데, unittest와 같이 개발에 유용한 것들도 같이 공부해서 정말 좋은 경험이었다. 이제 본격적으로 나에게 알림을 주는 Mail 모듈을 구현해보고자 한다. 2. 본문 - MongoDB MongoDB는 정말 간편한 DB임에는 분명하다. 지금까지 사용한 DB는 MySQL, MSSQL과 같은 쿼리문이 복잡한 DB였는데, MongoDB는 놀랍게도 문서형식의 데이터만 넣어주면 알아서 collection에 저장되었다. 내가 공부한건 Collection과 Database의 개념과 CRUD를 구현할 수 있는 쿼리문..
[비트코인 자동 거래 시스템] 문제해결 - 복잡한 시스템을 개발할 때 유용한 unittest frame work 1. 개요 비트코인 자동거래 시스템을 만들던 중 참고했던 책을 보니, 큰 시스템을 만드려면 각 API를 호출하거나 각 기능을 따로 분류하여 모듈 단위로 개발하는 것이 유용하다는 것을 알게 되었다. 전 글을 보면 Korbit API에서 내가 필요한 API의 기능을 각각 실행시키는 모듈을 만드는 것을 알 수 있다. 지금은 Database에 대한 모듈을 작성중인데, CRUD 그리고 연결 부분까지 하면 모듈의 갯수가 꽤나 많아진다는 것이다. 이렇게 되면 많아지는 모듈의 갯수때문에 각각의 모듈을 test하기 힘들게 된다. 지금도 일일이 하나의 Test Class를 만들고 이를 실행하는데 어려움을 겪고 있다. 분명 이러한 문제를 해결할 수 있는 방법이 있을 것이라는 생각을 하고, python에 개발 방법을 찾아보았..
[비트코인 자동 거래 시스템] 2주차 Python을 활용한 코빗 API 메소드 구현 1. 개요 2주차이다. 말이 2주차이지, 사실 1주차를 구현한지 몇일 되지 않았다. 다만 단계별로 기록지를 올리고 싶어 한 단계를 끝내고 글을 써본다. 언어는 Python을 활용하였다. 이유는 특별한 프레임워크를 사용하는 것도 아니고 서버에 자동적으로 실행되어야 하기에 라이브러리가 많고 쉬운 Python을 사용하였다. 2. 본문 2주차에 한 작업은 코빗 API에서 내가 필요할만한 것들을 확인하고 이를 메소드로 불러올 수 있도록 클래스를 작성하였다. 객체지향언어의 힘을 믿기에 각 기능별로 메소드와 Class를 분류하고, 이를 최종적으로 연결하는 작업으로 개발을 진행하기로 하였다. 다음은 내가 작성한 Class이다. 이것은 가장 기본이 되는 메소드 이고, 이 밑에 해당 API별로 각 메소드를 구분하였다. 그..