'Your ask: {4:.2f}, Your bid: {5:.2f}, Your spread: {6:.2f} ' 'Avg: {7:.10f} Min: {8:.10f} Max: {9:.10f}'.format( ((datetime.now(tzlocal()) - order_book.last_time).microseconds * 1e-6), order_book.asks.price_tree.min_key(), order_book.bids.price_tree.max_key(), order_book.asks.price_tree.min_key() - order_book.bids.price_tree.max_key(), open_orders.decimal_open_ask_price, open_orders.decimal_open_bid_price, open_orders.decimal_open_ask_price - open_orders.decimal_open_bid_price, order_book.average_rate*1e-6, order_book.fastest_rate*1e-6, order_book.slowest_rate*1e-6), end='\r') if __name__ == '__main__': if args.command_line: stream_handler = logging.StreamHandler() stream_handler.setFormatter(logging.Formatter('\n%(asctime)s, %(levelname)s, %(message)s')) stream_handler.setLevel(logging.INFO) trading_file_logger.addHandler(stream_handler) order_book_file_logger.addHandler(stream_handler) command_line = True loop = asyncio.get_event_loop() if args.trading: loop.run_in_executor(None, functools.partial(buyer_strategy, order_book, open_orders, spreads)) loop.run_in_executor(None, update_balances) loop.run_in_executor(None, update_orders) if args.command_line: loop.run_in_executor(None, monitor) n = 0 while True: start_time = loop.time() loop.run_until_complete(websocket_to_order_book()) end_time = loop.time()
open_orders.decimal_open_ask_price, open_orders.decimal_open_bid_price, open_orders.decimal_open_ask_price - open_orders.decimal_open_bid_price, order_book.average_rate * 1e-6, order_book.fastest_rate * 1e-6, order_book.slowest_rate * 1e-6), end='\r') if __name__ == '__main__': if args.command_line: stream_handler = logging.StreamHandler() stream_handler.setFormatter( logging.Formatter('\n%(asctime)s, %(levelname)s, %(message)s')) stream_handler.setLevel(logging.INFO) trading_file_logger.addHandler(stream_handler) order_book_file_logger.addHandler(stream_handler) command_line = True loop = asyncio.get_event_loop() if args.trading: loop.run_in_executor( None, functools.partial(buyer_strategy, order_book, open_orders, spreads)) loop.run_in_executor(None, update_balances) loop.run_in_executor(None, update_orders) if args.command_line: loop.run_in_executor(None, monitor) n = 0 while True:
if open_orders.open_ask_order_id and Decimal(open_orders.open_ask_price) > round( max_bid + Decimal(spreads.ask_adjustment_spread), 2): file_logger.info('CANCEL: open ask {0} threshold {1} diff {2}'.format( Decimal(open_orders.open_ask_price), round(max_bid - Decimal(spreads.ask_adjustment_spread), 2), Decimal(open_orders.open_ask_price) - round(max_bid + Decimal(spreads.ask_adjustment_spread), 2))) open_orders.cancel('ask') return True return True if __name__ == '__main__': if len(sys.argv) == 1: stream_handler = logging.StreamHandler() stream_handler.setFormatter(logging.Formatter('\n%(asctime)s, %(levelname)s, %(message)s')) stream_handler.setLevel(logging.INFO) file_logger.addHandler(stream_handler) command_line = True loop = asyncio.get_event_loop() n = 0 while True: start_time = loop.time() loop.run_until_complete(websocket_to_order_book()) end_time = loop.time() seconds = end_time - start_time if seconds < 2: n += 1 sleep_time = (2 ** n) + (random.randint(0, 1000) / 1000) file_logger.error('Websocket connectivity problem, going to sleep for {0}'.format(sleep_time)) time.sleep(sleep_time) if n > 6: