def positions(self): ''' pos = self._api.list_positions() return pos ''' z_positions = zp.Positions() positions = self._api.list_positions() position_map = {} symbols = [] for pos in positions: symbol = pos.symbol try: z_position = zp.Position(symbol_lookup(symbol)) except SymbolNotFound: continue z_position.amount = int(pos.qty) z_position.cost_basis = float(pos.cost_basis) / float(pos.qty) z_position.last_sale_price = None z_position.last_sale_date = None z_positions[symbol_lookup(symbol)] = z_position z_position.last_sale_price = np.nan z_position.last_sale_date = pd.NaT symbols.append(symbol) position_map[symbol] = z_position return z_positions
def positions(self): z_positions = zp.Positions() positions = self._api.list_positions() position_map = {} symbols = [] for pos in positions: symbol = pos.symbol try: z_position = zp.Position(symbol_lookup(symbol)) except SymbolNotFound: continue z_position.amount = int(pos.qty) z_position.cost_basis = float(pos.cost_basis) / float(pos.qty) z_position.last_sale_price = None z_position.last_sale_date = None z_positions[symbol_lookup(symbol)] = z_position symbols.append(symbol) position_map[symbol] = z_position trades = self._symbol_trades(symbols) for symbol, trade in trades.items(): z_position = position_map[symbol] if trade is None: z_position.last_sale_price = np.nan z_position.last_sale_date = pd.NaT else: z_position.last_sale_price = float(trade.price) z_position.last_sale_date = trade.timestamp return z_positions
def positions(self): z_positions = zp.Positions() positions = self._api.list_positions() position_map = {} symbols = [] for pos in positions: symbol = pos.symbol try: z_position = zp.Position(symbol_lookup(symbol)) except SymbolNotFound: continue z_position.amount = int(pos.qty) z_position.cost_basis = float(pos.cost_basis) / float(pos.qty) z_position.last_sale_price = None z_position.last_sale_date = None z_positions[symbol_lookup(symbol)] = z_position symbols.append(symbol) position_map[symbol] = z_position quotes = self._api.list_quotes(symbols) for quote in quotes: price = quote.last dt = quote.last_timestamp z_position = position_map[quote.symbol] z_position.last_sale_price = float(price) z_position.last_sale_date = dt return z_positions
def _order2zp(self, order): zp_order = ZPOrder( id=order.client_order_id, asset=symbol_lookup(order.symbol), amount=int(order.qty) if order.side == 'buy' else -int(order.qty), stop=float(order.stop_price) if order.stop_price else None, limit=float(order.limit_price) if order.limit_price else None, dt=order.submitted_at, commission=0, ) zp_order._status = ZP_ORDER_STATUS.OPEN if order.canceled_at: zp_order._status = ZP_ORDER_STATUS.CANCELLED if order.failed_at: zp_order._status = ZP_ORDER_STATUS.REJECTED if order.filled_at: zp_order._status = ZP_ORDER_STATUS.FILLED zp_order.filled = int(order.filled_qty) return zp_order