def _get_stream(self, context): set_context(context) asyncio.set_event_loop(asyncio.new_event_loop()) conn = tradeapi.StreamConn(self._key_id, self._secret, self._base_url) channels = ['trade_updates'] @conn.on(r'trade_updates') async def handle_trade_update(conn, channel, data): # Check for any pending orders waiting_order = self._orders_pending_submission.get( data.order['client_order_id'] ) if waiting_order is not None: if data.event == 'fill': # Submit the waiting order self.order(*waiting_order) self._orders_pending_submission.pop( data.order['client_order_id'], None ) elif data.event in ['canceled', 'rejected']: # Remove the waiting order self._orders_pending_submission.pop( data.order['client_order_id'], None ) if data.event in ['canceled', 'rejected', 'fill']: self._open_orders.pop(data.order['client_order_id'], None) else: self._open_orders[data.order['client_order_id']] = ( self._order2zp(Order(data.order)) ) conn.run(channels)
def _get_stream(self, context): set_context(context) asyncio.set_event_loop(asyncio.new_event_loop()) conn = tradeapi.StreamConn(self._key_id, self._secret, self._base_url) channels = ['trade_updates'] @conn.on(r'trade_updates') async def handle_trade_update(conn, channel, data): if data.event in ['canceled', 'rejected', 'fill']: del self._open_orders[data.order['client_order_id']] else: self._open_orders[data.order['client_order_id']] = ( self._order2zp(Order(data.order))) conn.run(channels)
def _get_stream(self, context): set_context(context) asyncio.set_event_loop(asyncio.new_event_loop()) conn = tradeapi.StreamConn( self._key_id, self._secret, self._base_url, data_url=os.environ.get("DATA_PROXY_WS", ''), data_stream='polygon' if self._use_polygon else 'alpacadatav1') channels = ['trade_updates'] @conn.on(r'trade_updates') async def handle_trade_update(conn, channel, data): # Check for any pending orders waiting_order = self._orders_pending_submission.get( data.order['client_order_id']) if waiting_order is not None: if data.event == 'fill': # Submit the waiting order self.order(*waiting_order) self._orders_pending_submission.pop( data.order['client_order_id'], None) elif data.event in ['canceled', 'rejected']: # Remove the waiting order self._orders_pending_submission.pop( data.order['client_order_id'], None) if data.event in ['canceled', 'rejected', 'fill']: self._open_orders.pop(data.order['client_order_id'], None) else: self._open_orders[data.order['client_order_id']] = ( self._order2zp(Order(data.order))) while 1: try: conn.run(channels) log.info("Connection reestablished") except Exception: from time import sleep sleep(5) asyncio.set_event_loop(asyncio.new_event_loop())
def _get_stream(self, context): async def handle_trade_update(data): # Check for any pending orders waiting_order = self._orders_pending_submission.get( data.order['client_order_id']) if waiting_order is not None: if data.event == 'fill': # Submit the waiting order self.order(*waiting_order) self._orders_pending_submission.pop( data.order['client_order_id'], None) elif data.event in ['canceled', 'rejected']: # Remove the waiting order self._orders_pending_submission.pop( data.order['client_order_id'], None) if data.event in ['canceled', 'rejected', 'fill']: self._open_orders.pop(data.order['client_order_id'], None) else: self._open_orders[data.order['client_order_id']] = ( self._order2zp(Order(data.order))) set_context(context) asyncio.set_event_loop(asyncio.new_event_loop()) conn = Stream(self._key_id, self._secret, self._base_url, data_feed=self._feed) conn.subscribe_trade_updates(handle_trade_update) while 1: try: conn.run() log.info("Connection reestablished") except Exception: from time import sleep sleep(5) asyncio.set_event_loop(asyncio.new_event_loop())