본문 바로가기
파이썬/가상화폐

Python 업비트 김프알림 프로그램 만들기 (2.Python으로 UPBIT 코인 입출금가능여부 확인, get_deposit_withdraw_status)

by 행복론자 2022. 8. 6.

2022.07.20 - [파이썬/가상화폐] - Python 업비트 김프알림 프로그램 만들기 (1.개요, 김프란?)

 

Python 업비트 김프알림 프로그램 만들기 (1.개요, 김프란?)

업비트와 해외거래소간 김프 발생시 Python + Telegram을 이용해 알림을 주는 프로그램을 짬짬히 만들고 있습니다. 많은 분들이 아시겠지만 먼저 김프란.. 국내 거래소와 해외 거래소간에 가상화폐

jsp-dev.tistory.com

 

지난번 글에는 김프가 무엇인지 알아봤습니다. 다시 보니 그땐 FTX 거래소 Websocket에 문제가 있다.. 잘 안된다 이런 내용이 었었는데 지나고 보니..

 

그냥 제가 잘못했습니다. FTX는 아무런 문제가 없습니다. 

 

 

FTX 웹소켓으로 받아온 데이터 저장하는 과정에서 다른 거래소에서 받아온 데이터와 충돌나서 에러가 났던 것이었습니다. 이걸 깨닫는데 생각보다 오랜 시간이 걸렸습니다.

아무튼 오늘은 시리즈 2번째 글입니다. 프로그램은 현재 UPBIT, BINANCE, FTX, BYBIT 이렇게 4개의 거래소 간의 발생한 가격 갭(GAP)을 확인하고 있는데요. 

제일 중요한 것은 그래서 갭이 발생하면 입/출금이 되냐? 입니다.

 

물론 입출금이 안되어도 괜찮을 수 있습니다. 바로 가두리갭이 발생할 수도 있기 때문입니다.

가두리 갭은 해당 거래소의 특정 코인이 입출금이 안되면 그 거래소에서 코인 펌핑이 일어나는 현상을 의미합니다.

예를 들어 LUNA가 망하고 새로운 LUNA2가 거래소 에어드랍됐을 때 BYBIT는 입출금이 되지 않았었습니다. 

입출금이 되지 않으니 BYBIT에서만 엄청난 펌핑이 되었지만 입출금이 재개되자 다른 거래소와의 갭이 다 사라지게 되었습니다. 

가두리 펌핑

 

 

이렇듯 갭이 발생하냐 안하냐도 중요하지만 갭이 발생한 해당 거래소 코인이 입출금이 지원되는지 확인이 중요합니다.

약간 다르지만 비슷한 원리로 솔라(SXP) 코인의 갭이 발생하는 것을 BOT으로 확인했는데 확인해보니 입출금이 막혀있는 것을 알았습니다. 

 

 

그래서 바로 가두리 펌핑이 일어날 수 있겠다 싶어서 매수해서 소소한 수익을 올리고 있습니다.

(업비트에 SXP가 입출금이 안되면서 BINANCE의 SXP와 가격차이가 올라가는 것을 확인하고 매수했습니다!)

 

 

그럼 서론이 길었습니다.

그만 각설하고 UPBIT에 상장된 전체 코인이 지금 입출금이 되냐 안되냐를 확인하는 방법을 살펴보겠습니다.

 

1.기초 준비물

pyupbit 모듈, pycharm, anaconda 

 

 

2.업비트 API 발급

이전 글을 참조해주세요

2021.02.23 - [파이썬/가상화폐] - 가상화폐거래소 업비트 Open API Key 발급 받는법

 

 

 

3.파이썬 코드

바로 코드를 살펴보겠습니다.

어려울 것은 없는 코드이지만 중요한 것은 코인 입출금 가능여부는 public api처럼 api key없이 요청만 던지면 받을 수 있는 정보는 아니기 때문에 '2.업비트 API 발급'을 통해 얻은 API를 이용해 로그인해야합니다.

 

그럼 코드입니다.

import pyupbit
import os

API_KEY = os.getenv("UPBIT_API_KEY")  # 발급받은 KEY 넣으세요
API_SECRET = os.getenv("UPBIT_SECRET_KEY") # 발급받은 KEY 넣으세요

upbit = pyupbit.Upbit(API_KEY, API_SECRET)
items = upbit.get_deposit_withdraw_status()

for item in items:
    print(item)

 

 

실행시켜보면 다음과 같은 결과가 나옵니다.

{'currency': 'ZIL', 'wallet_state': 'working', 'block_state': 'normal', 'block_height': 2245435, 'block_updated_at': '2022-08-06T07:32:35.357+00:00', 'block_elapsed_minutes': 2}
{'currency': 'IOTA', 'wallet_state': 'working', 'block_state': 'normal', 'block_height': 4007468, 'block_updated_at': '2022-08-06T07:32:35.293+00:00', 'block_elapsed_minutes': 2}
{'currency': 'LOOM', 'wallet_state': 'working', 'block_state': 'normal', 'block_height': 15287400, 'block_updated_at': '2022-08-06T07:31:35.475+00:00', 'block_elapsed_minutes': 3}
{'currency': 'BCH', 'wallet_state': 'working', 'block_state': 'normal', 'block_height': 752065, 'block_updated_at': '2022-08-06T07:31:59.902+00:00', 'block_elapsed_minutes': 2}
{'currency': 'ADD', 'wallet_state': 'withdraw_only', 'block_state': 'normal', 'block_height': 261199060, 'block_updated_at': '2022-08-06T07:32:37.740+00:00', 'block_elapsed_minutes': 2}
{'currency': 'MFT', 'wallet_state': 'working', 'block_state': 'normal', 'block_height': 15287400, 'block_updated_at': '2022-08-06T07:31:35.475+00:00', 'block_elapsed_minutes': 3}
{'currency': 'IOST', 'wallet_state': 'working', 'block_state': 'normal', 'block_height': 213436450, 'block_updated_at': '2022-08-06T07:32:41.204+00:00', 'block_elapsed_minutes': 2}
{'currency': 'RFR', 'wallet_state': 'working', 'block_state': 'normal', 'block_height': 15287400, 'block_updated_at': '2022-08-06T07:31:35.475+00:00', 'block_elapsed_minutes': 3}

 

 

get_deposit_withdraw_status 함수의 특징은 로그인을 해야 호출가능하지만 정작 내가 갖고 있지 않은 코인이더라도 입출금가능 여부를 알 수 있어 좋습니다.

currency는 당연히 코인명(symbol)을 의미하고 wallet_status가 working인 것만 입출금이 정상적으로 된다는 것을 의미합니다.

아까 입출금이 안되던 SXP를 볼까요?

{'currency': 'SXP', 'wallet_state': 'paused', 'block_state': 'inactive', 'block_height': 1174994, 'block_updated_at': '2022-07-15T15:04:41.897+00:00', 'block_elapsed_minutes': 31230}

 

 

아니나 다를까 wallet_state가 paused입니다.

이제 get_deposit_withdraw_status를 사용해 입출금가능여부를 알게 되었으니 

갭이 발생했다고 헤서 다른 거래소에서 입금시켜야지~ 라기 보다 먼저 입출금이 되는지 확인해볼 수 있게 되었습니다

짝짝

반응형
이 포스팅은 쿠팡파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

댓글