pub struct PositionRef<'a>(/* private fields */);Expand description
Lifetime-scoped read borrow of a cached position.
Returned by crate::cache::Cache::position. The borrow drops with the enclosing scope, which
makes any attempt to hold it across a cache mutation panic at runtime: a loud failure beats the
silent staleness that a stored clone would produce.
Method calls on the inner Position resolve via Deref; comparisons against &Position
or owned Position values are direct (position_ref == &position); Display and Debug
forward to the inner record. Use cloned when an owned snapshot is required
(for example, before crossing a boundary that may dispatch events).
Implementations§
Source§impl<'a> PositionRef<'a>
impl<'a> PositionRef<'a>
Methods from Deref<Target = Position>§
Sourcepub fn calculate_pnl(
&self,
avg_px_open: f64,
avg_px_close: f64,
quantity: Quantity,
) -> Money
pub fn calculate_pnl( &self, avg_px_open: f64, avg_px_close: f64, quantity: Quantity, ) -> Money
Calculates profit and loss from the given prices and quantity.
Sourcepub fn total_pnl(&self, last: Price) -> Money
pub fn total_pnl(&self, last: Price) -> Money
Returns total P&L (realized + unrealized) based on the last price.
Sourcepub fn unrealized_pnl(&self, last: Price) -> Money
pub fn unrealized_pnl(&self, last: Price) -> Money
Returns unrealized P&L based on the last price.
Sourcepub fn closing_order_side(&self) -> OrderSide
pub fn closing_order_side(&self) -> OrderSide
Returns the order side required to close this position.
Sourcepub fn is_opposite_side(&self, side: OrderSide) -> bool
pub fn is_opposite_side(&self, side: OrderSide) -> bool
Returns whether the given order side is opposite to the position entry side.
Sourcepub fn event_count(&self) -> usize
pub fn event_count(&self) -> usize
Returns the count of order fill events applied to this position.
Sourcepub fn client_order_ids(&self) -> Vec<ClientOrderId>
pub fn client_order_ids(&self) -> Vec<ClientOrderId>
Returns unique client order IDs from all fill events, sorted.
Sourcepub fn venue_order_ids(&self) -> Vec<VenueOrderId>
pub fn venue_order_ids(&self) -> Vec<VenueOrderId>
Returns unique venue order IDs from all fill events, sorted.
Sourcepub fn notional_value(&self, last: Price) -> Money
pub fn notional_value(&self, last: Price) -> Money
Calculates the notional value based on the last price.
§Panics
Panics if self.base_currency is None, or if last is not a positive price for
inverse instruments.
Sourcepub fn last_event(&self) -> Option<OrderFilled>
pub fn last_event(&self) -> Option<OrderFilled>
Returns the last OrderFilled event for the position (if any after purging).
Sourcepub fn last_trade_id(&self) -> Option<TradeId>
pub fn last_trade_id(&self) -> Option<TradeId>
Returns the last TradeId for the position (if any after purging).
Sourcepub fn is_open(&self) -> bool
pub fn is_open(&self) -> bool
Returns whether the position is currently open (has quantity and no close timestamp).
Sourcepub fn is_closed(&self) -> bool
pub fn is_closed(&self) -> bool
Returns whether the position is closed (flat with a close timestamp).
Sourcepub fn signed_decimal_qty(&self) -> Decimal
pub fn signed_decimal_qty(&self) -> Decimal
Returns the signed quantity as a Decimal.
Uses the raw signed_qty field to preserve full precision, as the quantity
field may have reduced precision based on the instrument’s size_precision.
Sourcepub fn commissions(&self) -> Vec<Money>
pub fn commissions(&self) -> Vec<Money>
Returns the cumulative commissions for the position as a vector.
Trait Implementations§
Source§impl AsRef<Position> for PositionRef<'_>
impl AsRef<Position> for PositionRef<'_>
Source§impl Debug for PositionRef<'_>
impl Debug for PositionRef<'_>
Source§impl Deref for PositionRef<'_>
impl Deref for PositionRef<'_>
Source§impl Display for PositionRef<'_>
impl Display for PositionRef<'_>
Source§impl PartialEq<&Position> for PositionRef<'_>
impl PartialEq<&Position> for PositionRef<'_>
Source§impl PartialEq<Position> for PositionRef<'_>
impl PartialEq<Position> for PositionRef<'_>
Source§impl PartialEq for PositionRef<'_>
impl PartialEq for PositionRef<'_>
Auto Trait Implementations§
impl<'a> Freeze for PositionRef<'a>
impl<'a> !RefUnwindSafe for PositionRef<'a>
impl<'a> !Send for PositionRef<'a>
impl<'a> !Sync for PositionRef<'a>
impl<'a> Unpin for PositionRef<'a>
impl<'a> UnsafeUnpin for PositionRef<'a>
impl<'a> !UnwindSafe for PositionRef<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more