바이낸스 자동 매매 트레이딩 봇
이 프로그램은 가격의 하락/상승 추세를 따라가며 추적 매수/추적 매도를 하는 기법을 기반으로 작성되었습니다.
- 이 프로그램은 환경설정에 따라 여러번의 매수/매도가 가능합니다.
- 이 프로그램은 여러개의 코인을 모니터링 가능합니다. 각 코인들은 1초마다 가격 확인 및 매수/매도 처리가 됩니다.
- 이 프로그램은 지속적인 데이터베이스로 MongoDB를 사용합니다. 하지만 라즈베리파이 32bit 지원을 위해 최신 버젼을 사용하지 않습니다. 사용된 MongoDB 버젼은 apcheamitru에서 제공된 3.2.20입니다
- 이 프로그램은 리눅스와 라즈베리파이 4 32비트에서만 테스트/작동 확인하였습니다. 다른 플랫폼은 테스트하지 않았습니다.
매수 신호
이 프로그램은 그리드 트레이딩 환경설정에 따라 코인을 모니터링합니다.
그리드 트레이딩 #1은 가장 현재 가격이 낮은 가격에 도달했을 경우에, 매수를 위한 STOP-LOSS-LIMIT 주문을 넣습니다. 현재 가격이 계속 떨어질 경우, 이전 주문을 취소하고, 새로운 가격으로 STOP-LOSS-LIMIT 주문을 넣습니다.
그리드 트리이딩 #1 이후로는, 이전 매수 가격에 따라 코인을 모니터링합니다.
- 매도를 위한 코인이 충분할 경우 (보통 $10정도), 그리드 트레이딩 #1의 매수 주문을 넣지않습니다.
- 총 금액이 매수 가격 삭제 가격보다 낮을 경우 매수 가격을 삭제하지 않습니다.
매수 시나리오
예를 들어, 그리드 트레이딩 매수 환경설정이 다음과 같이 되었다고 가정해봅시다:
- 그리드 트레이드 수 (Number of grids): 2
- 그리드 트레이드번호#매수 시작 퍼센트(Trigger Percentage)스탑 가격 퍼센트(Stop Price Percentage)리밋 가격 퍼센트(Limit price percentage)USDT111.051.0515020.81.031.031100
이해를 쉽게 할수 있도록, USDT를 $ 로 표시하도록 하겠습니다. 또한, 쉽게 계산할 수 있도록 커미션은 계산에 넣지 않았습니다. 실제 거래에서는 수량이 다를 수 있습니다.
첫번째 그리드 트레이드의 설정은 다음과 같습니다:
- 그리드 트레이드 번호#: 1
- 매수 시작 퍼센트 (Trigger percentage): 1
- 스탑 가격 퍼센트 (Stop percentage): 1.05 (5.00%)
- 리밋 가격 퍼센트 (Limit percentage): 1.051 (5.10%)
- 최대 매수 금액 (Max purchase amount): $50
현재 가격이 최저 가격($100)까지 떨어지고, 전고점(All-Time High) 제한 가격보다 낮을 경우, 프로그램은 새로운 STOP-LOSS-LIMIT 매수 주문을 넣습니다.
- 스탑 가격 (Stop price): $100 * 1.05 = $105
- 리밋 가격 (Limit price): $100 * 1.051 = $105.1
- 수량 (Quantity): 0.47573
마켓이 다음과 같이 변동되었다고 가정해봅시다:
- 현재 가격 (Current price): $95
그러면 프로그램은 가격 하락을 따라가면서, 새로운 STOP-LOSS-LIMIT 매수 주문을 다음과 같이 넣습니다:
- 스탑 가격 (Stop price): $95 * 1.05 = $99.75
- 리밋 가격 (Limit price): $95 * 1.051 = $99.845
- 수량 (Quantity): 0.5
마켓이 다음과 같이 변동되었다고 가정해봅시다:
- 현재 가격 (Current price): $100
이때, 첫번째 매수가 체결됩니다. 이때, 매수 가격 (Last buy price)를 $99.845 로 기록합니다. 매수 수량은 0.5 입니다.
매수가 체결되면, 프로그램은 매도를 위해 모니터링을 함과 동시에, 다음 매수 그리드 트레이딩를 모니터링합니다.
두번째 자동 거래하기 그리드 트레이딩의 설정은 다음과 같습니다:
- 그리드 트레이딩 번호#: 2
- 매수 가격 (Current last buy price): $99.845
- 매수 시작 퍼센트 (Trigger percentage): 0.8 (20%)
- 스탑 가격 자동 거래하기 퍼센트 (Stop percentage): 1.03 (3.00%)
- 리밋 가격 퍼센트 (Limit percentage): 1.031 (3.10%)
- 최대 매수 금액 (Max purchase amount): $100
만약 현재 가격이 20% 낮은 자동 거래하기 $79.876 까지 떨어지면, 프로그램은 두번째 그리드 트레이딩을 위한 STOP-LOSS-LIMIT 매수 주문을 넣습니다.
마켓이 다음과 같이 변동되었다고 가정해봅시다:
- 현재 가격 (Current price): $75
이때 프로그램은 가격 하락을 따라가면서, 새로운 STOP-LOSS-LIMIT 매수 주문을 다음과 같이 넣습니다.
- 스탑 가격 (Stop price): $75 * 1.03 = $77.25
- 리밋 가격 (Limit price): $75 * 1.031 = $77.325
- 수량 (Quantity): 1.29
마켓이 다음과 같이 변동되었다고 가정해봅시다:
- 현재 가격 (Current price): $78
이때, 두번째 매수가 체결됩니다. 매수 가격 (Last buy price)는 자동으로 아래와 같이 계산 됩니다:
- 최종 매수 가격: : ($50 + $100)/(0.5 COIN + 1.29 COIN) = $83.80
매도 신호
만약 매도를 위한 충분한 코인이 있고 매수 가격(Last buy price)가 저장되었을 경우, 프로그램은 첫번째 그리드 트레이딩을 위한 매도 신호를 모니터링하기 시작합니다. 현재 가격이 매도 시작 가격에 도달한다면, 프로그램은 매도 STOP-LOSS-LIMIT 주문을 넣습니다. 만약 현재 가격이 계속 상승한다면, 프로그램은 이전 주문을 취소하고, 새 가격으로 매도 STOP-LOSS-LIMIT 주문을 넣습니다.
- 만약 매수 가격(Last buy price)가 저장되지 않았다면, 코인을 매도하지 않습니다.
- 만약 코인 평가금이 매수 가격 삭제 금액보다 낮다면, 매수 가격 (Last buy price) 기록을 삭제합니다.
- 만약 코인 평가금이 최소 주문 금액보다 낮다면, 코인을 매도하지 않습니다.
매도 시나리오
예를 들어, 그리드 트레이딩 매도 환경설정이 다음과 같이 되었다고 가정해봅시다:
- 그리드 트레이딩 수: 2
- 그리드 트레이딩번호#매도 시작 퍼센트(Trigger Percentage)스탑 가격 퍼센트(Stop Price Percentage)리밋 가격 퍼센트(Limit price percentage)매도 수량 퍼센트(Sell Quantity Percentage)1st1.050.970.9690.52nd1.080.950.9491
매수와 다르게, 매도는 수량 퍼센트를 설정합니다. 만약 보유한 모든 수량을 매도할려면, 간단하게 1 (100%)로 설정하시면 됩니다.
위에서 매수한 코인은 다음과 같습니다:
- 현재 수량 (Current quantity): 1.79
- 현재 매수 가격 (Current last buy price): $83.80
첫번째 그리드 트레이드의 설정은 다음과 같습니다:
- 그리드 트레이딩 번호# 1
- 매도 시작 퍼센트 (Trigger percentage): 1.05
- 스탑 가격 퍼센트 (Stop price percentage): 0.97
- 리밋 가격 퍼센트 (Limit price percentage): 0.969
- 매도 수량 퍼센트 (Sell amount percentage): 0.5
마켓이 다음과 같이 변동되었다고 가정해봅시다:
- 현재 가격 (Current price): $88
현재 가격이 매도 시작 가격 ($87.99) 보다 높기 때문에, 새로운 STOP-LOSS-LIMIT 매도 주문을 다음과 같이 넣습니다:
- 스탑 가격 (Stop price): $88 * 0.97 = $85.36
- 리밋 가격 (Limit price): $88 * 0.969 = $85.272
- 수량 (Quantity): 0.895
마켓이 다음과 같이 변동되었다고 가정해봅시다:
- 현재 가격 (Current price): $90
그러면 프로그램은 가격 상승을 따라가면서, 새로운 STOP-LOSS-LIMIT 주문을 다음과 같이 넣습니다:
- 스탑 가격 (Stop price): $90 * 0.97 = $87.30
- 리밋 가격 (Limit price): $90 * 0.969 = $87.21
- 수량 (Quantity): 0.895
마켓이 다음과 같이 변동되었다고 가정해봅시다:
- 현재 가격 (Current price): $87
이때, 첫번째 매도 주문이 체결됩니다. 그러면 프로그램은 두번째 그리드 트레이딩 매도 시작 가격($83.80 * 1.08 = $90.504)을 기다립니다.
- 현재 수량 (Current quantity): 0.895
- 현재 매수 가격 (Current last buy price): $83.80
마켓이 다음과 같이 변동되었다고 가정해봅시다:
- 현재 가격 (Current price): $91
현재 가격 ($91)은 두번째 매도 시작 가격 ($90.504)보다 높기 때문에, 프로그램은 새로운 STOP-LOSS-LIMIT 주문을 다음과 같이 넣습니다:
- 스탑 가격 (Stop price): $91 * 0.95 = $86.45
- 리밋 가격 (Limit price): $91 * 0.949 = $86.359
- 수량 (Quantity): 0.895
마켓이 다음과 같이 변동되었다고 가정해봅시다:
- 현재 가격 (Current price): $100
그러면 프로그램은 가격 상승을 따라가면서, 새로운 STOP-LOSS-LIMIT 주문을 다음과 같이 넣습니다:
- 스탑 가격 (Stop price): $100 * 0.95 = $95
- 리밋 가격 (Limit price): $100 * 0.949 = $94.9
- 수량 (Quantity): 0.895
마켓이 다음과 같이 변동되었다고 가정해봅시다:
- 현재 가격 (Current price): $94
이때 두번째 매도 주문이 체결됩니다.
최종 수익은 다음과 같습니다.
- 첫번째 매도: $94.9 * 0.895 = $84.9355
- 두번째 매도: $87.21 * 0.895 = $78.05295
- 최종 수익: $162 (8% 수익)
매도 스탑-로스 시나리오
예를 들어, 매도 스탑-로스 환경설정이 다음과 같이 되었다고 가정해봅시다:
- 최대 손실 퍼센트(Max loss percentage): 0.90 (-10%)
- 매수 중단 시간(분): 60
그리고 현재 마켓이 아래와 같다고 가정합니다:
- 현재 가격(Current price): $95
- 매수 가격(Last buy price): $100
- 스탑-로스 가격(Stop-Loss price): $90
이럴 경우 스탑-로스 가격($90)이 현재 가격($95)보다 낮기 때문에 프로그램은 매도 주문을 넣지 않습니다.
만약 현재 가격이 계속 하락한다면, 프로그램은 현재 가격이 스탑-로스 가격에 도달할때까지 계속 모니터링합니다.
시간이 지나, 마켓이 다음과 같이 변했다고 가정합니다:
- 현재 가격(Current price): $90
- 스탑-로스 가격(Stop-Loss price): $90
현재 가격($90)이 스탑-로스 가격($90)과 같거나 낮기때문에 프로그램은 새로운 매도 MARKET 주문을 넣습니다. 실 거래시, 주문 수량은 다를 수 있습니다.
그리고 지속적인 매수/매도를 방지하기 위해서 해당 코인은 60분동안 임시로 거래가 중단됩니다. 프론트엔드는 중단 아이콘과 다시 거래 시작까지 얼마나 남았는지 시간을 보여줍니다. 거래를 바로 시작할려면 플레이 아이콘을 클릭하시면 됩니다.
자동 거래하기
가상화폐 자동매매 프로그램 - 땡스봇은
바이빗 회원가입시 박호구 땡스봇 전용 레퍼럴로 회원가입하시면 무료로 사용 하는
또한 땡스봇 사용시 거래 수수료까지 10 ~ 20% 할인된답니다
1) 땡스봇은 추세추종전략이기 때문에 조금 손실이 나더라도
끝까지 믿고 따라가는 것이 중요합니다. (언제나 손실 및 횡보구간 존재)
2) 충분한 백테스팅 을 거쳐 최대한 수익률이 좋은 설정값을 찾도록 합니다.
- 백테스팅 시 몇 달, 1년 정도가 아닌 2017년부터 최근까지 다년간 우상향 하는 설정값을 찾습니다.
- 한번 찾은 설정값은 손실이 조금 나더라도 지표 설정값 및 수량을 변경하지 말고 끝까지 따라가야만 계좌가 우상향 될 수 있습니다.
3) 리스크 관리를 위해서 분산투자를 권장드립니다.
최소 3개이상 (예: 땡스봇 전략2-30%, 전략3-30%,전략4-30%)
분산 투자는 많이 하실수록 리스크관리가 가능합니다.
4) 최대한 차트에 현혹되지 말고, 하루에 한 번 정도만 프로그램이 정상적으로 실행되고 있는지만 체크하도록 합니다. (차트는 사람의 심리를 약하게 만듭니다)
- 뇌동매매(손매매)를 꼭 하셔야하는경우에는 계좌를 별도로 나누어서 하시기 바랍니다.
5) 땡스봇과 함께하시면 투자에 가장 중요한 3박자(리스크관리, 심리, 좋은전략)가 모두 갖춰지므로 계좌가 우상향 될 것입니다.
6) 저희는 현재 시드분배를 전략2-25%, 전략3-35%, 전략4-40% 이렇게 비중을 두고 매매를 하고 있습니다.
즉 전략4가 가장 안전하지만 큰수익이 없으며, 전략2는 하이리스크 하이리턴이라 보시면됩니다. 또한 전략3,4는 레버리지 3배 사용중이며, 전략2는 레버리지 2로 사용하고 있습니다.
가상화폐 선물 마진프로그램 '땡스봇'을 설치한 후 땡스봇를 통해 비트맥스
또는 바이빗 회원가입후 땡스봇 기본메뉴얼을 숙지한후 사용하길 권장합니다.
※ 땡스봇 이용시 비트맥스, 바이빗 테스트섭 에서는 추천인 필요없이 아무나 사용이 가능합니다.
※ 땡스봇 다운로드 / 설치방법 등은 이글의 하단에 링크해 두었습니다
1. PC에서 땡스봇을 실행 후 백테스트 메뉴를 선택합니다.
2. 손절 설정값 및 지표 설정값을 세팅합니다.
3. 백테스트 기간을 설정합니다.
5. 백테스트 시작을 실행합니다.
4. 백테스트 결과값 수익률을 확인합니다.
※ 2 -> 3 -> 5 ->4 과정을 반복하며 자신에게 맞는 최상의 설정값을 세팅한다.
최상의 설정값을 찾았다면 비트맥스를 실행하여, 땡스봇에 비트맥스/바이빗에서 생성한 API를 등록합니다.
API생성 등록은 하단의 내용과 같습니다.
바이빗 거래소 로그인 후 화면 우측 상단
③ 새 키 생성 선택
[비트코인 자동매매 Ch.2] AWS 서버 생성하기
자동으로 돌아가야 하는 서비스는 내가 자고있는 순간에도 동작 해야합니다.
그렇다면 내 집에 있는 PC를 24시간 계속 켜 놓고 있기엔 소음, 전기세, 발열 등의 신경을 써줘야합니다.
우리는 온전한 서비스 용도의 PC = Server 가 필요합니다.
서버를 자동 거래하기 손쉽게 대여 할 수 있는 클라우드 서비스의 대표주자 AWS를 사용 해 보겠습니다.
그건 아마. 존? 웹 서비스 입니다. (네 그렇다구요 뭐요)
*클라우드 서비스이자 세계 시장 점유율 '아직까진' 1등입니다.
IT업계는 워낙 발전과 변화 속도가 빠르니 언제든 바뀔 수 있으며
COVID-19 팬데믹으로 인해 IT업계의 성장이 급 가속화 되었다고 생각합니다.
AWS, 3분기 클라우드 시장 33%로 1위. 칩 공급 부족 변수 부상 (기사)
http://www.digitaltoday.co.kr/news/articleView.html?idxno=423104
이외 Microsoft Azure, Google Cloud, OCI, NAVER Cloud 등 수 많은 클라우드 사업자가 존재한다.
🧐 *클라우드 서비스는 간략히 자동 거래하기 실제 서버를 내가 직접 어딘가에 두고 관리하는 것이 아닌
필요한 만큼 온라인에서 서버를 빌려쓰고 비용을 지불하는 서비스 입니다.
(초기 구축 비용, 유지보수 비용, 서버 추가 및 제거 등 여러가지 방면을 생각해보면 굉장히 메리트 있는 상품이죠. 최근엔 해당 클라우드 개념에서 조금 더 나아간 엣지 컴퓨팅도 굉장히 매력적이죠.)
- 자 시작해볼까요? (회원가입) ✍
당연 회원가입은 하셨겠죠? 아직도 가입 안 하셨다구요? 네 잘하셨습니다.
왜냐구요?
https://aws.amazon.com/ko/free/
우린 비용을 절약해야 합니다. 수익을 극대화 해야하기 때문이죠.
접속하셔서 "무료 계정 생성"을 클릭해서 계정 생성 해주세요!
무려 가장 낮은 스펙의 서버를 1년동안 무료로 대여 해 준다구요. 외않해?
😥이미 가입되어 있으시다면. 기간이 지나셨다면. 다른 방법을 찾아야 하니까요.
1. 루트 사용자로 로그인 하시면 됩니다.
- 콘솔 접속 🔌
1. 오른쪽 상단에 "콘솔에 로그인" 클릭!
2. 관리 콘솔로 오셨으면 "모든 서비스 -> EC2" 클릭!
❗ 아 참! 그 전에 오른쪽 상단에 서울로 잘 선택되어 있나 확인 꼭 해주세요!
(정보 : AWS에서 최적의 서비스 속도를 보장하기 위해서 각 지역별로 AWS의 데이터센터를 두었는데 자신이 살고있는 곳과 가장 가까운 곳으로 선택 해 주세요!)
- 키 페어 생성 🔐
키 페어(Key Pair)는 공개 키와 개인 키로 구성되어 있으며 SSH 로그인 시에 비밀번호 대신에 사용됩니다.
1. 왼쪽 리스트에서 "키 페어" 선택!
2. 우측 상단 "키 페어 생성"!
3. 이름, 유형, 형식 설정
우리는 PuTTY를 사용 할 거니까 "ppk 형식" 선택!
🧐 키 파일 형식 중
.pem은 OpenSSH에서 사용 하는 형식
.ppk는 Putty에서 사용 하는 형식
4. 키 페어 생성하면 ppk 파일이 다운로드 된다.
(❗ 이 세상에 하나 뿐인 열쇠입니다. 잃어버리면 다시 태어나도 못 찾아요)
- 인스턴스 생성 🧱
1. 인스턴스(서버)를 생성해 보자구요. "인스턴스 시작"
2. Ubuntu 리눅스 검색! 최신 AMI인 Ubuntu 20.04 LTS 선택!
3. 서버의 스펙을 정할 자동 거래하기 수 있습니다.
그러나 우린 돈을 쓰지 않기에 선택의 권리는 없습니다.
프리티어 선택! (1CPU, 1G MEM)
오른쪽 하단에 "검토 및 시작(파란 버튼)" 클릭!
4. 그러면 4, 5, 6 과정을 건너뛰고 7번으로 오게되는데
그냥 시작하기를 누른다면 내 서버가 전 세계에 공개되어 공격당하게 될 것이다.
어떻게 만든 서버인데 최소한의 보안장치는 걸자구요! (죽 쒀서 개 줄 일있..)
"보안 그룹 편집" 클릭!
5. 새 보안 그룹 생성 -> 보안 그룹 이름 설정 -> SSH 접속을 위한 내IP만 허용 (별표 다섯개⭐*5)
이렇게 설정하면 현재 내가 사용중인 PC의 IP에서만 생성된 서버로 SSH접속이 가능하다.
(우리는 Private하게 사용할 거라 WhiteList로 방화벽을 구성하는 겁니다!)
🧐 혹시나 내 IP를 직접 알고 싶으시다면 https://www.myip.com/ 로 접속하셔서
Your IP address is: 항목이 전 세계에서 나만 사용중인 공인IP 입니다.
다 되셨으면 우측 하단에 "검토 및 시작" 클릭! -> "시작하기" 클릭!
6. 키페어 생성하는 창이 뜹니다!
우린 미리 생성 해 두었습니다. 만들어 놓으신 키 선택!
다 되셨으면 우측 하단 "인스턴스 시작"을 눌러줍니다.
- 인스턴스 생성 완료! ✔
인스턴스 생성 중 상태에서 기다리면 생성이 완료됩니다.
❗ 퍼블릭 IPv4 주소를 Chapter1에서 만든 Open API 키에 허용IP주소로 넣어주면 된다!
그래야 내가 만든 서버가 Upbit의 API서버로 요청을 보낼 수 있음
(까먹으면 코드 기똥차게 잘 짜도 동작이 안된다구요 제발..)
힘들게 만들었으니 어떻게 생겨 먹었나 보실까요?
- 서버 SSH 접속 확인 ✔
1. PuTTY 창 여시고 (구글에서 다운 받으시면 됩니다. 귀찮으시면 이거 클릭 ),
Host Name에 인스턴스의 퍼블릭 IPv4 주소 입력 -> 왼쪽 리스트에 Auth 클릭
2. ppk 파일 찾아서 넣기
SSH -> Auth 메뉴에 넣으시면 됩니다.
키 넣으셨으면 Open 클릭!
3. 유저명은 "ubuntu"
말 안 들으시고 root로 로그인 시 ubuntu로 로그인 후에 root로 전환하라는 메시지가 뜹니다.
(보안상 ssh 접속 시 자동 거래하기 root로 바로 접근은 좋지 않습니다.)
ubuntu를 입력하셔서 접속!
접속 후 "sudo su -" 를 입력하면 root 유저로 전환 됩니다.
여기 까지 따라오시느라 고생하셨습니다. (짝짝)
다음 챕터에서는 개발 환경 세팅을 해보겠습니다.
자동 거래하기
비트코인 트레이딩을 위해 파이썬으로 암호화폐 자동매매 프로그램 smtm을 만들었다. 요구사항 도출부터 설계, 테스트 작성, 개발, 최적화에 이르는 모든 과정을 책으로 엮어서 출간하게 되었다. 내가 쓴 책을 독후감으로 소개하려니 영 기분이 이상하지만, 간단하게 책 소개를 해보려 한다.
암호화폐 자동매매 시스템 만들기 with 파이썬
책이 도움이 될 사람, 책을 낸 이유
smtm 프로젝트를 시작할 때 출판에 대한 계획은 없었다. 단지, 개발이 너무 진행이 안되어서, 개발 일기처럼 블로그에 글을 쓰기 시작했는데 그것이 계기가 되었다. 블로그에 글을 쓰는 일은 사실 나 자신을 위한 일이기도 하다. 누군가에게 설명하기 위해서는 내용을 잘 알아야 하고, 그 과정에서 해당 지식에 대한 메타 인지적인 지식을 얻을 수 있다. 내가 알고 있는 것과 모르는 것의 범위를 알고, 그 범위 내에서 설명해야 할 내용을 정리하는 과정이 중요하기 때문이다. 파이썬으로 암호화폐 트레이딩 프로그램을 만들어 가는 과정을 처음부터 끝까지 정리하면서 좋은 아키텍쳐를 갖는 파이썬 프로그램에 대해서 고민하고 잘 만들어진 프로젝트를 완성해보겠다는 마음으로 개발일기를 시작하게 된 것이다.
김지윤 박사님의 H.R.맥마스터 인터뷰 영상 https://www.youtube.com/watch?v=yq_KLiE9UvE
내가 유명 석학도 아니고, 소프트웨어 공학의 권위자도 아니지만, 이 책은 파이썬을 공부하는 사람, 좋은 소프트웨어 개발에 대한 고민이 있는 사람, 프로젝트를 직접 만들어 보면서 프로그래밍을 개발해보고 싶은 사람에게 도움이 될 것이다. 짧지 않은 시간 동안의 나의 경험과 고민을 고스란히 담았기에 정답은 아닐지라도 그 자체로 충분히 의미있는 내용일 것이라 자부한다.
파이썬은 소프트웨어를 처음 접하는 사람에게 매우 유용한 언어이며, 프로그래밍은 언어를 배우는 것처럼 직접 실습을 통해 배우는 것이 좋다. 파이썬을 사용해서 각각의 모듈을 직접 만들면서 학습할 수 있도록 구성하였기에 많은 도움이 될 것이다.
책에는 여러가지 모듈이 나오지만 각 모듈의 의존성은 잘 관리되고 있다. 의존성이 잘 관리되고 있기에, 하나의 모듈을 다룬 장을 별도로 학습하기에도 좋다. 각 모듈은 단위 테스트와 통합 테스트를 통해서 검증되고 있는데, 그 구성을 살펴보고 구조에 대한 고민을 더한다면 초급 개발자의 문턱을 넘을 수 있을 것이다. 간단한 프로그램이지만, 좋은 아키텍처에 대한 모델이 될 수 있도록 신경썼다.
책의 구성과 활용 방법
'1장 파이썬과 암호화폐 트레이딩의 만남'에서는 왜 암호화폐 트레이딩과 파이썬이 찰떡궁합인지에 대해서 소개하고 있다.
'2장 파이썬 시작하기'에서는 파이썬에 대해서 간단하게 알아본다. 파이썬은 이것만 알아도 당장 쓸 수 있는 언어다.
'3장 시뮬레이터부터 시작하자'는 상당히 양이 많지만 가장 핵심적인 모듈의 구성과 구현에 대해서 설명하고 있다. 프로젝트 구성부터 단위 테스트와 통합테스트를 구성하는 방법, 테스트 주도 개발TDD까지 소개하고 있어서 더욱 양이 많아졌다.
'4장 컨트롤러'는 사용자 인터페이스 모듈인 컨트롤러에 대한 이야기다. 사용자 인터페이스는 자유롭고 다양하게 추가 확장될 수 있음을 염두해두고 개발하는 과정을 소개하고 있다.
'5장 시각화'는 파이썬의 큰 장점 중 하나인 통계와 그래프 라이브러리를 맛보게 해준다.
'6장 업비트 Trader'와 '7장 빗썸 Trader'는 Trader 인터페이스의 구현체로 각각 업비트, 빗썸 거래소를 담당하는 Trader 모듈을 만드는 과정을 소개하고 있다. 구현체에 의존하는 것이 아니라 인터페이스에 의존하기에 구현체가 전체 시스템에 영향을 주지 않는 것을 확인할 수 있다.
'8장 실전 거래'는 말그대로 실전에 대한 이야기다. 사실 실전 거래에서 발견된 추가 요구사항은 이미 각 모듈에 적용되었는데, 이 부분은 프로젝트 개발 흐름과 책에서 목차와 시간 순서가 일치하지 않는 유일한 부분이다. 이러한 추가 요구사항은 현실적인 이슈이며, 반복적인 추가 개발을 통해 대응할 수 있어야 한다.
'9장 원격 컨트롤'은 만들어 놓은 프로그램을 보다 쉽게 사용하기 위해서 고안된 별도의 쥬피터 노트북 컨트롤러에 대한 이야기다. 말그대로 원격에서 쉽게 사용할 수 있는 기능이지만, 텔레그램보다는 사용성이 조금 떨어지는 것이 사실이다. 하지만 외부 시스템인 텔레그램에 의존하지 않고 사용하기에는 좋은 접근이라고 생각한다.
'10장 텔레그램 Controller'은 최종 사용자 입장에서 가장 선호할 만한 컨트롤러를 개발하는 과정이었다. 폰으로 간단하게 뚝딱! 해보면 안다. 얼마나 편리한지.ㅎ
'11장 전략 최적화'는 만들어진 프로그램을 어떻게 활용해야 할지에 대한 고민이 담긴 과정이다. 멀티 프로세스 대량 시뮬레이션을 통해 전략을 최적화하는 과정을 소개한다.
각 장에서는 하나 이상의 모듈을 함께 만드는 과정을 진행한다. 모듈의 요구사항을 정의하고 테스트와 함께 구현하는 과정을 통해 모듈을 이해할 수 있으며, 각 모듈이 모여서 하나의 프로그램이 완성되는 과정을 살펴 볼 수 있다. 이 과정을 통해서 전체 프로그램을 이해할 수 있고 모듈을 정의하고 설계하여 만드는 능력을 갖게된다.
그 모듈 개발 능력으로 프로그램 전체를 새로 개발 할 것이 아니라 전략을 구현하면 된다. 새로운 전략을 잘 만들어서 시스템을 구성하고 실전에서 사용하면 된다.
0 개 댓글