def setUp(self): print("\n\rstarting live test binance.com-futures") self.unicorn_fy = UnicornFy() ubwa = BinanceWebSocketApiManager(exchange="binance.com-futures") worker_thread = threading.Thread( target=print_stream_data_from_stream_buffer_futures, args=(ubwa, )) worker_thread.start() channels = { 'aggTrade', 'trade', 'kline_1m', 'kline_5m', 'kline_15m', 'kline_30m', 'kline_1h', 'kline_2h', 'kline_4h', 'kline_6h', 'kline_8h', 'kline_12h', 'kline_1d', 'kline_3d', 'kline_1w', 'kline_1M', 'miniTicker', 'ticker', 'bookTicker', 'depth5', 'depth10', 'depth20', 'depth', 'depth@100ms' } arr_channels = {'!miniTicker', '!ticker', '!bookTicker'} markets = { 'bnbbtc', 'ethbtc', 'btcusdt', 'bchabcusdt', 'xrpusdt', 'rvnbtc', 'ltcusdt', 'adausdt', 'eosusdt', 'wanbnb', 'zrxbnb', 'agibnb', 'funeth', 'arketh', 'engeth' } for channel in channels: ubwa.create_stream(channel, markets, stream_label=channel) ubwa.create_stream(arr_channels, "arr") stream_id_trade = ubwa.get_stream_id_by_label("trade") ubwa.get_stream_subscriptions(stream_id_trade) time.sleep(70) ubwa.stop_manager_with_all_streams()
def create_binance_ws_stream(api_manager: BinanceWebSocketApiManager, channels: str, markets: str, stream_label: str, api_key=False, api_secret=False, symbols=False, **kwargs): """ Create a new Binance websocket stream and return the stream id. """ stream_id = api_manager.create_stream(channels, markets, symbols=symbols, stream_label=stream_label, stream_buffer_name=True, api_key=api_key, api_secret=api_secret, **kwargs) if not stream_id: raise CreateBinanceStreamFailedException( f"Failed to create stream {stream_label}.") logging.info( f"Stream {stream_label} created. Channels: {channels}. Markets: {markets}. Symbols: {symbols}. Stream id: {stream_id}." ) return stream_id
def main(): logging.basicConfig( level=logging.DEBUG, filename=os.path.basename(__file__) + '.log', format= "{asctime} [{levelname:8}] {process} {thread} {module}: {message}", style="{") binance_websocket_api_manager = BinanceWebSocketApiManager( exchange="binance.com-futures") config_open = open("./param.json", "r") param_json = json.load(config_open) param = robot_param(param_json) binance = Binance(api_key=param.api_key, api_secret=param.api_secret) worker_thread = threading.Thread(target=robot, args=(binance_websocket_api_manager, binance)) worker_thread.start() print( "\r\n=========================== Starting aggTrade ===========================\r\n" ) markets = [rename_pair(param.pair)] aggtrade_stream_id = binance_websocket_api_manager.create_stream( ["aggTrade", "depth5"], markets) time.sleep(7)
def threaded_func(q1, conn, t): with conn: binance_websocket_api_manager = BinanceWebSocketApiManager( exchange="binance.com") binance_websocket_api_manager.create_stream( ['bookTicker'], [t['trade']['pair'].replace('.', '').lower()]) while True: oldest_stream_data_from_stream_buffer = binance_websocket_api_manager \ .pop_stream_data_from_stream_buffer() if oldest_stream_data_from_stream_buffer: res_bnb = oldest_stream_data_from_stream_buffer if 'result' not in res_bnb: conn.sendall(res_bnb.encode()) conn.recv(2) else: continue
async def main(): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind(('127.0.0.1', 45620)) s.listen() conn, addr = s.accept() with conn: binance_websocket_api_manager = BinanceWebSocketApiManager(exchange="binance.com") binance_websocket_api_manager.create_stream(['depth5@100ms'], ['etheur']) while True: oldest_stream_data_from_stream_buffer = binance_websocket_api_manager\ .pop_stream_data_from_stream_buffer() if oldest_stream_data_from_stream_buffer: res_bnb = oldest_stream_data_from_stream_buffer if 'result' not in res_bnb: conn.sendall(res_bnb.encode()) else: continue
def stream(self): # streams 24hour ticker & Asks Bids binance_websocket_api_manager = BinanceWebSocketApiManager( exchange="binance.com") # websocket connection binance_websocket_api_manager.create_stream( ["ticker", "trade"], [self.symbol_unicorn]) # TODO we might be able to put this in self i = 0 while (self.stay_alive): oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer( ) if oldest_stream_data_from_stream_buffer: stream_data = UnicornFy.binance_com_websocket( oldest_stream_data_from_stream_buffer) if (stream_data['event_type'] == "24hrTicker"): # set 24hr change to the value there self.change24hr = float( stream_data['data'][0]['price_change_percent']) self.bid = float(stream_data["data"][0]["best_bid_price"]) self.ask = float(stream_data["data"][0]["best_ask_price"]) self.ask_quantity = float( stream_data["data"][0]["best_ask_quantity"]) self.bid_quantity = float( stream_data["data"][0]["best_bid_quantity"]) if (i == 0): # Will make loading boxes much faster self.price = float( stream_data['data'][0]['last_price']) i += 1 elif (stream_data["event_type"] == "trade"): self.price = float(stream_data["price"]) while (self.paused): time.sleep(5) time.sleep(self.SUPER.a * (1 / 4)) binance_websocket_api_manager.stop_manager_with_all_streams() self.shut_down_count += 2 if (self.messages): print(self.symbol_ccxt, "24hr stream succesfully shut down", "\n")
def test_isolated_margin(self): binance_websocket_api_manager = BinanceWebSocketApiManager( exchange="binance.com-isolated_margin") stream_id = binance_websocket_api_manager.create_stream( 'arr', '!userData', symbols="CELRBTC", api_key="key", api_secret="secret") time.sleep(10) binance_websocket_api_manager.print_stream_info(stream_id) binance_websocket_api_manager.stop_manager_with_all_streams()
class TestBinanceOrgManager(unittest.TestCase): # Test binance.org (Binance Chain Dex) def setUp(self): self.binance_org_testnet = BinanceWebSocketApiManager( exchange="binance.org-testnet") stream_id = self.binance_org_testnet.create_stream( ['orders', 'transfers', 'accounts'], "tbnb1unxhf8fat985ksajatfa5jea58j2kzg7mfy0e7") self.binance_org_testnet.unsubscribe_from_stream( stream_id, "tbnb1unxhf8fat985ksajatfa5jea58j2kzg7mfy0e7") def tearDown(self): self.binance_org_testnet.stop_manager_with_all_streams()
class TickParser: symbols = [ 'ethusdt', 'bnbusdt', 'ltcusdt', 'btcusdt', 'ethupusdt', 'bnbupusdt', 'ltcupusdt', 'btcupusdt', 'ethdownusdt', 'bnbdownusdt', 'ltcdownusdt', 'btcdownusdt', ] def __init__(self): self.binance_websocket_api_manager = BinanceWebSocketApiManager( exchange="binance.com", output_default="UnicornFy") self.binance_websocket_api_manager.create_stream( ['depth5'], self.symbols, stream_label="UnicornFy", output="UnicornFy")
class UserStream: def __init__(self, api_key, api_secret, test=False): self.test = test self.key = api_key self.secret = api_secret self._queue = janus.Queue() threading.Thread(target=self._start, daemon=True).start() @asynccontextmanager async def message(self): try: msg = await self._queue.async_q.get() yield msg finally: self._queue.async_q.task_done() def _start(self): self.exchange = "binance.com-futures" + ("-testnet" if self.test else "") self.manager = BinanceWebSocketApiManager(exchange=self.exchange) self.manager.create_stream("arr", "!userData", api_key=self.key, api_secret=self.secret) logging.info("Spawning listener for futures user data") while True: buf = self.manager.pop_stream_data_from_stream_buffer() if not buf: time.sleep(0.05) continue try: msg = json.loads(buf) self._queue.sync_q.put(msg) except Exception as err: logging.error(f"Failed to decode message {buf}: {err}")
#print(oldest_stream_data_from_stream_buffer) # create instance of BinanceWebSocketApiManager for Binance Chain DEX binance_websocket_api_manager = BinanceWebSocketApiManager(exchange="binance.org") print("starting monitoring api!") binance_websocket_api_manager.start_monitoring_api() # start a worker process to move the received stream_data from the stream_buffer to a print function worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer, args=(binance_websocket_api_manager,)) worker_thread.start() # userAddress streams binance_dex_user_address = "" id = binance_websocket_api_manager.create_stream('orders', binance_dex_user_address) binance_websocket_api_manager.create_stream('accounts', binance_dex_user_address) binance_websocket_api_manager.create_stream('transfers', binance_dex_user_address) user_address_multi_stream_id = binance_websocket_api_manager.create_stream(['orders', 'transfers', 'accounts'], binance_dex_user_address) binance_websocket_api_manager.create_stream(["allTickers"], ["$all"]) binance_websocket_api_manager.create_stream(["allMiniTickers"], ["$all"]) binance_websocket_api_manager.create_stream(["blockheight"], ["$all"]) markets = 'RAVEN-F66_BNB' binance_websocket_api_manager.create_stream(["trades"], markets) binance_websocket_api_manager.create_stream(["marketDepth"], markets) binance_websocket_api_manager.create_stream(["kline_1h"], markets) binance_websocket_api_manager.create_stream(["kline_1h"], markets) binance_websocket_api_manager.create_stream(["ticker"], markets)
'cmtbtc', 'cvcbtc', 'kncbtc', 'rpxbnb', 'zenbnb', 'cndbnb', 'ardrbnb', 'bchabcbusd', 'ltcbnb', 'pivxeth', 'skybtc', 'tntbtc', 'poebtc', 'steembtc', 'icxusdt', 'tfuelbtc', 'chzbtc', 'vibeth', 'winusdc', 'gtobtc', 'linkusdc', 'batbusd', 'rdnbtc', 'dataeth', 'bttpax', 'zrxbnb', 'vibbtc', 'neobnb', 'cosbtc', 'powreth', 'rlcusdt', 'hbarbnb', 'wabieth', 'bqxeth', 'aionbtc', 'aeeth', 'mthbtc', 'wrxbtc', 'pptbtc', 'nknbtc', 'zecusdt', 'stormeth', 'qtumusdt' ] channels = [ 'kline_1m', 'kline_5m', 'kline_15m', 'kline_30m', 'kline_1h', 'kline_12h', 'kline_1w', 'trade', 'miniTicker', 'depth20' ] for channel in channels: binance_websocket_api_manager.create_stream(channel, markets) def print_stream_data_from_stream_buffer(binance_websocket_api_manager): print("waiting 30 seconds, then we start flushing the stream_buffer") time.sleep(30) while True: if binance_websocket_api_manager.is_manager_stopping(): exit(0) oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer( ) if oldest_stream_data_from_stream_buffer is False: time.sleep(0.01) else: try: # remove # to activate the print function:
markets = [] try: binance_rest_client = Client(binance_api_key, binance_api_secret) binance_websocket_api_manager = BinanceWebSocketApiManager() except requests.exceptions.ConnectionError: print("No internet connection?") sys.exit(1) # start a worker process to move the received stream_data from the stream_buffer to a print function worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer, args=(binance_websocket_api_manager, )) worker_thread.start() data = binance_rest_client.get_all_tickers() for item in data: markets.append(item['symbol']) binance_websocket_api_manager.set_private_api_config(binance_api_key, binance_api_secret) binance_websocket_api_manager.create_stream(["!userData"], ["arr"]) binance_websocket_api_manager.create_stream(arr_channels, "arr") for channel in channels: binance_websocket_api_manager.create_stream(channel, markets) while True: binance_websocket_api_manager.print_summary() time.sleep(1)
# define some markets markets = { 'bnbbtc', 'ethbtc', 'btcusdt', 'bchabcusdt', 'xrpusdt', 'rvnbtc', 'ltcusdt', 'adausdt', 'eosusdt', 'neousdt', 'bnbusdt', 'adabtc', 'ethusdt', 'trxbtc', 'bchabcbtc', 'ltcbtc', 'xrpbtc', 'ontbtc', 'bttusdt', 'eosbtc', 'xlmbtc', 'bttbtc', 'tusdusdt', 'xlmusdt', 'qkcbtc', 'zrxbtc', 'neobtc', 'adaeth', 'icxusdt', 'btctusd', 'icxbtc', 'btcusdc', 'wanbtc', 'zecbtc', 'wtcbtc', 'ethtusd', 'batusdt', 'mcobtc', 'neoeth', 'bntbtc', 'eostusd', 'lrcbtc', 'funbtc', 'zecusdt', 'bnbpax', 'linkusdt', 'hceth', 'zrxeth', 'icxeth', 'xmreth', 'neobnb', 'etceth', 'zeceth', 'xmrbnb', 'wanbnb', 'zrxbnb', 'agibnb', 'funeth', 'arketh', 'engeth' } # create stream 1 binance_get_ticker_stream_id = binance_websocket_api_manager.create_stream( "arr", "!ticker") # create stream 2 binance_get_kline_stream_id = binance_websocket_api_manager.create_stream( ['kline_1m', 'kline_5m', 'kline_30m', 'kline_1h', 'kline_15m'], markets) binance_get_trade_stream_id = binance_websocket_api_manager.create_stream( ['trade'], markets) time.sleep(5) # replace stream 1 with stream 3 (stream 1 will not get stopped till stream 3 received its first data row binance_get_multi_stream_id = binance_websocket_api_manager.replace_stream( binance_get_ticker_stream_id, ['trade', 'depth', 'depth10', 'aggTrade', 'miniTicker'], markets) # subscribe new markets to a stream
time.sleep(0.01) else: #print(oldest_stream_data_from_stream_buffer) pass # create instance of BinanceWebSocketApiManager for Binance Chain DEX binance_websocket_api_manager = BinanceWebSocketApiManager(exchange="binance.com") # start a worker process to move the received stream_data from the stream_buffer to a print function worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer, args=(binance_websocket_api_manager,)) worker_thread.start() #markets = ['xrpusdt', 'rvnbtc'] markets = ['xrpusdt'] stream_id = binance_websocket_api_manager.create_stream(["kline_1m"], markets) time.sleep(5) binance_websocket_api_manager.get_stream_subscriptions(stream_id) #binance_websocket_api_manager.subscribe_to_stream(stream_id, # channels=['kline_1m', 'kline_5m', 'marketDepth', # 'ticker', 'miniTicker', 'marketDiff']) #binance_websocket_api_manager.subscribe_to_stream(stream_id, channels="arr", markets="!miniTicker") #time.sleep(5) #binance_websocket_api_manager.get_stream_subscriptions(stream_id) #binance_websocket_api_manager.unsubscribe_from_stream(stream_id, # channels=['kline_1m', 'marketDepth', # 'ticker', 'miniTicker', 'marketDiff'],
logging.basicConfig( filename=os.path.basename(__file__) + '.log', format="{asctime} [{levelname:8}] {process} {thread} {module}: {message}", style="{") logging.getLogger('unicorn-log').addHandler(logging.StreamHandler()) logging.getLogger('unicorn-log').setLevel(logging.INFO) # create instance of BinanceWebSocketApiManager binance_websocket_api_manager = BinanceWebSocketApiManager() # set api key and secret for userData stream binance_api_key = "" binance_api_secret = "" binance_websocket_api_manager.set_private_api_config(binance_api_key, binance_api_secret) userdata_stream_id = binance_websocket_api_manager.create_stream(["arr"], ["!userData"]) ticker_all_stream_id = binance_websocket_api_manager.create_stream(["!ticker"], ["arr"]) miniticker_stream_id = binance_websocket_api_manager.create_stream( ["arr"], ["!miniTicker"]) markets = { 'bnbbtc', 'ethbtc', 'btcusdt', 'bchabcusdt', 'xrpusdt', 'rvnbtc', 'ltcusdt', 'adausdt', 'eosusdt', 'neousdt', 'bnbusdt', 'adabtc', 'ethusdt', 'trxbtc', 'bchabcbtc', 'ltcbtc', 'xrpbtc', 'ontbtc', 'bttusdt', 'eosbtc', 'xlmbtc', 'bttbtc', 'tusdusdt', 'xlmusdt', 'qkcbtc', 'zrxbtc', 'neobtc', 'adaeth', 'icxusdt', 'btctusd', 'icxbtc', 'btcusdc', 'wanbtc', 'zecbtc', 'wtcbtc', 'batbtc', 'adabnb', 'etcusdt', 'qtumusdt', 'xmrbtc', 'trxeth', 'adatusd', 'trxxrp', 'trxbnb', 'dashbtc', 'rvnbnb', 'bchabctusd', 'etcbtc', 'bnbeth', 'ethpax', 'nanobtc', 'xembtc', 'xrpbnb', 'bchabcpax', 'xrpeth',
'bnbbtc', 'ethbtc', 'btcusdt', 'bchabcusdt', 'xrpusdt', 'rvnbtc', 'ltcusdt', 'adausdt', 'eosusdt', 'neousdt', 'bnbusdt', 'adabtc', 'ethusdt', 'trxbtc', 'trxbtc', 'bchabcbtc', 'ltcbtc', 'xrpbtc', 'ontbtc', 'bttusdt', 'eosbtc', 'xlmbtc', 'bttbtc', 'tusdusdt', 'xlmusdt', 'qkcbtc', 'zrxbtc', 'neobtc', 'adaeth', 'icxusdt', 'btctusd', 'icxbtc', 'btcusdc', 'wanbtc', 'zecbtc', 'wtcbtc' ] channels = [ 'trade', 'kline_1m', 'kline_5m', 'kline_15m', 'kline_30m', 'kline_1h', 'kline_12h', 'depth5' ] markets_1 = ['bnbbtc', 'ethbtc'] channels_1 = ['trade', 'kline_1m', '!ticker'] stream_id = binance_websocket_api_manager.create_stream(channels_1, markets_1) markets_2 = [ 'batbtc', 'adabnb', 'etcusdt', 'qtumusdt', 'xmrbtc', 'trxeth', 'adatusd', 'trxxrp', 'trxbnb', 'dashbtc', 'rvnbnb', 'bchabctusd', 'etcbtc', 'bnbeth', 'ethpax', 'nanobtc', 'xembtc' ] binance_websocket_api_manager.subscribe_to_stream(stream_id, markets=markets_2) markets_3 = ['!miniTicker'] binance_websocket_api_manager.subscribe_to_stream(stream_id, markets=markets_3) markets_4 = [ 'engbtc', 'zileth', 'xlmeth', 'eosbnb', 'xrppax', 'lskbtc', 'npxsbtc', 'xmrusdt', 'ltcpax', 'xmrusdt', 'ethtusd', 'batusdt', 'mcobtc', 'neoeth', 'bntbtc', 'eostusd', 'lrcbtc', 'funbtc', 'zecusdt', 'bnbpax', 'linkusdt',
import sys import time import os try: from unicorn_fy.unicorn_fy import UnicornFy except ImportError: print("Please install `unicorn-fy`! https://pypi.org/project/unicorn-fy/") sys.exit(1) # https://docs.python.org/3/library/logging.html#logging-levels logging.basicConfig( level=logging.ERROR, filename=os.path.basename(__file__) + '.log', format="{asctime} [{levelname:8}] {process} {thread} {module}: {message}", style="{") # create instance of BinanceWebSocketApiManager binance_websocket_api_manager = BinanceWebSocketApiManager( exchange="binance.com") binance_api_key = "I25sjQLfPuTBzMGNiHGPFq7UpxSZ9kdjjvgBri20sDHxJqFG21WabzpHAk1P9To1" binance_api_secret = "ogrjfEnUpokY8VKKtlPNNUS3iWTqX9QuwS5vYwcs8fBThIRhQn4AyNL35cRWhuz5" binance_websocket_api_manager.set_private_api_config(binance_api_key, binance_api_secret) userdata_stream_id = binance_websocket_api_manager.create_stream( ["!userData"], ["arr"], "userData stream") ubwa = binance_websocket_api_manager IPython.embed()
time.sleep(0.01) else: #pass print(oldest_stream_data_from_stream_buffer) # start a worker process to move the received stream_data from the stream_buffer to a print function worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer, args=(binance_websocket_api_manager, )) worker_thread.start() # create streams print( "\r\n========================================== Starting ticker all ========================================\r\n" ) ticker_arr_stream_id = binance_websocket_api_manager.create_stream( "arr", "!ticker") time.sleep(7) binance_websocket_api_manager.stop_stream(ticker_arr_stream_id) time.sleep(2) print( "\r\n=========================================== Stopp ticker all ==========================================\r\n" ) print( "\r\n============================================ Starting ticker ==========================================\r\n" ) ticker_stream_id = binance_websocket_api_manager.create_stream( "ticker", ['bnbbtc', 'ethbtc']) time.sleep(7) binance_websocket_api_manager.stop_stream(ticker_stream_id) time.sleep(2)
exit(0) oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer( ) if oldest_stream_data_from_stream_buffer is False: time.sleep(0.01) # create instance of BinanceWebSocketApiManager for Binance.com Futures binance_websocket_api_manager = BinanceWebSocketApiManager( exchange="binance.com-futures") # set api key and secret for userData stream binance_je_api_key = "" binance_je_api_secret = "" userdata_stream_id = binance_websocket_api_manager.create_stream( ["arr"], ["!userData"], api_key=binance_je_api_key, api_secret=binance_je_api_secret) bookticker_all_stream_id = binance_websocket_api_manager.create_stream( ["arr"], ["!bookTicker"]) # https://binance-docs.github.io/apidocs/futures/en/#mark-price-stream-for-all-market binance_websocket_api_manager.create_stream(["!markPrice"], "arr@1s", stream_label="!markPrice@arr@1s") markets = {'btcusdt', 'bchusdt', 'ethusdt'} binance_websocket_api_manager.create_stream(["aggTrade"], markets) binance_websocket_api_manager.create_stream(["markPrice"], markets) binance_websocket_api_manager.create_stream(["kline_1m"], markets) binance_websocket_api_manager.create_stream(["kline_5m"], markets)
# signs, if you want to get an active connection to a Binance webstream. # https://github.com/oliver-zehentleitner/unicorn-binance-websocket-api/blob/master/tools/test_max_websocket_uri_length.py if binance_websocket_api_manager.is_websocket_uri_length_valid(channels, markets): print("URI with `markets` length is valid!") else: print("URI with `markets` length is too long!") if binance_websocket_api_manager.is_websocket_uri_length_valid(channels, markets_mega_list): print("URI with `markets_mega_list` length is valid!") else: print("URI with `markets_mega_list` length is too long!") print("############################################################################################################\r\n") # create and start some streams first_multi_stream_id = binance_websocket_api_manager.create_stream(channels, markets) ticker_stream_id = binance_websocket_api_manager.create_stream(["arr"], ["!miniTicker"]) miniticker_stream_id = binance_websocket_api_manager.create_stream(["arr"], ["!ticker"]) time.sleep(4) first_multi_stream_info = binance_websocket_api_manager.get_stream_info(first_multi_stream_id) print(first_multi_stream_id, "received", first_multi_stream_info['processed_receives_total'], "records till now! ##\r\n") # stop the streams binance_websocket_api_manager.stop_stream(first_multi_stream_id) binance_websocket_api_manager.stop_stream(miniticker_stream_id) print("############################################################################################################\r\n" "# waiting, till stream", first_multi_stream_id, "has stopped!\r\n" "############################################################################################################") binance_websocket_api_manager.wait_till_stream_has_stopped(first_multi_stream_id) print("############################################################################################################\r\n"
binance_websocket_api_manager = BinanceWebSocketApiManager() # create instance of BinanceWebSocketApiManager and call progress_data # define stream channels channels = {'depth20', 'miniTicker'} markets = ['ethbtc', 'ltcbtc', 'bnbbtc', 'neobtc', 'qtumeth', 'eoseth', 'snteth', 'bnteth', 'gasbtc', 'bnbeth', 'btcusdt', 'ethusdt', 'oaxeth', 'dnteth', 'mcoeth', 'mcobtc', 'wtcbtc', 'wtceth', 'lrcbtc', 'lrceth', 'qtumbtc', 'yoyobtc', 'omgbtc', 'omgeth', 'zrxbtc', 'zrxeth', 'stratbtc', 'strateth', 'snglsbtc', 'snglseth', 'bqxbtc', 'bqxeth', 'kncbtc', 'knceth', 'funbtc', 'funeth', 'snmbtc', 'snmeth', 'neoeth', 'iotabtc', 'iotaeth', 'linkbtc', 'linketh', 'xvgbtc', 'xvgeth', 'mdabtc', 'mdaeth', 'mtlbtc', 'mtleth', 'eosbtc', 'sntbtc', 'etceth', 'etcbtc', 'mthbtc', 'mtheth', 'engbtc', 'engeth', 'dntbtc', 'zecbtc', 'zeceth', 'bntbtc', 'astbtc', 'asteth', 'dashbtc', 'dasheth', 'oaxbtc', 'btgbtc', 'btgeth', 'evxbtc', 'evxeth', 'reqbtc', 'reqeth', 'vibbtc', 'vibeth', 'trxbtc', 'trxeth', 'powrbtc', 'powreth', 'arkbtc', 'arketh', 'yoyoeth', 'xrpbtc', 'xrpeth', 'enjbtc', 'enjeth', 'storjbtc', 'storjeth', 'bnbusdt', 'yoyobnb', 'powrbnb', 'kmdbtc', 'kmdeth', 'nulsbnb', 'rcnbtc', 'rcneth', 'rcnbnb', 'nulsbtc', 'nulseth', 'rdnbtc', 'rdneth', 'rdnbnb', 'xmrbtc', 'xmreth', 'dltbnb', 'wtcbnb', 'dltbtc', 'dlteth', 'ambbtc', 'ambeth', 'ambbnb', 'batbtc', 'bateth', 'batbnb', 'bcptbtc', 'bcpteth', 'bcptbnb', 'arnbtc', 'arneth', 'gvtbtc', 'gvteth', 'cdtbtc', 'cdteth', 'gxsbtc', 'gxseth', 'neousdt', 'neobnb', 'poebtc', 'poeeth', 'qspbtc', 'qspeth', 'qspbnb', 'btsbtc', 'btseth', 'btsbnb', 'xzcbtc', 'xzceth', 'xzcbnb', 'lskbtc', 'lsketh', 'lskbnb', 'tntbtc', 'tnteth', 'fuelbtc', 'fueleth', 'manabtc', 'manaeth', 'bcdbtc', 'bcdeth', 'dgdbtc', 'dgdeth', 'iotabnb', 'adxbtc', 'adxeth', 'adxbnb', 'adabtc', 'adaeth', 'pptbtc', 'ppteth', 'cmtbtc', 'cmteth', 'cmtbnb', 'xlmbtc', 'xlmeth', 'xlmbnb', 'cndbtc', 'cndeth', 'cndbnb', 'lendbtc', 'lendeth', 'wabibtc', 'wabieth', 'wabibnb', 'ltceth', 'ltcusdt', 'ltcbnb', 'tnbbtc', 'tnbeth', 'wavesbtc', 'waveseth', 'wavesbnb', 'gtobtc', 'gtoeth', 'gtobnb', 'icxbtc', 'icxeth', 'icxbnb', 'ostbtc', 'osteth', 'ostbnb', 'elfbtc', 'elfeth', 'aionbtc', 'aioneth', 'aionbnb', 'neblbtc', 'nebleth', 'neblbnb', 'brdbtc', 'brdeth', 'brdbnb', 'mcobnb', 'edobtc', 'edoeth', 'navbtc', 'naveth', 'navbnb', 'lunbtc', 'luneth', 'appcbtc', 'appceth', 'appcbnb', 'vibebtc', 'vibeeth'] """ markets = ['ethbtc', 'ltcbtc', 'bnbbtc', 'neobtc', 'qtumeth', 'eoseth', 'snteth', 'bnteth', 'gasbtc', 'bnbeth', 'btcusdt', 'ethusdt', 'oaxeth', 'dnteth', 'mcoeth', 'mcobtc', 'wtcbtc', 'wtceth', 'lrcbtc', 'lrceth', 'qtumbtc', 'yoyobtc', 'omgbtc', 'omgeth', 'zrxbtc', 'zrxeth', 'stratbtc', 'strateth', 'snglsbtc', 'snglseth', 'bqxbtc', 'bqxeth', 'kncbtc', 'knceth', 'funbtc', 'funeth', 'snmbtc', 'snmeth', 'neoeth', 'iotabtc', 'iotaeth', 'linkbtc', 'linketh', 'xvgbtc', 'xvgeth', 'mdabtc', 'mdaeth', 'mtlbtc', 'mtleth', 'eosbtc', 'sntbtc', 'etceth', 'etcbtc', 'mthbtc', 'mtheth', 'engbtc', 'engeth', 'dntbtc', 'zecbtc', 'zeceth', 'bntbtc', 'astbtc', 'asteth', 'dashbtc', 'dasheth', 'oaxbtc', 'btgbtc', 'btgeth', 'evxbtc', 'evxeth', 'reqbtc', 'reqeth', 'vibbtc', 'vibeth', 'trxbtc', 'trxeth', 'powrbtc', 'powreth', 'arkbtc', 'arketh', 'yoyoeth', 'xrpbtc', 'xrpeth', 'enjbtc', 'enjeth', 'storjbtc', 'storjeth', 'bnbusdt', 'yoyobnb', 'powrbnb', 'kmdbtc', 'kmdeth', 'nulsbnb', 'rcnbtc', 'rcneth', 'rcnbnb', 'nulsbtc', 'nulseth', 'rdnbtc', 'rdneth', 'rdnbnb', 'xmrbtc', 'xmreth', 'dltbnb', 'wtcbnb', 'dltbtc', 'dlteth', 'ambbtc', 'ambeth', 'ambbnb', 'batbtc', 'bateth', 'batbnb', 'bcptbtc', 'bcpteth', 'bcptbnb', 'arnbtc', 'arneth', 'gvtbtc', 'gvteth', 'cdtbtc', 'cdteth', 'gxsbtc', 'gxseth', 'neousdt', 'neobnb', 'poebtc', 'poeeth', 'qspbtc', 'qspeth', 'qspbnb', 'btsbtc', 'btseth', 'btsbnb', 'xzcbtc', 'xzceth', 'xzcbnb', 'lskbtc', 'lsketh', 'lskbnb', 'tntbtc', 'tnteth', 'fuelbtc', 'fueleth', 'manabtc', 'manaeth', 'bcdbtc', 'bcdeth', 'dgdbtc', 'dgdeth', 'iotabnb', 'adxbtc', 'adxeth', 'adxbnb', 'adabtc', 'adaeth', 'pptbtc', 'ppteth', 'cmtbtc', 'cmteth', 'cmtbnb', 'xlmbtc', 'xlmeth', 'xlmbnb', 'cndbtc', 'cndeth', 'cndbnb', 'lendbtc', 'lendeth', 'wabibtc', 'wabieth', 'wabibnb', 'ltceth', 'ltcusdt', 'ltcbnb', 'tnbbtc', 'tnbeth', 'wavesbtc', 'waveseth', 'wavesbnb', 'gtobtc', 'gtoeth', 'gtobnb', 'icxbtc', 'icxeth', 'icxbnb', 'ostbtc', 'osteth', 'ostbnb', 'elfbtc', 'elfeth', 'aionbtc', 'aioneth', 'aionbnb', 'neblbtc', 'nebleth', 'neblbnb', 'brdbtc', 'brdeth', 'brdbnb', 'mcobnb', 'edobtc', 'edoeth', 'navbtc', 'naveth', 'navbnb', 'lunbtc', 'luneth', 'appcbtc', 'appceth', 'appcbnb', 'vibebtc', 'vibeeth', 'rlcbtc', 'rlceth', 'rlcbnb', 'insbtc', 'inseth', 'pivxbtc', 'pivxeth', 'pivxbnb', 'iostbtc', 'iosteth', 'steembtc', 'steemeth', 'steembnb', 'nanobtc', 'nanoeth', 'nanobnb', 'viabtc', 'viaeth', 'viabnb', 'blzbtc', 'blzeth', 'blzbnb', 'aebtc', 'aeeth', 'aebnb', 'ncashbtc', 'ncasheth', 'ncashbnb', 'poabtc', 'poaeth', 'poabnb', 'zilbtc', 'zileth', 'zilbnb', 'ontbtc', 'onteth', 'ontbnb', 'stormbtc', 'stormeth', 'stormbnb', 'qtumbnb', 'qtumusdt', 'xembtc', 'xemeth', 'xembnb', 'wanbtc', 'waneth', 'wanbnb', 'wprbtc', 'wpreth', 'qlcbtc', 'qlceth', 'sysbtc', 'syseth', 'sysbnb', 'qlcbnb', 'grsbtc', 'grseth', 'adausdt', 'adabnb', 'gntbtc', 'gnteth', 'gntbnb', 'loombtc', 'loometh', 'loombnb', 'xrpusdt', 'repbtc', 'repeth', 'repbnb', 'btctusd', 'ethtusd', 'zenbtc', 'zeneth', 'zenbnb', 'skybtc', 'skyeth', 'skybnb', 'eosusdt', 'eosbnb', 'cvcbtc', 'cvceth', 'cvcbnb', 'thetabtc', 'thetaeth', 'thetabnb', 'xrpbnb', 'tusdusdt', 'iotausdt', 'xlmusdt', 'iotxbtc', 'iotxeth', 'qkcbtc', 'qkceth', 'agibtc', 'agieth', 'agibnb', 'nxsbtc', 'nxseth', 'nxsbnb', 'enjbnb', 'databtc', 'dataeth', 'ontusdt', 'trxbnb', 'trxusdt', 'etcusdt', 'etcbnb', 'icxusdt', 'scbtc', 'sceth', 'scbnb', 'npxsbtc', 'npxseth', 'keybtc', 'keyeth', 'nasbtc', 'naseth', 'nasbnb', 'mftbtc', 'mfteth', 'mftbnb', 'dentbtc', 'denteth', 'ardrbtc', 'ardreth', 'ardrbnb', 'nulsusdt', 'hotbtc', 'hoteth', 'vetbtc', 'veteth', 'vetusdt', 'vetbnb', 'dockbtc', 'docketh', 'polybtc', 'polybnb', 'hcbtc', 'hceth', 'gobtc', 'gobnb', 'paxusdt', 'rvnbtc', 'rvnbnb', 'dcrbtc', 'dcrbnb', 'mithbtc', 'mithbnb', 'bchabcbtc', 'bchabcusdt', 'bnbpax', 'btcpax', 'ethpax', 'xrppax', 'eospax', 'xlmpax', 'renbtc', 'renbnb', 'bnbtusd', 'xrptusd', 'eostusd', 'xlmtusd', 'bnbusdc', 'btcusdc', 'ethusdc', 'xrpusdc', 'eosusdc', 'xlmusdc', 'usdcusdt', 'adatusd', 'trxtusd', 'neotusd', 'trxxrp', 'xzcxrp', 'paxtusd', 'usdctusd', 'usdcpax', 'linkusdt', 'linktusd', 'linkpax', 'linkusdc', 'wavesusdt', 'wavestusd', 'wavespax', 'wavesusdc', 'bchabctusd', 'bchabcpax', 'bchabcusdc', 'ltctusd', 'ltcpax', 'ltcusdc', 'trxpax', 'trxusdc', 'bttbtc', 'bttbnb', 'bttusdt', 'bnbusds', 'btcusds', 'usdsusdt', 'usdspax', 'usdstusd', 'usdsusdc', 'bttpax', 'btttusd', 'bttusdc', 'ongbnb', 'ongbtc', 'ongusdt', 'hotbnb', 'hotusdt', 'zilusdt', 'zrxbnb', 'zrxusdt', 'fetbnb', 'fetbtc', 'fetusdt', 'batusdt', 'xmrbnb', 'xmrusdt', 'zecbnb', 'zecusdt', 'zecpax', 'zectusd', 'zecusdc', 'iostbnb', 'iostusdt', 'celrbnb', 'celrbtc', 'celrusdt', 'adapax', 'adausdc', 'neopax', 'neousdc', 'dashbnb', 'dashusdt', 'nanousdt', 'omgbnb', 'omgusdt', 'thetausdt', 'enjusdt', 'mithusdt', 'maticbnb', 'maticbtc', 'maticusdt', 'atombnb', 'atombtc', 'atomusdt', 'atomusdc', 'atompax', 'atomtusd', 'etcusdc', 'etcpax', 'etctusd', 'batusdc', 'batpax', 'battusd', 'phbbnb', 'phbbtc', 'phbusdc', 'phbtusd', 'phbpax', 'tfuelbnb', 'tfuelbtc', 'tfuelusdt', 'tfuelusdc', 'tfueltusd', 'tfuelpax', 'onebnb', 'onebtc', 'oneusdt', 'onetusd', 'onepax', 'oneusdc', 'ftmbnb', 'ftmbtc', 'ftmusdt', 'ftmtusd', 'ftmpax', 'ftmusdc'] Too long url, need to split later markets = [] # Get all markets r = requests.get(url='https://www.binance.com/api/v1/exchangeInfo') data = r.json() for elem in data['symbols']: if elem['status'] == 'TRADING': markets.append(elem['symbol'].lower()) """ print('Connecting to ' + str(len(markets)) + ' market') binance_get_kline_stream_id1 = binance_websocket_api_manager.create_stream(channels, markets) worker_thread = threading.Thread(target=progress_data, args=(binance_websocket_api_manager,)) worker_thread.start() while True: runsince = int(time.time() - start_time) runsince = str(datetime.timedelta(seconds=runsince)) your_text = runsince + ' Inserted rows: ' + str("{:,}".format(all_sql_wrote)) binance_websocket_api_manager.print_summary(add_string=your_text) time.sleep(1)
binance_websocket_api_manager = BinanceWebSocketApiManager(exchange="binance.com") markets = {'bnbbtc', 'ethbtc', 'btcusdt', 'bchabcusdt', 'xrpusdt', 'rvnbtc', 'ltcusdt', 'adausdt', 'eosusdt', 'neousdt', 'bnbusdt', 'adabtc', 'ethusdt', 'trxbtc', 'bchabcbtc', 'ltcbtc', 'xrpbtc', 'ontbtc', 'bttusdt', 'eosbtc', 'xlmbtc', 'bttbtc', 'tusdusdt', 'xlmusdt', 'qkcbtc', 'zrxbtc', 'neobtc', 'adaeth', 'icxusdt', 'btctusd', 'icxbtc', 'btcusdc', 'wanbtc', 'zecbtc', 'wtcbtc', 'batbtc', 'adabnb', 'etcusdt', 'qtumusdt', 'xmrbtc', 'trxeth', 'adatusd', 'trxxrp', 'trxbnb', 'dashbtc', 'rvnbnb', 'bchabctusd', 'etcbtc', 'bnbeth', 'ethpax', 'nanobtc', 'xembtc', 'xrpbnb', 'bchabcpax', 'xrpeth', 'bttbnb', 'ltcbnb', 'agibtc', 'zrxusdt', 'xlmbnb', 'ltceth', 'eoseth', 'ltctusd', 'polybnb', 'scbtc', 'steembtc', 'trxtusd', 'npxseth', 'kmdbtc', 'polybtc', 'gasbtc', 'engbtc', 'zileth', 'xlmeth', 'eosbnb', 'xrppax', 'lskbtc', 'npxsbtc', 'xmrusdt', 'ltcpax', 'ethtusd', 'batusdt', 'mcobtc', 'neoeth', 'bntbtc', 'eostusd', 'lrcbtc', 'funbtc', 'zecusdt', 'bnbpax', 'linkusdt', 'hceth', 'zrxeth', 'icxeth', 'xmreth', 'neobnb', 'etceth', 'zeceth', 'xmrbnb', 'wanbnb', 'zrxbnb', 'agibnb', 'funeth', 'arketh', 'engeth'} binance_get_kline_1m_bnbbtc = binance_websocket_api_manager.create_stream('kline_1m', markets=markets) while True: if binance_websocket_api_manager.is_manager_stopping(): exit(0) oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer() if oldest_stream_data_from_stream_buffer is False: time.sleep(0.01) else: oldest_stream_data_from_stream_buffer = UnicornFy.binance_com_websocket(oldest_stream_data_from_stream_buffer) if oldest_stream_data_from_stream_buffer is not None: try: if oldest_stream_data_from_stream_buffer['event_time'] >= \ oldest_stream_data_from_stream_buffer['kline']['kline_close_time']: print(oldest_stream_data_from_stream_buffer) except KeyError:
from unicorn_binance_websocket_api.unicorn_binance_websocket_api_manager import BinanceWebSocketApiManager from unicorn_fy.unicorn_fy import UnicornFy import pprint import xlsxwriter binance_websocket_api_manager = BinanceWebSocketApiManager( exchange="binance.com") binance_websocket_api_manager.create_stream(['trade', 'kline_1m'], ['bnbbtc']) # while True: # oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer() # if oldest_stream_data_from_stream_buffer: # #print(oldest_stream_data_from_stream_buffer) # unicorn_fied_stream_data = UnicornFy.binance_com_websocket(oldest_stream_data_from_stream_buffer) # print(unicorn_fied_stream_data) workbook = xlsxwriter.Workbook('trades.xlsx') worksheet = workbook.add_worksheet() n = 0 worksheet.write(n, 0, "costs") worksheet.write(n, 1, "quantity") n += 1 while True: oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer( ) if oldest_stream_data_from_stream_buffer: stream_data = UnicornFy.binance_com_websocket( oldest_stream_data_from_stream_buffer) pprint.pprint(stream_data) if (stream_data['event_type'] == 'trade'):
# create instance of BinanceWebSocketApiManager and provide the function for stream processing binance_websocket_api_manager = BinanceWebSocketApiManager() # start a worker process to process to move the received stream_data from the stream_buffer to a print function worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer, args=(binance_websocket_api_manager, )) worker_thread.start() print("testing ws/ single streams") print( "\r\n========================================== Starting ticker all ========================================\r\n" ) ticker_all_stream_id = binance_websocket_api_manager.create_stream(["arr"], ["!ticker"]) time.sleep(6) binance_websocket_api_manager.stop_stream(ticker_all_stream_id) time.sleep(2) print( "\r\n=========================================== Stopped ticker all ========================================\r\n" ) print( "\r\n========================================= Starting !miniticker ========================================\r\n" ) miniticker_stream_id = binance_websocket_api_manager.create_stream( ["arr"], ["!miniTicker"]) time.sleep(5) binance_websocket_api_manager.stop_stream(miniticker_stream_id) time.sleep(2)
oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer() if oldest_stream_data_from_stream_buffer is False: time.sleep(0.01) # https://docs.python.org/3/library/logging.html#logging-levels logging.basicConfig(level=logging.DEBUG, filename=os.path.basename(__file__) + '.log', format="{asctime} [{levelname:8}] {process} {thread} {module}: {message}", style="{") # create instance of BinanceWebSocketApiManager for Binance Jersey binance_websocket_api_manager = BinanceWebSocketApiManager(exchange="jex.com") # set api key and secret for userData stream userdata_stream_id = binance_websocket_api_manager.create_stream(["arr"], ["!userData"], api_key="aaa", api_secret="bb") omt_stream_id = binance_websocket_api_manager.create_stream(["arr"], ["!optionMiniTicker"]) smt_stream_id = binance_websocket_api_manager.create_stream(["arr"], ["!spotMiniTicker"]) st_stream_id = binance_websocket_api_manager.create_stream(["arr"], ["!spotTicker"]) spot_markets = {'eosbtc', 'ltcbtc', 'ethbtc', 'dashbtc'} spot_channels = {'spotTrade', 'spotMiniTicker', 'spotDepth20', 'spotDepthUpdate', 'spotTicker'} binance_websocket_api_manager.create_stream(["spotTrade"], spot_markets) binance_websocket_api_manager.create_stream(["spotDepth10"], spot_markets) binance_websocket_api_manager.create_stream(["spotDepth20"], spot_markets) binance_websocket_api_manager.create_stream(spot_channels, spot_markets) # start a worker process to move the received stream_data from the stream_buffer to a print function worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer, args=(binance_websocket_api_manager,)) worker_thread.start()
# start a worker process to move the received stream_data from the stream_buffer to a print function worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer, args=(binance_websocket_api_manager, )) worker_thread.start() print_summary_thread = threading.Thread(target=print_stream, args=(binance_websocket_api_manager, )) print_summary_thread.start() data = binance_rest_client.get_all_tickers() for item in data: markets.append(item['symbol']) binance_websocket_api_manager.create_stream(["!userData"], ["arr"], "Alice userData stream", api_key="aaa", api_secret="bbb") binance_websocket_api_manager.create_stream(["!userData"], ["arr"], "Bobs userData stream", api_key="ccc", api_secret="ddd") binance_websocket_api_manager.create_stream(arr_channels, "arr", stream_label="arr channels") for channel in channels: binance_websocket_api_manager.create_stream(channel, markets, stream_label=channel)
logging.getLogger('unicorn-log').addHandler(logging.StreamHandler()) logging.getLogger('unicorn-log').setLevel(logging.INFO) # create instance of BinanceWebSocketApiManager for Binance.com Futures binance_websocket_api_manager = BinanceWebSocketApiManager( exchange="binance.com-futures") print("starting monitoring api!") binance_websocket_api_manager.start_monitoring_api() # set api key and secret for userData stream binance_je_api_key = "" binance_je_api_secret = "" binance_websocket_api_manager.set_private_api_config(binance_je_api_key, binance_je_api_secret) userdata_stream_id = binance_websocket_api_manager.create_stream(["arr"], ["!userData"]) bookticker_all_stream_id = binance_websocket_api_manager.create_stream( ["arr"], ["!bookTicker"]) markets = {'btcusdt', 'bchusdt', 'ethusdt'} binance_websocket_api_manager.create_stream(["aggTrade"], markets) binance_websocket_api_manager.create_stream(["markPrice"], markets) binance_websocket_api_manager.create_stream(["kline_1m"], markets) binance_websocket_api_manager.create_stream(["kline_5m"], markets) binance_websocket_api_manager.create_stream(["kline_15m"], markets) binance_websocket_api_manager.create_stream(["kline_1h"], markets) binance_websocket_api_manager.create_stream(["kline_12h"], markets) binance_websocket_api_manager.create_stream(["kline_1w"], markets) binance_websocket_api_manager.create_stream(["ticker"], markets) binance_websocket_api_manager.create_stream(["miniTicker"], markets)
from unicorn_binance_websocket_api_process_streams import BinanceWebSocketApiProcessStreams # https://docs.python.org/3/library/logging.html#logging-levels logging.getLogger('unicorn-log').setLevel(logging.INFO) logging.getLogger('unicorn-log').addHandler(logging.StreamHandler()) # create instance of BinanceWebSocketApiManager and provide the function for stream processing binance_websocket_api_manager = BinanceWebSocketApiManager( BinanceWebSocketApiProcessStreams.process_stream_data) print( "\r\n========================================== Starting aggTrade ==========================================\r\n" ) # start markets = {'bnbbtc', 'ethbtc', 'btcusdt', 'bchabcusdt', 'eosusdt'} aggtrade_stream_id = binance_websocket_api_manager.create_stream(["aggTrade"], markets) time.sleep(3) # stop binance_websocket_api_manager.stop_stream(aggtrade_stream_id) time.sleep(2) print( "\r\n=========================================== Stopped aggTrade ==========================================\r\n" ) print( "\r\n====================================== Starting trade and kline_1m ====================================\r\n" ) trade_stream_id = binance_websocket_api_manager.create_stream( ["trade"], ['bnbbtc', 'ethbtc', 'btcusdt', 'bchabcusdt']) markets = {'xrpusdt', 'rvnbtc', 'ltcusdt', 'adausdt', 'eosusdt', 'neousdt'} kline_1m_stream_id = binance_websocket_api_manager.create_stream(
'bchabcbusd', 'ltcbnb', 'pivxeth', 'skybtc', 'tntbtc', 'poebtc', 'steembtc', 'icxusdt', 'tfuelbtc', 'chzbtc', 'vibeth', 'winusdc', 'gtobtc', 'linkusdc', 'batbusd', 'rdnbtc', 'dataeth', 'bttpax', 'zrxbnb', 'vibbtc', 'neobnb', 'cosbtc', 'powreth', 'rlcusdt', 'hbarbnb', 'wabieth', 'bqxeth', 'aionbtc', 'aeeth', 'mthbtc', 'wrxbtc', 'pptbtc', 'nknbtc', 'zecusdt', 'stormeth', 'qtumusdt' ] channels = [ 'kline_1m', 'kline_5m', 'kline_15m', 'kline_30m', 'kline_1h', 'kline_12h', 'kline_1w', 'trade', 'miniTicker', 'depth20' ] for channel in channels: binance_websocket_api_manager.create_stream(channel, markets, stream_buffer_name=channel) def print_stream_data_from_stream_buffer(binance_websocket_api_manager): print("print trades only") time.sleep(10) while True: if binance_websocket_api_manager.is_manager_stopping(): exit(0) oldest_stream_data_from_stream_buffer = binance_websocket_api_manager.pop_stream_data_from_stream_buffer( "trade") if oldest_stream_data_from_stream_buffer is False: time.sleep(0.01) else: try: