pub struct InstrumentAccountSnapshot<ExchangeKey = ExchangeIndex, AssetKey = AssetIndex, InstrumentKey = InstrumentIndex> {
pub instrument: InstrumentKey,
pub orders: Vec<OrderSnapshot<ExchangeKey, AssetKey, InstrumentKey>>,
pub orders_complete: bool,
pub position: PositionReport,
pub isolated: Option<IsolatedInstrumentState<AssetKey>>,
}Expand description
One instrument’s slice of an AccountSnapshot: its orders, and its position or isolated
balances where the venue has them.
Fields§
§instrument: InstrumentKey§orders: Vec<OrderSnapshot<ExchangeKey, AssetKey, InstrumentKey>>Orders the venue reported for this instrument, keyed by the ClientOrderId the order was
placed with where the venue reports it.
Whether this is every order open at the venue is stated by
orders_complete, not implied by the list.
orders_complete: booltrue only when orders lists every order open at the venue for this
instrument when it was read, each under the ClientOrderId it was placed with.
A consumer may then read an order’s absence as “no longer open”: it filled, was
cancelled or expired. The engine does exactly that, retiring a tracked order a complete
list omits. A wrong true therefore retires live orders, so a client sets it only when
nothing can be missing:
- the read covered every open order, with no page cap or partial result;
- no open order was dropped on conversion;
- each order carries the id it was placed with, so a tracked order can be found in it.
false claims nothing about absent orders, and is the default for a snapshot that does not
say.
position: PositionReportThe venue’s position in this instrument, for any instrument whose holding the venue tracks separately from cash balances: perpetuals, futures, options, and equities (e.g. Alpaca).
PositionReport::Unreported when the venue does not report positions, for holdings
reported as asset balances instead, such as spot crypto, and when the read could not
establish the position. PositionReport::Flat is a claim that the venue holds none, so
a client reports it only when it read every position the venue has for the instrument. See
each client’s account_snapshot for what it reports.
A client that reports positions lists each instrument it was asked for whose position it
can establish, flat ones included. An instrument it leaves out, like one it reports as
Unreported, is unknown, never flat: a client can be unable to establish a position (see
its account_snapshot). Asked for all instruments (an empty list), it may list only those
with something to report.
isolated: Option<IsolatedInstrumentState<AssetKey>>Per-pair isolated-margin balances and risk, for venues with isolated sub-accounts
(e.g. Binance isolated margin). None for cross margin, spot, and all other contexts.
Surfaced here — attached to the instrument — rather than folded into the asset-keyed
AccountSnapshot::balances because isolated sub-accounts are per-(pair, asset): the same
asset (e.g. USDT) in two isolated pairs is a separate pool, which the asset-keyed balance
model cannot represent without collision. The engine does not store this; a consumer reads
it off the snapshot to compose per-pair risk. See IsolatedInstrumentState.
Implementations§
Source§impl<ExchangeKey, AssetKey, InstrumentKey> InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
impl<ExchangeKey, AssetKey, InstrumentKey> InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
pub const fn new( instrument: InstrumentKey, orders: Vec<OrderSnapshot<ExchangeKey, AssetKey, InstrumentKey>>, orders_complete: bool, position: PositionReport, isolated: Option<IsolatedInstrumentState<AssetKey>>, ) -> InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
Trait Implementations§
Source§impl<ExchangeKey: Clone, AssetKey: Clone, InstrumentKey: Clone> Clone for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
impl<ExchangeKey: Clone, AssetKey: Clone, InstrumentKey: Clone> Clone for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
Source§impl<ExchangeKey: Debug, AssetKey: Debug, InstrumentKey: Debug> Debug for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
impl<ExchangeKey: Debug, AssetKey: Debug, InstrumentKey: Debug> Debug for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
Source§impl<'de, ExchangeKey, AssetKey, InstrumentKey> Deserialize<'de> for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
impl<'de, ExchangeKey, AssetKey, InstrumentKey> Deserialize<'de> for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl<ExchangeKey: Eq, AssetKey: Eq, InstrumentKey: Eq> Eq for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
Source§impl<ExchangeKey: Hash, AssetKey: Hash, InstrumentKey: Hash> Hash for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
impl<ExchangeKey: Hash, AssetKey: Hash, InstrumentKey: Hash> Hash for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
Source§impl<ExchangeKey: Ord, AssetKey: Ord, InstrumentKey: Ord> Ord for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
impl<ExchangeKey: Ord, AssetKey: Ord, InstrumentKey: Ord> Ord for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
1.21.0 (const: unstable) · Source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<ExchangeKey: PartialEq, AssetKey: PartialEq, InstrumentKey: PartialEq> PartialEq for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
impl<ExchangeKey: PartialEq, AssetKey: PartialEq, InstrumentKey: PartialEq> PartialEq for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
Source§impl<ExchangeKey: PartialOrd, AssetKey: PartialOrd, InstrumentKey: PartialOrd> PartialOrd for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
impl<ExchangeKey: PartialOrd, AssetKey: PartialOrd, InstrumentKey: PartialOrd> PartialOrd for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
Source§impl<ExchangeKey, AssetKey, InstrumentKey> Serialize for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
impl<ExchangeKey, AssetKey, InstrumentKey> Serialize for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
impl<ExchangeKey: PartialEq, AssetKey: PartialEq, InstrumentKey: PartialEq> StructuralPartialEq for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>
Auto Trait Implementations§
impl<ExchangeKey, AssetKey, InstrumentKey> Freeze for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: Freeze,
Vec<Order<ExchangeKey, InstrumentKey, OrderState<AssetKey, InstrumentKey>>>: Freeze,
Option<IsolatedInstrumentState<AssetKey>>: Freeze,
impl<ExchangeKey, AssetKey, InstrumentKey> RefUnwindSafe for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: RefUnwindSafe,
Vec<Order<ExchangeKey, InstrumentKey, OrderState<AssetKey, InstrumentKey>>>: RefUnwindSafe,
Option<IsolatedInstrumentState<AssetKey>>: RefUnwindSafe,
impl<ExchangeKey, AssetKey, InstrumentKey> Send for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: Send,
Vec<Order<ExchangeKey, InstrumentKey, OrderState<AssetKey, InstrumentKey>>>: Send,
Option<IsolatedInstrumentState<AssetKey>>: Send,
impl<ExchangeKey, AssetKey, InstrumentKey> Sync for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: Sync,
Vec<Order<ExchangeKey, InstrumentKey, OrderState<AssetKey, InstrumentKey>>>: Sync,
Option<IsolatedInstrumentState<AssetKey>>: Sync,
impl<ExchangeKey, AssetKey, InstrumentKey> Unpin for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: Unpin,
Vec<Order<ExchangeKey, InstrumentKey, OrderState<AssetKey, InstrumentKey>>>: Unpin,
Option<IsolatedInstrumentState<AssetKey>>: Unpin,
impl<ExchangeKey, AssetKey, InstrumentKey> UnsafeUnpin for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: UnsafeUnpin,
Vec<Order<ExchangeKey, InstrumentKey, OrderState<AssetKey, InstrumentKey>>>: UnsafeUnpin,
Option<IsolatedInstrumentState<AssetKey>>: UnsafeUnpin,
impl<ExchangeKey, AssetKey, InstrumentKey> UnwindSafe for InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: UnwindSafe,
Vec<Order<ExchangeKey, InstrumentKey, OrderState<AssetKey, InstrumentKey>>>: UnwindSafe,
Option<IsolatedInstrumentState<AssetKey>>: UnwindSafe,
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.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> 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 moreimpl<T> JsonSchemaMaybe for T
Source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.