def process_stream_data(received_stream_data_json, exchange="binance.com"): # # START HERE! # # `received_stream_data_json` contains one record of raw data from the stream # print it and you see the data like its given from Binance, its hard to work with them, because keys of # parameters are changing from stream to stream and they are not self explaining. # # So if you want, you can use the class `UnicornFy`, it converts the json to a dict and prepares the values. # `depth5` for example doesnt include the symbol, but the unicornfied set includes them, because the class # extracts it from the channel name, makes it upper size and adds it to the returned values.. just print both # to see the difference. # Github: https://github.com/oliver-zehentleitner/unicorn_fy # PyPI: https://pypi.org/project/unicorn-fy/ if exchange == "binance.com": unicorn_fied_stream_data = UnicornFy.binance_com_websocket( received_stream_data_json) elif exchange == "binance.com-futures": unicorn_fied_stream_data = UnicornFy.binance_com_futures_websocket( received_stream_data_json) elif exchange == "binance.je": unicorn_fied_stream_data = UnicornFy.binance_je_websocket( received_stream_data_json) elif exchange == "binance.us": unicorn_fied_stream_data = UnicornFy.binance_us_websocket( received_stream_data_json) else: logging.error("Not a valid exchange: " + str(exchange)) # Now you can call different methods for different `channels`, here called `event_types`. # Its up to you if you call the methods in the bottom of this file or to call other classes which do what # ever you want to be done. try: if unicorn_fied_stream_data['event_type'] == "aggTrade": BinanceWebSocketApiProcessStreams.aggtrade( unicorn_fied_stream_data) elif unicorn_fied_stream_data['event_type'] == "trade": BinanceWebSocketApiProcessStreams.trade( unicorn_fied_stream_data) elif unicorn_fied_stream_data['event_type'] == "kline": BinanceWebSocketApiProcessStreams.kline( unicorn_fied_stream_data) elif unicorn_fied_stream_data['event_type'] == "24hrMiniTicker": BinanceWebSocketApiProcessStreams.miniticker( unicorn_fied_stream_data) elif unicorn_fied_stream_data['event_type'] == "24hrTicker": BinanceWebSocketApiProcessStreams.ticker( unicorn_fied_stream_data) elif unicorn_fied_stream_data['event_type'] == "depth": BinanceWebSocketApiProcessStreams.miniticker( unicorn_fied_stream_data) else: BinanceWebSocketApiProcessStreams.anything_else( unicorn_fied_stream_data) except KeyError: print("received_data: " + str(received_stream_data_json)) except TypeError: pass
def print_stream_data_from_stream_buffer(binance_websocket_api_manager): 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 not False: unicorn_fied_data = UnicornFy.binance_com_websocket(oldest_stream_data_from_stream_buffer) #print(str(unicorn_fied_data)) else: time.sleep(0.01)
def print_stream_data_from_stream_buffer(binance_websocket_api_manager): 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: from unicorn_fy import UnicornFy oldest_stream_data_from_stream_buffer = UnicornFy.binance_websocket(oldest_stream_data_from_stream_buffer) print(oldest_stream_data_from_stream_buffer)
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: pass