지난번에 이어,
업비트 API를 활용하여 시세 체결 조회를 해서 데이터를 가공해 보려 한다.
지난번에 했었던 코인 현재가 Plot은 아래를 참고하면 된다.
2021.10.16 - [* 디지털 노마드/Python] - 업비트 API를 활용하여 코인 현재가 Plot 그려보기
업비트에서 시세 체결 조회 - 최근 체결 내역을 불러오는 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
다음과 같이 현재 시간 기준의 마켓 상황을 알 수 있다.