def test_get_minutes_candles(self): upbit = Upbitpy() ret = upbit.get_minutes_candles(60, 'KRW-BTC') self.assertIsNotNone(ret) self.assertNotEqual(len(ret), 0) logging.info(ret) logging.info(upbit.get_remaining_req())
def main(): upbit = Upbitpy() # 모든 원화 market 얻어오기 all_market = upbit.get_market_all() krw_markets = [] for m in all_market: if m['market'].startswith('KRW'): krw_markets.append(m['market']) candles_7d = dict() # 7일간 거래량 for m in krw_markets: candles_7d[m] = upbit.get_weeks_candles(m, count=1)[0] check_remaining_candles_req(upbit) 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)
def main(): upbit = Upbitpy() keys = ['opening_price', 'trade_price', 'high_price', 'low_price', 'timestamp'] while True: coin = 'KRW-XRP' candle = upbit.get_minutes_candles(INTERVAL_MIN, coin)[0] logging.info('[{}] {}'.format(datetime.datetime.now().strftime('%Y%m%d %H:%M:%S'), coin)) for key in keys: logging.info('\t{}: {}'.format(key, candle[key])) wait(INTERVAL_MIN)
class Upbit: def __init__(self): self.__upbit = Upbitpy() self.__krw_markets = self.__get_krw_markets() def __get_krw_markets(self): krw_markets = dict() all_markets = self.__upbit.get_market_all() for market in all_markets: if market['market'].startswith('KRW-'): krw_markets[market['market']] = market # print(krw_markets) return krw_markets def get_15minutes_candle(self, market): ''' 주어진 코인명에 대하여 15분 봉의 200개 캔들을 조회 :param market: 마켓 네임 :return: 데이터 프레임 columns={"opening_price": "open", "high_price": "high", "low_price": "low", "trade_price": "close"}) ''' if market not in self.__krw_markets.keys(): return None candles = self.__upbit.get_minutes_candles(15, market, count=1) dt_list = [datetime.datetime.strptime(x['candle_date_time_kst'], "%Y-%m-%dT%H:%M:%S") for x in candles] df = pd.DataFrame(candles, columns=['opening_price', 'high_price', 'low_price', 'trade_price', 'candle_acc_trade_volume'], index=dt_list) df = df.rename( columns={"opening_price": "open", "high_price": "high", "low_price": "low", "trade_price": "close", "candle_acc_trade_volume": "volume"}) # print(candles, type(candles)) return df def get_1hour_candle(self, market): ''' 주어진 코인명에 대하여 1시 봉의 1개 캔들을 조회 :param market: 마켓 네임 :return: 데이터 프레임 columns={"opening_price": "open", "high_price": "high", "low_price": "low", "trade_price": "close"}) ''' if market not in self.__krw_markets.keys(): return None candles = self.__upbit.get_minutes_candles(60, market, count=1) dt_list = [datetime.datetime.strptime(x['candle_date_time_kst'], "%Y-%m-%dT%H:%M:%S") for x in candles] df = pd.DataFrame(candles, columns=['opening_price', 'high_price', 'low_price', 'trade_price', 'candle_acc_trade_volume'], index=dt_list) df = df.rename( columns={"opening_price": "open", "high_price": "high", "low_price": "low", "trade_price": "close", "candle_acc_trade_volume": "volume"}) # print(candles, type(candles)) return df def get_current_price(self, market): cp = self.__upbit.get_ticker(market) # print(cp) return cp def get_hour_candles(self, market): if market not in self.__krw_markets.keys(): return None candles = self.__upbit.get_minutes_candles(15, market, count=60) # print(candles) return candles
def run(self): while True: data = {} # 전체 데이터 불러옴 #all_data = pyupbit.get_current_price(tickers) upbit = Upbitpy() all_info = upbit.get_ticker(tickers) # 단기 급등여부 판단 candle_num = 3 for ticker in all_info: candle_dict = upbit.get_minutes_candles(1, ticker['market'], count=3) last = candle_dict[0]['candle_acc_trade_volume'] last_one = candle_dict[1]['candle_acc_trade_volume'] last_two = candle_dict[2]['candle_acc_trade_volume'] if "KRW-BTC" == ticker['market']: print('----비트코인 거래량-----') print('현재: ' + str(last)) print('1분전: ' + str(last_one)) print('2분전: ' + str(last_two)) if "KRW-BCH" == ticker['market']: print('----비캐 거래량-----') print('현재: ' + str(last)) print('1분전: ' + str(last_one)) print('2분전: ' + str(last_two)) if "KRW-XRP" == ticker['market']: print('----리플 거래량-----') print('현재: ' + str(last)) print('1분전: ' + str(last_one)) print('2분전: ' + str(last_two)) #min_value = 9e+20 #for data in range( 1, candle_list-1) : # if data['candle_acc_trade_volume'] < min_value: # min_value = data['candle_acc_trade_volume'] #-거래량 체크 volume_rising = '-' volume_change_rate = 0.0 if last > last_one * 1.4 or (last > last_one * 1.2 and last_one > last_two * 1.2): volume_rising = '급증' volume_change_rate = (last - last_one) / last_one * 100 #print(volume_change_rate) cur_price = ticker['trade_price'] # 24H 거래량 volume = ticker['acc_trade_volume_24h'] # 부호 있는 거래량 변화율 signed_change_rate = ticker['signed_change_rate'] data[ticker['market']] = (cur_price, ) + (volume, ) + ( signed_change_rate, ) + (volume_rising, ) + ( int(volume_change_rate), ) # 작업이 완료됐을때 이벤트 발생(emit) # data 변수가 바인딩하고 있는 딕셔너리 객체가 전송됨 self.finished.emit(data) time.sleep(1)