내일 Daybit에 ZPER 가 상장한다고 합니다
거래량 순으로 ZPER를 나눠주는 이벤트도 한다고 하니
봇을 만들어 돌리면 좋겠네요
저번 시간에 자신의 자산 내역을 가져오는 것을 해보았는데요
그것을 이용하여 오늘은 ETH 사고 파는 간단한 예제를 보겠습니다.
모든 예제는 Daybit API 문서를 참고합니다.
저번에 보았던 create_order() 예제에 살을 붙여서 만들어 보았습니다.
예제
import asyncio
|
이 예제는 자신의 BTC 수량과 ETH 수량을 비교하여
BTC 수량이 더 많으면 ETH을 매수,
ETH 수량이 더 많으면 ETH을 매도하는 간단한 예제 입니다.
하나하나 살펴보겠습니다.
# 현재 가격 |
현재 가격을 가져오는 것은 다음 시간에 설명하겠습니다.
일단 current_price는 해당 코인의 현재 가격을 가져온다고 보시면 됩니다.
예제는 BTC 마켓의 ETH 가격을 불러옵니다. (ETH 1개를 얼마의 BTC로 살 수 있냐 입니다. ex) 0.031164 사토시
예제이므로 주문이 체결되지 않도록 판매가격은 현재 가격보다 높은 가격에, 매수가격은 낮은 가격으로 해놓았습니다.
myAsset = await daybit.my_assets() |
자산 내역을 가져옵니다.
그 중에서도 BTC 와 ETH 자산 내역을 가져와 저장합니다.
#BTC 가 ETH 보다 더 많을 때
#ETH 매수 주문
if Decimal(btcAsset['available']) > (Decimal(ethAsset['available']) * price):
buy_amount = (Decimal(btcAsset['available']) /buyPrice).quantize(tick_amount)
response = await daybit.create_order(
sell=False,
role='both',
quote=quote,
base=base,
price=buyPrice,
amount=buy_amount,
cond_type='none',
)
자산 내역을 비교합니다.
비교할 때는 단순히 BTC의 available 값과 ETH의 available 값을 비교하면 안됩니다.
BTC의 available 값은 BTC 수량이고 ETH의 available 값은 말그대로 ETH의 수량입니다.
우리가 원하는 것은 내가 가지고 있는 ETH의 가치를 BTC로 환산하였을 때
BTC와 ETH의 가치를 비교하여 BTC가 많으면 매수
ETH이 많으면 매도 하는 것입니다.
따라서 BTC의 수량과 ETH의 수량에 가격을 곱한 값(ETH을 BTC가치로 환산)을 비교합니다.
위는 BTC의 수량이 더 많을 경우 매수주문을 넣는 경우입니다.
price는 위에서 정한 buyPrice를 넣어 줍니다.
그리고 다음과 같이 주문할 수량을 넣어주었습니다.
buy_amount = (Decimal(btcAsset['available']) /buyPrice).quantize(tick_amount)
위는 매수 주문할 수량을 계산하는 것입니다.
매수 주문 수량은 ETH을 얼마나 매수할지이므로 ETH의 수량이 됩니다.
최대로 사고 싶을 때 위와 같이 하면 됩니다.
현재 나의 BTC 수량을 매수할 가격으로 나누면 살수 있는 ETH 수량이 나오겠죠?
그것이 바로 위의 식입니다.
#BTC 가 ETH 보다 적을 때 ) |
반대로 ETH의 가치가 더 높을 때 매도하는 주문입니다.
매도 수량은 말그대로 ETH 수량이기 때문에
풀매도 할 경우 ETH 자산의 available 값을 입력하면 됩니다.
간단하게 사고 파는 방법을 알아 보았습니다.
위 구문들을 While문에 넣고 돌리면 불안정하지만
풀매도 하고 풀매수를 반복하는 프로그램이 될 수 있겠네요
다만 거래 최소 가격인 10달러가 안되거나 최대 수량을 초과한 주문을 넣을 경우
에러를 발생하며 프로그램이 정지가 됩니다. 여기에 대해서는 다음 시간에 알아봅시다.
읽어주셔서 감사합니다.
혹시 제 글이 도움이 되셨다면,
Daybit 초대 코드를 입력하지 않으신 분이 있다면 저의 초대코드를 입력해주시면 감사하겠습니다.
초대 코드 : ZkMZdral
'Python 파이썬 공부하기' 카테고리의 다른 글
파이썬 초보의 Daybit API 이용하기 - 8. 주문 잘못된 조건 예외처리들 (0) | 2018.11.02 |
---|---|
파이썬 초보의 Daybit API 이용하기 - 7. 현재 가격 불러오기 (0) | 2018.10.30 |
파이썬 초보의 Daybit API 이용하기 - 5. 나의 자산 내역 알아내기 (0) | 2018.10.28 |
파이썬 초보의 Daybit API 이용하기 - 4. 주문 넣기 예제 (0) | 2018.10.22 |
파이썬 초보의 Daybit API 이용하기 - 3. 서버 시간 알아오기 - get_server_time() (3) | 2018.10.21 |