비트코인 트레이딩을 위해 파이썬으로 암호화폐 자동매매 프로그램 smtm을 만들었다. 요구사항 도출부터 설계, 테스트 작성, 개발, 최적화에 이르는 모든 과정을 책으로 엮어서 출간하게 되었다. 내가 쓴 책을 독후감으로 소개하려니 영 기분이 이상하지만, 간단하게 책 소개를 해보려 한다.
책이 도움이 될 사람, 책을 낸 이유
smtm 프로젝트를 시작할 때 출판에 대한 계획은 없었다. 단지, 개발이 너무 진행이 안되어서, 개발 일기처럼 블로그에 글을 쓰기 시작했는데 그것이 계기가 되었다. 블로그에 글을 쓰는 일은 사실 나 자신을 위한 일이기도 하다. 누군가에게 설명하기 위해서는 내용을 잘 알아야 하고, 그 과정에서 해당 지식에 대한 메타 인지적인 지식을 얻을 수 있다. 내가 알고 있는 것과 모르는 것의 범위를 알고, 그 범위 내에서 설명해야 할 내용을 정리하는 과정이 중요하기 때문이다. 파이썬으로 암호화폐 트레이딩 프로그램을 만들어 가는 과정을 처음부터 끝까지 정리하면서 좋은 아키텍쳐를 갖는 파이썬 프로그램에 대해서 고민하고 잘 만들어진 프로젝트를 완성해보겠다는 마음으로 개발일기를 시작하게 된 것이다.
[SMTM 개발일기] 1. 파이썬으로 가상화폐 자동매매 시스템을 만들어보자
내가 유명 석학도 아니고, 소프트웨어 공학의 권위자도 아니지만, 이 책은 파이썬을 공부하는 사람, 좋은 소프트웨어 개발에 대한 고민이 있는 사람, 프로젝트를 직접 만들어 보면서 프로그래밍을 개발해보고 싶은 사람에게 도움이 될 것이다. 짧지 않은 시간 동안의 나의 경험과 고민을 고스란히 담았기에 정답은 아닐지라도 그 자체로 충분히 의미있는 내용일 것이라 자부한다.
파이썬은 소프트웨어를 처음 접하는 사람에게 매우 유용한 언어이며, 프로그래밍은 언어를 배우는 것처럼 직접 실습을 통해 배우는 것이 좋다. 파이썬을 사용해서 각각의 모듈을 직접 만들면서 학습할 수 있도록 구성하였기에 많은 도움이 될 것이다.
책에는 여러가지 모듈이 나오지만 각 모듈의 의존성은 잘 관리되고 있다. 의존성이 잘 관리되고 있기에, 하나의 모듈을 다룬 장을 별도로 학습하기에도 좋다. 각 모듈은 단위 테스트와 통합 테스트를 통해서 검증되고 있는데, 그 구성을 살펴보고 구조에 대한 고민을 더한다면 초급 개발자의 문턱을 넘을 수 있을 것이다. 간단한 프로그램이지만, 좋은 아키텍처에 대한 모델이 될 수 있도록 신경썼다.
책의 구성과 활용 방법
'1장 파이썬과 암호화폐 트레이딩의 만남'에서는 왜 암호화폐 트레이딩과 파이썬이 찰떡궁합인지에 대해서 소개하고 있다.
'2장 파이썬 시작하기'에서는 파이썬에 대해서 간단하게 알아본다. 파이썬은 이것만 알아도 당장 쓸 수 있는 언어다.
'3장 시뮬레이터부터 시작하자'는 상당히 양이 많지만 가장 핵심적인 모듈의 구성과 구현에 대해서 설명하고 있다. 프로젝트 구성부터 단위 테스트와 통합테스트를 구성하는 방법, 테스트 주도 개발TDD까지 소개하고 있어서 더욱 양이 많아졌다.
'4장 컨트롤러'는 사용자 인터페이스 모듈인 컨트롤러에 대한 이야기다. 사용자 인터페이스는 자유롭고 다양하게 추가 확장될 수 있음을 염두해두고 개발하는 과정을 소개하고 있다.
'5장 시각화'는 파이썬의 큰 장점 중 하나인 통계와 그래프 라이브러리를 맛보게 해준다.
'6장 업비트 Trader'와 '7장 빗썸 Trader'는 Trader 인터페이스의 구현체로 각각 업비트, 빗썸 거래소를 담당하는 Trader 모듈을 만드는 과정을 소개하고 있다. 구현체에 의존하는 것이 아니라 인터페이스에 의존하기에 구현체가 전체 시스템에 영향을 주지 않는 것을 확인할 수 있다.
'8장 실전 거래'는 말그대로 실전에 대한 이야기다. 사실 실전 거래에서 발견된 추가 요구사항은 이미 각 모듈에 적용되었는데, 이 부분은 프로젝트 개발 흐름과 책에서 목차와 시간 순서가 일치하지 않는 유일한 부분이다. 이러한 추가 요구사항은 현실적인 이슈이며, 반복적인 추가 개발을 통해 대응할 수 있어야 한다.
'9장 원격 컨트롤'은 만들어 놓은 프로그램을 보다 쉽게 사용하기 위해서 고안된 별도의 쥬피터 노트북 컨트롤러에 대한 이야기다. 말그대로 원격에서 쉽게 사용할 수 있는 기능이지만, 텔레그램보다는 사용성이 조금 떨어지는 것이 사실이다. 하지만 외부 시스템인 텔레그램에 의존하지 않고 사용하기에는 좋은 접근이라고 생각한다.
'10장 텔레그램 Controller'은 최종 사용자 입장에서 가장 선호할 만한 컨트롤러를 개발하는 과정이었다. 폰으로 간단하게 뚝딱! 해보면 안다. 얼마나 편리한지.ㅎ
'11장 전략 최적화'는 만들어진 프로그램을 어떻게 활용해야 할지에 대한 고민이 담긴 과정이다. 멀티 프로세스 대량 시뮬레이션을 통해 전략을 최적화하는 과정을 소개한다.
각 장에서는 하나 이상의 모듈을 함께 만드는 과정을 진행한다. 모듈의 요구사항을 정의하고 테스트와 함께 구현하는 과정을 통해 모듈을 이해할 수 있으며, 각 모듈이 모여서 하나의 프로그램이 완성되는 과정을 살펴 볼 수 있다. 이 과정을 통해서 전체 프로그램을 이해할 수 있고 모듈을 정의하고 설계하여 만드는 능력을 갖게된다.
그 모듈 개발 능력으로 프로그램 전체를 새로 개발 할 것이 아니라 전략을 구현하면 된다. 새로운 전략을 잘 만들어서 시스템을 구성하고 실전에서 사용하면 된다.
참고 자료
'만들기' 카테고리의 다른 글
[Double Check-02] 수정 즉시 업데이트되는 EditText in RecyclerView (0) | 2022.12.02 |
---|---|
[Double Check] 안드로이드 어플리케이션 오픈소스 프로젝트 (0) | 2022.10.20 |
[SMTM 개발일기] 3. 개발환경 및 프로젝트 구조 (0) | 2020.02.24 |
[SMTM 개발일기] 2. 시뮬레이터 요구사항 정리 (0) | 2019.12.13 |
[SMTM 개발일기] 1. 파이썬으로 가상화폐 자동매매 시스템을 만들어보자 (1) | 2019.11.06 |
nodeMCU D1 mini 동작감지하여 스마트폰 또는 PC에 Push 알림 전달하기 (0) | 2019.04.14 |
ESP8266 nodeMCU, D1 mini 개발환경 시작하기 (0) | 2019.02.18 |
댓글