자동매매

파이썬을 활용한 코인 자동매매 (변동성 돌파 전략과 상승장 조건 적용 -1)

포프리278 2022. 10. 29. 22:26
반응형

안녕하세요, 포프리278입니다. 오랜만에 다시 인사를 드리게 되었습니다. 

 

지난 해 자동매매를 시도하고자 하였으나 개인적인 사정으로 중단하게 되었습니다. 

 

이번에 자동매매 프로그램 개발을 할 수 있는 시간이 생겨 개발과정과 개선과정에서의 수익률 변화를 가능한 매일 업로드를 하려고 합니다. 

 

관심있으신 분들에게 도움이 되었으며 하며 소통의 기회가 될 수 있기를 바랍니다.

 

조대표 님이 쓰신 '파이썬을 이용한 비트코인 자동매매 (개정판)'를 당분간 많이 참조하려고 합니다. 

 

https://wikidocs.net/book/1665

 

파이썬을 이용한 비트코인 자동매매 (개정판)

이 책은 최근 인기 있는 프로그래밍 언어인 파이썬을 사용하여 국내 3대 거래소(코빗, 빗썸, 업비트) 및 국외 거래소(바이넨스)에서 비트코인을 자동매매하는 프로그램을 개발하는 방…

wikidocs.net

 

라이브러리는 Pyupbit를 쓰고 링크는 아래 참고 부탁드립니다.  

 

https://pyupbit.readthedocs.io/en/latest/

 

Pyupbit: Python Wrapper for Upbit API — pyupbit 0.3.0 documentation

© Copyright 2021, PyQuant. Revision 7a55d3e6.

pyupbit.readthedocs.io

 

먼저 오늘 코딩 구현에 필요한 파일들을 import 해줍니다. 

 

Private API 사용하기 위한 코드입니다. Private 말 그대로 개인 잔고 조회, 매수 및 매도를 위해 필요합니다.

key 값과 secret 값은 별도로 신청을 해야 하는데 경로는 업비트 홈페이지 -> 고객센터 -> Open API 안내 -> Open API 사용하기입니다. 그럼 아래와 같은 화면이 나타납니다. 

 

 

입출금 조회는 해킹이 발생할 시 생길 수 있는 금전적 손해를 방지하기 위해 체크해제한 상태로 API 키를 발급하시면 됩니다. 그러면 key값과 secret 값이 나오는데 이를 저장해두시면 됩니다. 한번 놓치시면 다시 확인이 어려우니 캡처 혹은 메모장 등에 저장해주셔야 합니다. 

 

upbit.txt의 첫째줄에는 key 값이 둘째줄에는 secret 값이 저장되어있으며 11-15번째 줄은 이 key값과 secret값을 이용하여 upbit 클래스 객체를 생성하는 과정을 나타냅니다. 

 

잔고조회를 하는 부분입니다. get_balance() 안에 "KRW" 티커를 집어넣으면 개인 원화 잔고가 조회 됩니다. 티커의 종류는 여러가지가 있으며 "KRW-ETH"로 입력하면 ETH 보유량이 "KRW-XRP"로 입력하면 XRP 보유량이 조회됩니다. 티커는 각 거래소마다 조금씩 다르니 다른 거래소를 이용할 시 확인이 필요합니다. 

 

변동성 돌파 전략에서 target price를 계산하는 함수의 정의를 나타내고 있습니다. 변동성 돌파 전략은 기술 분석 투자자인 래리의 전략 중 하나입니다. 상승장에서 변동성이 크게 나타나는 경우 매수시점으로 보며 특정 시점에 매도를 하여 이익을 보게 하는 것입니다. 변동성이 클수록 수익이 높게 형성된다고 합니다. 

 

변동성 정도는 매우 간단하게 구할 수 있습니다. (전일 고가 - 전일 저가)가 변동성 정도가 되며 현재가가 금일 시가 + 변동성 정도 * k 보다 클때 매수조건이 됩니다. 여기에서 k는 임의의 값으로 최적화된 k 값을 구할 수 있으나 현재는 임의로 0.5로 구했습니다. 매도는 보통 다음날 시가에 이루어지며 매수가보다 시가가 높으면 수익이 낮으면 손실이 발생하게 됩니다. 

 

변동성 돌파가 됨과 동시에 상승장일 경우에 매수를 할 것이므로 5일 이평선 계산 함수도 작성하였습니다. 34 번째 줄을 통해서 5일단위로 종가의 평균이 구해진 것을 알 수 있습니다. 

오늘은 여기까지 쓰겠습니다. 피드백은 언제나 환영합니다. 

내일 매수 매도 함수 및 수익률 결과를 공유하겠습니다. 

 


 

도움이 되셨다면 구독, 댓글, 공감을 부탁드립니다.

 

※ 본 글의 내용은 오직 정보전달을 하기 위함이며 본 글을 바탕으로 행하여진 어떠한 개인의 어떠한 투자행위 결과에 대해서 글쓴이는 모든 책임을 지지 않는다.

반응형