Пример #1
0
 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())
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)