안녕하세요 포프리 278입니다. 저번 글에서 Private API 사용, 잔고조회, 변동성 돌파전략, 이동평균선 등에 살펴보았습니다. 참고가 필요하신 분들은 아래 링크를 확인해주세요.
파이썬을 활용한 코인 자동매매 (변동성 돌파 전략과 상승장 조건 적용 -1)
안녕하세요, 포프리278입니다. 오랜만에 다시 인사를 드리게 되었습니다. 지난 해 자동매매를 시도하고자 하였으나 개인적인 사정으로 중단하게 되었습니다. 이번에 자동매매 프로그램 개발을
forfree278.tistory.com
오늘은 저번 글에 이어 매수 매도 함수 및 실제 매수 진행 결과에 대해 작성해보겠습니다. 참고로 저번에는 업비트 거래소를 이용하였는데 개인 사정상 빗썸으로 거래소를 바꾸었습니다.
매수를 위한 함수입니다. 46번째 줄에서 buy_market_order 메소드가 있는걸 확인하실수 있는데 시장가로 주문하겠다는 것을 의미합니다. 시장가로 주문하기 위해서는 주문 ticker와 매수량(buy_unit)을 입력할 필요가 있습니다.
매수량 buy_unit은 현재 잔고 krw를 최우선 매도 호가 ask_price로 나눠주어 구하게 됩니다. 41번째 get_balance(ticker)[2]를 통해 현재 잔고를 조회할 수 있으며 get_orderbook['asks'][0]['price']를 사용하여 최우선 매도호가를 조회할 수 있습니다.
매도를 위한 함수정의입니다. 51번째 줄을 통해 팔고자 하는 ticker의 수량을 확인하고 이를 시장가 매도하는 코드입니다.
현재 작성된 자동매매는 1일 단위로 매수와 매도가 진행되게 되어있으므로 자정시간을 확인해주는 코드를 55번째 줄과 같이 작성합니다.
실제 매수 매도 진행 코드입니다. 참값에 해당하는 동안 while loop를 무한대로 돌아가면서 조건이 맞는경우 매도가 진행되게 됩니다. try, except 구문은 에러 발생을 고려하여 작성되었습니다.
매도는 현재 시간인 now가 자정과 자정 + 10초 사이에 있을때 발동됩니다. 10초의 간격을 두는 이유는 컴퓨터 계산의 기본 원리 상 정확한 자정시간인 00:00을 나타낼 수 없기 때문입니다.
자정을 넘겼으므로 새로운 매수를 위한 target_price와 새로운 일의 자정값을 64, 65번째 줄을 통해 차례로 계산합니다. 66번째 줄을 통해 원하는 코인의 매도가 진행됩니다.
매수를 진행하는 부분입니다. 70번째 줄을 통해 현재가를 조회하고 71번째 줄을 통해 변동성 타겟값보다 현재가가 비싸며 현재가가 5일 이평선보다 큰 상승장에 해당할 경우 관심 코인의 구매가 진행되게 됩니다.
69번째에서 wait_flag 조건이 있는것을 확인하실수 있는데 현재 wait_flag는 False로 되어있어 위 코드가 지속 실행되게 됩니다. 하지만, 매수가 이루어지게 되면 wait_flag는 True값으로 변하게 되어 당일에 더이상의 매수는 진행되지 않습니다. 만일 위 조건이 없다면 매수시도가 지속적으로 진행되게 됩니다.
원하는 코인을 ticker에 적용하여 구매 시도를 해보겠습니다. 비트코인 등을 구매해도 괜찮으나 에이다로 한번 진행해 보았습니다.
프로그램을 돌린 결과인데 현재가는 5일 이평선보다 크지만 변동성 조건을 만족하지 않아 구매진행이 이루어지지 않는 모습을 나타냅니다. 현재 코드는 조건을 만족하는 ticker를 하나하나 수동으로 사람의 손으로 찾게 되어있어서 많이 불편합니다. 다음에는 모든 ticker를 조회하여 조건을 만족하는 ticker를 자동으로 찾은 뒤 가장 좋은 조건의 ticker를 매수진행하는 코드를 개발해보겠습니다.
오늘은 여기까지 쓰겠습니다. 피드백은 언제나 환영합니다.
도움이 되셨다면 구독, 댓글, 공감을 부탁드립니다.
※ 본 글의 내용은 오직 정보전달을 하기 위함이며 본 글을 바탕으로 행하여진 어떠한 개인의 어떠한 투자행위 결과에 대해서 글쓴이는 모든 책임을 지지 않는다.
'자동매매' 카테고리의 다른 글
파이썬을 활용한 코인 자동매매 (변동성 돌파 전략과 상승장 조건 적용 -1) (0) | 2022.10.29 |
---|