이벤트는 현재 끝난 상태이지만 기록하기 위해 작성했다.
아.. 채우기 귀찮다..! 개발하기 귀찮다..!
그래서 50만원으로 계속 시장가 매수 시장가 매도를 반복하는 방식으로 10억을 채웠다.
[시장가 매수 매도 결과] 금액 : 50만원 손실 : -3만원 시간 : 20~30분 |
그랬는데..! 이벤트가 또 있었다.
앗... 거래량 채우면서 메이커로 거래하면 채우면 보상이 두 배잖아..?
보상이 두 배라면 열심히 일해야지...!!

생각해 보자..
목표를 두 가지로 설정했다.
1. 최대한 메이커 주문이면 좋다.
2. 손실을 줄여보자.
떠올린 방법은 매수를 메이커 주문으로 받고 체결되면 바로 시장가로 매도하는 것이었다.
그러면 10억의 거래를 채우면서 5억은 메이커로 채울 수 있게 된다.
getOrderbook()
buyLimit()
sellMarket()
이렇게 간단하게 돌아가면 얼마나 좋을까..
하지만 역시 그럴 리 없지!
.
.
우선 매수 주문이 체결되지 않을 때가 발생한다.
그래서 매수 주문이 체결되지 않았을 때 어떻게 할 것 인지를 생각해야 했다.
1. 매수가 아예 체결되지 않았다 -> 매수 주문을 취소하면 끝
2. 매수가 일부 체결되었다 -> 체결되었던 비트코인을 매도하고 다시 주문해야 한다.
여러 계정에 굉장히 적은 금액만 넣어두고 할 것이기 때문에 원화가 부족해 매수 주문이 들어가지 않을 수가 있다.
주문 가능한 원화와 비트코인 가격을 계산해서 매수 주문을 넣는 방식이라면 상관없지만
나는 수량을 고정시켜서 돌리는 방법을 선택했다.
이유 1. 적은 api 호출로 사이클을 돌릴 수 있다.
매수 주문 -> 매도 주문 (여러 번 시도) -> 매도 주문 실패 시 -> 매수 주문 취소 -> 비트 보유량 가져오기 -> 전량 매도
이유 2. 고정된 수량으로 매도 주문을 넣음으로써 자체적으로 타이머 기능이 가능하다.
매수가 전부 체결되지 않으면 매도 주문이 실패하기 때문에 주문 요청 회수를 정하면 자체 타이머 기능이 된다.
getOrderbook()
buyLimit(price, amt)
for 5 times sellMarket(amt)
if sellfailed :
cancelOrder(buyOrderid)
amt = getbalance()
sellMarket(amt)
결과는...

[지정가 매수 시장가 매도 결과] 금액 : 50만원 손실 : -2만원 시간 : 40분 |
우선 비트코인의 변동성에 따라 손실의 범위는 차이가 있었다.
하락의 방향으로 변동이 심할 때는 최대 손실 6만 원까지 발생했었다. OTL...
여기서 끝이라 생각했것만...
'자산뿌울리기 > 개발일지' 카테고리의 다른 글
[Bithumb B포인트 봇] 업그레이드 (3) (0) | 2024.02.02 |
---|---|
[Bithumb B포인트 봇] 시작 (1) (0) | 2024.02.01 |
[TelegramAlarm] To-Do List (4) (0) | 2023.05.06 |
[TelegramAlarm] 텔래그램으로 알림 보내기 (3) (0) | 2023.05.01 |
[TelegramAlarm] 호가 계산하기 (2) (0) | 2023.04.26 |