지난주 부터 짬짬이 gopax API 공부를 하고 있다. gopax API를 이용한 자동매매 프로그램을 이번 연휴 기간에 마무리를 하려고 했는데, gopax API예제의 부족과 HTML 방식의 메시지 전달에 대한 이해 부족으로 진도가 나가지 않았다. 그래서 일단 자동매매를 위한 최소 API만 검증하기로 했다.
자동매매를 위하여 필요한 API
- 체결결과 조회
고팍스 API 사용기[1] : 거래내역 가져오기 - 주문현황
아래 기술 - 주문
고팍스 API 사용기[2] : 주문하기 성공
개략적인 자동매매 흐름
for(영원히) {
if (체결) { # 1번 API
현재 주문현황을 가져온다. # 2번 API
매수 전략대로 매수 가격을 결정하고 체결된 수량만큼 매수 주문을 낸다. # 3번 API
}
wait(30초)
}
매수 전략
- 초단기 매매 : 매수 최상 호가 보다 1호가 낮은 가격으로 매수.
단 매수 주문 과정에서 make 주문으로 체결될 수가 있어서 수수료 0.075%가 나올 수 있음. 주의가 필요함 - 단단기 매매 : 매도가 대비하여 1-0.5% 정도 낮은 금액에 매수
- 중단기 매매 : 매도가 대비하여 5% 정도 낮은 금액에 매수
- 중기 매매 : 매도가 대비 10% 이상 낮은 금액에 매수
개발 시 고려사항들
- 매수가격을 %로 정하면 매수 호가가 0원, 5원으로 변경하는 작업 필요
- 프로그램 종료 후 다시 동작 사이에 발생한 주문에 대해 처리 여부
- 최초 주문은 수동으로 입력
- 암호화폐가 다른 경우에 대해 고려
주문 현황 가져오기
아래 URL 형식으로 만들어서 요청하면 매수/매도 호가 각각 5개씩이 반환된다. limit이 없으면 모든 호가를 받을 수 있다. 시간이 좀 더 걸릴 것 같아서 5개만 받아오는 것으로 변경하였다.
https://api.gopax.co.kr/trading-pairs/EOS-KRW/book?level=5
반환된 결과에서 매수/매도 호가를 읽어내는 소스는 아래와 같다.
req = requests.get(url = 'https://api.gopax.co.kr/trading-pairs/EOS-KRW/book?level=5')
if req.ok :
HTMLsouceGet(req)
book = req.json()
bids = book['bid'];
asks = book['ask'];
# array [0] : id, [1] : price [2] : shares
for i in range(5): # ask 즉 매도호가
print(asks[i][0], asks[i][1], asks[i][2])
print("----------------------")
for i in range(5): # bid 즉 매수호가
print(bids[i][0], bids[i][1], bids[i][2])
print("----------------------")
소고
생각대로 동작하지 않는 API가 몇 개 있어서 이번 연휴에 자동 매매 프로그램 개발을 마무리하지 못하였다. 이번 주 퇴근 후에 기본적인 전략으로 자동 매매가 되는 코드를 완성할 계획이다. 일단은 매수 전략 중 3번 중단기 매매를 기준으로 작업할 예정이다. 이 글을 쓰고 보니 3번 전략으로 매매를 하려면 2번 주문현황이 크게 필요가 없다. 괜히 1번 전략을 욕심내다가 시간만 낭비한 것 같다. 자동매매 프로그램을 돌려보는 것을 먼저 해야겠다.
Good luck always for you mu friend. May you not forget me. 😊
요샌 고또라는게 생겼더군요.. 고팍스로또 ~ 우리에게도 ~ 고또가 떨어지길 기대해봅니다~ ㅋㅋ
전 한번 받았어요. ㅎ
고또가 뭔가요? 궁금합니다 ㅋㅋ
자동매매 프로그램
어떤기준으로 사고파나요?
고또란 고팍스로토의 준말입니다. 고팍스에서 보팅을 크게 해 주기 때문에 붙은 이름이라고 하네요.