본문 바로가기
* 디지털 노마드

업비트 API를 활용하여 현재 시장 세력을 분석해보자

by lesrois 2021. 10. 16.

지난번에 이어,

업비트 API를 활용하여 시세 체결 조회를 해서 데이터를 가공해 보려 한다.

 

지난번에 했었던 코인 현재가 Plot은 아래를 참고하면 된다. 

 

 

2021.10.16 - [* 디지털 노마드/Python] - 업비트 API를 활용하여 코인 현재가 Plot 그려보기

 

업비트 API를 활용하여 코인 현재가 Plot 그려보기

요즘 핫한 코인 시장... 코인 거래소별로 API를 활용해서 투자 모델을 만들어 보고자 한다. 첫 시작은 업비트이다. 업비트 개발자 센터의 레퍼런스는 아래와 같다. Ref: https://docs.upbit.com/reference 업

lesrois.tistory.com

 

업비트에서 시세 체결 조회 - 최근 체결 내역을 불러오는 API가 있는데, Response 결과는 아래와 같다.

여기서 변수 중 하나인 count는 체결 개수인데 최대 500개까지 조회가 된다.

 

market 마켓 구분 코드 String
trade_date_utc 체결 일자(UTC 기준) String
trade_time_utc 체결 시각(UTC 기준) String
timestamp 체결 타임스탬프 Long
trade_price 체결 가격 Double
trade_volume 체결량 Double
prev_closing_price 전일 종가 Double
change_price 변화량 Double
ask_bid 매도/매수 String
sequential_id 체결 번호(Unique) Long

 

 

1. 현재 시장의 체결 정보를 가져오는 함수를 정의한다.

 

def get_market_env(coin_name):
    print(datetime.datetime.today())
    
    market = "KRW-" + coin_name
    url = "https://api.upbit.com/v1/trades/ticks"
    querystring = {"market":market, "count":"500"}
    headers = {"Accept": "application/json"}
    response = requests.request("GET", url, headers=headers, params=querystring)

    recent_trade = pd.DataFrame(json.loads(response.text))
    env = pd.DataFrame({
                '매수세력 수':[len(recent_trade[recent_trade['ask_bid']=='BID'])],
                '매도세력 수':[len(recent_trade[recent_trade['ask_bid']=='ASK'])],
                '매수세력 규모':[recent_trade[recent_trade['ask_bid']=='BID']['trade_volume'].sum()],
                '매도세력 규모':[recent_trade[recent_trade['ask_bid']=='ASK']['trade_volume'].sum()],
                '규모(매수)': [recent_trade[recent_trade['ask_bid']=='BID']['trade_volume'].sum()/(recent_trade[recent_trade['ask_bid']=='BID']['trade_volume'].sum()+recent_trade[recent_trade['ask_bid']=='ASK']['trade_volume'].sum())],
                '규모(매도)': [recent_trade[recent_trade['ask_bid']=='ASK']['trade_volume'].sum()/(recent_trade[recent_trade['ask_bid']=='BID']['trade_volume'].sum()+recent_trade[recent_trade['ask_bid']=='ASK']['trade_volume'].sum())],
                '매수가격 평균':[recent_trade[recent_trade['ask_bid']=='BID']['trade_price'].mean()],
                '매도가격 평균':[recent_trade[recent_trade['ask_bid']=='ASK']['trade_price'].mean()]
    })
    
    return env, recent_trade

 

불러온 데이터들을 가공해서 매수/매도 세력 수, 규모, 매수/매도 가격 평균 등의 컬럼을 추가해준다.

 

 

2. 데이터를 불러온다.

 

coin_name = 'SRM'
env, recent_trade = get_market_env(coin_name)
env

 

 

다음과 같이 현재 시간 기준의 마켓 상황을 알 수 있다.