def test_get_market_all(self): upbit = Upbitpy() ret = upbit.get_market_all() 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)
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 return krw_markets def get_days_candles(self, market): if market not in self.__krw_markets.keys(): return None candles = self.__upbit.get_days_candles(market, count=10) return candles def get_days_many_candles(self, market): if market not in self.__krw_markets.keys(): return None candles = self.__upbit.get_days_candles(market, count=100) return candles
class MarketSearcher: def __init__(self): self.upbit = Upbitpy() self.markets = self.upbit.get_market_all() self.KRWmarkets = [] self.BTCmarkets = [] self.USDmarkets = [] for market in markets: self.pair = market['market'] self.marketname = pair[0:3] if self.marketname == 'BTC': self.BTCmarkets.append(pair) elif self.marketname == 'KRW': self.KRWmarkets.append(pair) else: self.USDmarkets.append(pair) def get_market_spread(self, makret): #market parameter must be list orderbook = upbit.get_orderbook(market) surfaceorder = orderbook[0]['orderbook_units'][0] spread = (surfaceorder['ask_price'] - surfaceorder['bid_price']) / surfaceorder['ask_price'] return spread def get_mininum_tick(self, price): if price <= 10: return 0.01 elif price <= 100: return 0.1 elif price <= 1000: return 1 elif price <= 10000: return 5 elif price <= 100000: return 10 elif price <= 5000000: return 50 elif price <= 1000000: return 100 elif price <= 2000000: return 500 else: return 1000
def main(): upbit = Upbitpy() # 모든 market 얻어오기 all_market = upbit.get_market_all() # market 분류 market_table = {'KRW': []} for m in all_market: for key in market_table.keys(): if m['market'].startswith(key): market_table[key].append(m['market']) # 마켓 별 가격을 가져와 출력 for key in market_table.keys(): logging.info('{} 마켓:'.format(key)) tickers = upbit.get_ticker(market_table[key]) print_tickers(tickers)
commit_db('INSERT INTO Transaction_history (uid, code, num, price, date, trade_type, completed) VALUES (?, ?, ?, ?, ?, ?, ?)', [data[0],data[1],data[2],data[3],strftime("%Y-%m-%d %H:%M:%S"),data[5],data[6]]) class ThreadCount(object): def __init__(self): self = [] def append(self, thread): self = [thread] def getCount(self): return len(self) def join(self): self[0].join() class User: def __init__(self, uid, uname, password): self.id = uid self.uname = uname self.password = password # Now, run the app as a server in debug mode or public mode if __name__ == '__main__': upbit = Upbitpy() markets = upbit.get_market_all() for market in markets: if 'KRW-' in market['market']: krw_markets.append(market['market']) #wsgi.server(eventlet.listen(('127.0.0.1', 5000)), app socketio.run(app, debug=True) # app.run(debug=True) # Debug mode will reload files when changed. # app.run(host='0.0.0.0') # To make the server listen on all public IPs.
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
from upbitpy import Upbitpy upbitpy = Upbitpy() allMarket = upbitpy.get_market_all() KRWList = [] BTCList = [] def GetBTCList(MarketList): List = [] for i in MarketList: if (i['market'][0:3] == 'BTC'): List.append(i['market']) global BTCList BTCList = List def GetKRWList(MarketList): List = [] for i in MarketList: if (i['market'][0:3] == 'KRW'): List.append(i['market']) global KRWList KRWList = List def CanTradeKRWByBTC(KRWList, BTCList): List = [] for i in KRWList:
# get withraws chance # print_json_data(upbitpy.get_withraws_chance('QTUM')) # withdraws coin (not tested) # print_json_data(upbitpy.withdraws_coin('QTUM', 1, 'input address')) # withdraws krw (not tested) # print_json_data(upbitpy.withdraws_krw('1000000000')) ############################################################### # QUOTATION API ############################################################### # get market all print_json_data_list(upbitpy.get_market_all()) # get candles - minutes # print_json_data_list(upbitpy.get_minutes_candles(240, 'KRW-QTUM')) # get candles - days # print_json_data_list(upbitpy.get_days_candles('KRW-QTUM', count=10)) # get candles - weeks # print_json_data_list(upbitpy.get_weeks_candles('KRW-EOS')) # get candles - month # print_json_data_list(upbitpy.get_months_candles('KRW-BTC')) # get trades ticks # print_json_data_list(upbitpy.get_trades_ticks('KRW-QTUM'))
from upbitpy import Upbitpy from time import sleep import datetime if __name__ == '__main__': print("") print("") print("start") upbit = Upbitpy() all_market = upbit.get_market_all() market_table = {'KRW': []} for m in all_market: for key in market_table.keys(): if m['market'].startswith(key): market_table[key].append(m['market']) count = 0 before = 481 while 1: for key in market_table.keys(): tickers = upbit.get_ticker(market_table[key]) for it in tickers: if it['market'].startswith('KRW-XRP'): rate = (it['trade_price'] - before) / before * 100 if rate > 2: now = datetime.datetime.now() print('{} [{}] {} : {} = {}'.format(