def get_open_orders(self): orders = self.connection.get_open_orders() general_orders = [] for o in orders: quantityPart = self.get_part(o['symbol'], o["origQty"], o['price'], o['side']) general_orders.append( Order(o['price'], o["origQty"], quantityPart, o['orderId'], o['symbol'], o['side'], o['type'], self.exchange_name)) return general_orders
def process_event(self, event): # return event in generic type from websocket # if this event in general type it was send from start function and need call firs_copy if 'exchange' in event: return event if event['e'] == 'outboundAccountPosition': self.is_last_order_event_completed = True if event['e'] == 'executionReport': if event['X'] == 'FILLED': return elif event['x'] == 'CANCELED': return Actions.ActionCancel( event['s'], event['p'], event['i'], self.exchange_name, event ) self.last_order_event = event # store event order_event coz we need in outboundAccountInfo event # sometimes can came event executionReport x == filled and x == new together so we need flag self.is_last_order_event_completed = False return elif event['e'] == 'outboundAccountInfo': if self.is_last_order_event_completed: return order_event = self.last_order_event if order_event['s'] not in self.pairs: return if order_event['o'] == 'MARKET': # if market order, we haven't price and cant calculate quantity order_event['p'] = self.connection.get_ticker(symbol=order_event['s'])['lastPrice'] # part = self.get_part(order_event['s'], order_event['q'], order_event['p'], order_event['S']) self.on_balance_update(event) # shortcut mean https://github.com/binance-exchange/binance-official-api-docs/blob/master/user-data-stream.md#order-update order = Order(order_event['p'], order_event['q'], self.get_part(order_event['s'], order_event['q'], order_event['p'], order_event['S']), order_event['i'], order_event['s'], order_event['S'], order_event['o'], self.exchange_name, order_event['P']) return Actions.ActionNewOrder(order, self.exchange_name, event)
def _self_order_to_global(self, o) -> Order: if 'stopPx' not in o: o['stopPx'] = 0 if o['price'] is None: o['price'] = self.socket[o['symbol']].get_instrument()['midPrice'] return Order(o['price'], o["orderQty"], self.get_part(o['symbol'], o["orderQty"], self.socket['XBTUSD'].get_instrument()['midPrice']), o['orderID'], self.translate(o['symbol']), o['side'].upper(), self.translate(o['ordType']), self.exchange_name, stop=o['stopPx'])