파이썬 가상화폐 트레이딩봇

투자엔 데이터가 존재하고 차트, 이평선, RSI, 볼밴, MACD 등.. 다양한 지표가 존재합니다. 지표를 통해 이익을 최대화시키는 규칙을 찾고 마치 공식처럼 매매할 수 있는 프로그램을 만들기로 결심했습니다.

제가 초창기에 개발한 간단한 보조지표를 사용한 프로그램의 매매 로직을 간단히 소개해드리고자 합니다. 그건 바로 볼린저밴드를 이용한 매매인데요. 볼린저밴드는 정규분포의 특성을 이용한 보조지표입니다.

정규분포란 데이터 표본의 수가 충분히 많을 때 종모양 형태의 분포를 따르는 분포를 의미합니다. 정규분포

x축의 가운데 u(뮤)인 부분이 평균이고 y축은 확률 값을 의미합니다.

즉, 데이터는 평균을 기점으로 종모양으로 고르게 분포한다~ 라는게 정규분포라고 보시면 됩니다. 그리고 정규분포는 표준편차(데이터가 흩어져있는 정도) ±2를 기준으로 해당 집단의 데이터는 95.4% 분포한다는 특징을 가지고 있습니다. 쉽게 말해서 대충 대한민국 남성의 평균키가 170정도이고 흩어져있는 정도(표준편차)는 7.5라고 하면 한국 남성 중 한명을 뽑으면 95.4%는 키가 대충 155~185 (170-7.52 ~ 170+7.52)일 것이다~~ 라는게 정규분포라고 이해하시면 될 것 같습니다.

볼밴

볼린저밴드는 차트데이터의 가격을 가지고 정규분포를 그린 것입니다. 위 사진에서 보이는 upper band, lower band는 각각 중앙(평균값)으로 부터 ±2 * 표준편차를 한 값입니다. 보시다시피 대부분의 봉이 볼린저밴드 안에서 놀고있죠.

이런 통계적인 근거를 기반으로해서 매매 타이밍을 포착합니다.

  1. 매수 타이밍: 이전 봉의 종가는 중앙선 아래에 있고 현재 봉이 중앙선을 돌파하여 상승추세로 전환하려고 하는 경우
  2. 매도 타이밍: 현재 가격이 upper band를 터치한 경우,, 또는 내가 직접 설정한 upper band의 n% 범위를 터치한 경우

간단하지만 통계적 근거를 바탕으로 매매타이밍을 포착하는 프로그램입니다. "상승장으로 전환하려고 하는 경우 매수해서 통계적인 상승한계선에 다다를때 매도한다."

실제로 이 매매로직을 테스트하기 위해 과거 데이터를 가지고 실험을 해봤습니다. 글을 쓰고 있는 21년 9월 3일 기준 가장 거래량이 많은 비트코인캐시에이비씨를 기준으로 4시간 봉으로 프로그램을 돌렸을 때의 예상 수익률입니다.

코드샘플 예상수익률

백테스팅 결과 약 7.5% 수익률이었습니다. 꽤 나쁘지 않죠? 생각해보세요. 100만원을 넣어놨으면 그냥 자고있는데 7만 5천원이 생긴 것입니다. ㅎㅎ

아래는 실제로 제가 기준 봉을 달리하며 테스트로 프로그램을 돌린 거래내역입니다. 검은칸은 약간의 손절, 빨간칸은 익절인 경우죠. 꽤 나쁘지 않은 성적이었습니다.

업빗거래내역

물론 켜두고 아무런 터치도 안하는게 아니라 시장상황을 확인하고 적절히 튜닝을 해줘야합니다. 그래도 제가 자는 새벽에도 매매를 수행하고 돈을 벌어다 주고 있는게 참 신기하고 기특했습니다. 엄청난 의미가 있는 것이죠.

이 프로그램을 앞으로도 발전시킬 예정입니다.

무엇보다 적은 노력에 자동수익이 창출된다는 점이 가장 매력적인 것 같네요.

만든이: 정지운
이메일: wjdwldns0905@gmail.com jiwoon@codehighway.co.kr
최종 검수일: 2021.8.1