(python) 업비트에서 평균 거래량 대비 5분 거래량 비율 알아내기
업비트에서 일주일 평균 거래량 대비 최근 5분 거래량에 대한 비율을 받아오는 예제 코드를 만들어보겠습니다.
언어는 python을 이용할 것이고, upbitpy를 이용할 것입니다.
1. upbitpy 설치
먼저 upbitpy 를 설치합니다. (PC에 python이 설치되어있지 않다면 python 먼저 설치)
pip3 install upbitpy
2. Timer function
일정 간격으로 분봉을 가져오기 위해 System time기준으로 sleep하는 timer function을 만듭니다.
def wait(min):
now = datetime.datetime.now()
remain_second = 60 - now.second
remain_second += 60 * (min - (now.minute % min + 1))
time.sleep(remain_second)
3. 요청 제한에 대한 sleep function
candle 정보를 연속적으로 요청하면 요청 제한에 걸리게 됩니다.
요청 전 요청제한이 걸려있는지 확인하고 제한에 걸렸으면 1초 sleep하는 function을 추가합니다.
# candle 요청 회수 제한이 걸리면 1초 sleep
def check_remaining_candles_req(upbit):
ret = upbit.get_remaining_req()
if ret is None:
return
if 'candles' not in ret.keys():
return
if int(ret['candles']['sec']) == 0:
logging.debug('>>> sleep 1 seconds')
time.sleep(1)
4. 7일 거래량을 받아와 dict에 저장
candles_7d = dict()
# 7일간 거래량
for m in krw_markets:
candles_7d[m] = upbit.get_weeks_candles(m, count=1)[0]
5. 5분봉 가져와서 거래량 비율 확인
while True:
logging.info('평균 거래량 대비 {}분 거래량 비율========================'.format(INTERVAL_MIN))
for m in krw_markets:
vol = upbit.get_minutes_candles(1, m, count=1)[0]['candle_acc_trade_volume']
vol_7d = candles_7d[m]['candle_acc_trade_volume']
vol_7d_avg = (((vol_7d/7.0)/24.0)/60.0)*INTERVAL_MIN
vol_ratio = format((vol/vol_7d_avg)*100.0, '.2f')
logging.info('[{}] {}% (거래량:{}, 평균:{})'.format(
m, vol_ratio, format(vol, '.2f'), format(vol_7d_avg, '.2f')))
check_remaining_candles_req(upbit)
wait(INTERVAL_MIN)
6. 결과
$ python samples/get_volume_ratio.py
python get_volume_ratio.py
INFO:root:평균 거래량 대비 5분 거래량 비율========================
INFO:root:[KRW-BTC] 346.73% (거래량:8.64, 평균:2.49)
INFO:root:[KRW-DASH] 855.35% (거래량:0.98, 평균:0.11)
INFO:root:[KRW-ETH] 254.56% (거래량:66.96, 평균:26.30)
INFO:root:[KRW-NEO] 1503.90% (거래량:49.81, 평균:3.31)
INFO:root:[KRW-MTL] 271.95% (거래량:1925.36, 평균:707.98)
INFO:root:[KRW-LTC] 1725.82% (거래량:83.01, 평균:4.81)
INFO:root:[KRW-STRAT] 3114.94% (거래량:3772.03, 평균:121.09)
INFO:root:[KRW-XRP] 289.79% (거래량:46409.92, 평균:16015.26)
INFO:root:[KRW-ETC] 2.92% (거래량:2.64, 평균:90.43)
INFO:root:[KRW-OMG] 1580.84% (거래량:483.52, 평균:30.59)
INFO:root:[KRW-SNT] 96.49% (거래량:4475.73, 평균:4638.37)
INFO:root:[KRW-WAVES] 30.65% (거래량:7.80, 평균:25.45)
INFO:root:[KRW-PIVX] 28.07% (거래량:664.07, 평균:2365.36)
INFO:root:[KRW-XEM] 5.54% (거래량:31.62, 평균:571.11)
INFO:root:[KRW-ZEC] 49.58% (거래량:0.24, 평균:0.48)
INFO:root:[KRW-XMR] 798.76% (거래량:1.79, 평균:0.22)
INFO:root:[KRW-QTUM] 396.41% (거래량:650.83, 평균:164.18)
INFO:root:[KRW-GNT] 133.84% (거래량:3962.70, 평균:2960.76)
INFO:root:[KRW-LSK] 742.19% (거래량:30.83, 평균:4.15)
INFO:root:[KRW-STEEM] 2839.37% (거래량:5000.00, 평균:176.10)
INFO:root:[KRW-XLM] 123.55% (거래량:2358.00, 평균:1908.52)
INFO:root:[KRW-ARDR] 90.69% (거래량:805.46, 평균:888.13)
INFO:root:[KRW-KMD] 92.75% (거래량:50.00, 평균:53.91)
INFO:root:[KRW-ARK] 172.78% (거래량:39.06, 평균:22.61)
...
Code
전체 코드는 upbitpy/samples/get_volume_ratio.py에서 확인하실 수 있습니다.