기타프로젝트

Upbit, Binance Api 사용

OBJECT_FINALIZE 2021. 6. 7. 13:12

업비트와 binance의 Api를 통하여 내가 만든 프로그램을 이용하여 사이트에 들어가지 않거나 내가 만든 프로그램으로

거래 혹은 정보를 받아 올 수 있다.

 

그 때 사용하기 유용한 Api들을 정리 하려고 한다.

 

Upbit API (pyupbit)

upbit에서 제공하는 API가 아닌 pyupbit를 이용했다.

 

아나콘다를 사용한다면 쉽게 설치가 가능하다.

 

pip isntall pyupbit

설치가 됐으면 

import pyupbit를 사용하여 api를 쓸 수 있다.

 

매수/매도 혹은 내 계좌를 확인하고 싶다면. 업비트에 들어가서 API키를 받아야한다.

API키가 첫 생성시 2개가 주어지고 secret키는 두번 다시 확인 할 수 없으니 첫 생성 시 잘 저장을 해야한다.

 

API키도 생성했고 함수들을 소개한다.

 

계좌 조회

 

upbit = pyupbit.Upbit(upbit_access_key,upbit_secret_key)
print(upbit.get_balances())

access_key, secret_key가 필요하다.

나의 키에 맞는 계좌 정보가 나온다. 계좌 내용으로는

위와 같이 출력이 되고 통화와 잔고가 나온다. 내가 다른 암호화폐를 보유하고 있다면 다음 딕셔너리에 추가가 된다

예를 들어 리플이라면 currency:XRP이고 balance: 는 보유량 avg_buy_price에는 매수 평균가가 나온다.

현재가 조회

price = pyupbit.get_current_price("KRW-XRP")

리플에 대한 현재가를 불러올 수 있다. 현재 얼마인지 단순하게 가격만 나온다.

 KRW대신 BTC를 사용하면 비트코인가격에 맞게 나온다.

 

매수/매도

limit_buy = upbit.buy_limit_order("KRW-XRP","가격","개수")
limit_sell = upbit.sell_limit_order("KRW-XRP","가격","개수")
market_buy = upbit.buy_market_order("KRW-XRP","가격")
market_sell = upbit.sell_market_order("KRW-XRP","가격")

limit_order은 지정가, market_order은 시장가 매수 매도 주문이다.

upbit최소 주문단위는 5000원이고 최소 주문을 맞추지 않는다면 오류 메세지가 출력 된다.

" "사이는 당연히 str타입이 아니고 숫자를 입력하거나 변수를 사용한다면 float로 해야 한다.

 

Binance(CCXT)

아나콘다를 사용할 경우 아래 문구로 설치

pip install ccxt

계좌 조회

 

binance_balance = binance.fetch_balance()
#선물 계좌의 정보를 가져오고 싶다면 아래 코드 사용
binance_balance = binance.fetch_balance(params={"type":"future"})

#출력 [""]를 사용하지 않으면 모든 암호화폐에 대한 정보가 나온다.
print(binance_balance["USDT"])

(필자는 binance로 선물 거래만 사용하기 때문에 선물 계좌 정보를 출력했다.)

free는 보유중인 것이고 used는 포지션으로 들어가 있는 가격이 나온다.

마찬가지로 USDT가 아닌 XRP, BTC같은 티커를 사용해서 다른 정보를 출력하는 것도 가능하다.

현재가 조회

price = binance.fetch_ticker("XRP/USDT")
print(price['close'])

마찬가지로 선물 시장에서 정보를 가져올 때 쓰인다.

현물시장에서는 사용을 안해봤지만 XRP/USDT대신 XRP를 넣는 다거나 다른 방법으로 입력을 하면 가능 할 것 같다.

매수/매도(선물)

def short(self,excuted_volume):                
		binance_ticker_name = "XRP/USDT"
        binance_ticker_name2 = "XRPUSDT"
        #숏 주문 시장가
        order = binance.create_market_sell_order(
            symbol= binance_ticker_name, 
            amount= float(excuted_volume),             
            params={'type': 'future'})   
        binance.fapiPrivate_post_leverage({  
            'symbol': binance_ticker_name2,  
            'leverage': 5,  # target initial leverage, int from 1 to 125
        })
        
        # 숏 주문 지정가   
        # order = binance.create_limit_sell_order(
            # symbol= binance_ticker_name, 
            # # amount= excuted_volume,             
            # price = 1, #(지정가 입력 받음),               
            # params={'type': 'future'}        
            # )
        pprint.pprint(order)

선물 시장에는 매도를 short이라 하고 short포지션을 잡는다 라고 표현한다.

short을 간단하게 설명 하자면 현재 내가 가지고 있지 않지만 빌려서 일단 매도 한다음 포지션을 정리할때 가격으로

사서 갚는 방식이다.

업비트와 마찬가지로 시장가/지정가 주문이 있으며 지정가를 입력받는 차이가 있고

바이낸스의 선물시장에는 배율이 있다.

1배에서 125배까지 가능하다(암호화폐의 기준이나 가격에따라 최대 배율이 조정되긴 한다.)

laverage:5를 변경하면 원하는 배율로 사용가능하다.

 

order = binance.create_market_buy_order(
            symbol= binance_ticker_name, 
            amount= excuted_volume,             
            params={'type': 'future'})   
        binance.fapiPrivate_post_leverage({ 
            'symbol': binance_ticker_name2, 
            'leverage': 5,  # target initial leverage, int from 1 to 125
        })

Long 포지션으로 short와 매우 유사하다.

long포지션이나 short 포지션을 잡고 있다가 이를 정리하고 싶다면 같은 양으로 반대편 주문을 하면 포지션이 정리가 된다.