pub struct InstrumentState<InstrumentData, ExchangeKey = ExchangeIndex, AssetKey = AssetIndex, InstrumentKey = InstrumentIndex> {
pub key: InstrumentKey,
pub instrument: Instrument<ExchangeKey, AssetKey>,
pub tear_sheet: TearSheetGenerator,
pub position: PositionManager<InstrumentKey>,
pub orders: Orders<ExchangeKey, InstrumentKey>,
pub data: InstrumentData,
}Expand description
Fields§
§key: InstrumentKeyUnique InstrumentKey identifier for the instrument this state is associated with.
instrument: Instrument<ExchangeKey, AssetKey>Complete instrument definition.
tear_sheet: TearSheetGeneratorTearSheet generator for summarising the trading performance associated with an Instrument.
position: PositionManager<InstrumentKey>Current PositionManager.
orders: Orders<ExchangeKey, InstrumentKey>Active orders and associated order management.
data: InstrumentDataUser provided instrument level data state. This can include market data, strategy data, risk data, option pricing data, or any other instrument-specific information.
Implementations§
Source§impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
pub const fn new( key: InstrumentKey, instrument: Instrument<ExchangeKey, AssetKey>, tear_sheet: TearSheetGenerator, position: PositionManager<InstrumentKey>, orders: Orders<ExchangeKey, InstrumentKey>, data: InstrumentData, ) -> InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
Source§impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
Sourcepub fn update_from_account_snapshot(
&mut self,
snapshot: &InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>,
)
pub fn update_from_account_snapshot( &mut self, snapshot: &InstrumentAccountSnapshot<ExchangeKey, AssetKey, InstrumentKey>, )
Updates the instrument state using an account snapshot from the exchange.
This updates active orders for the instrument, using timestamps where relevant to ensure the most recent order state is applied.
Sourcepub fn update_from_order_snapshot(
&mut self,
order: Snapshot<&Order<ExchangeKey, InstrumentKey, OrderState<AssetKey, InstrumentKey>>>,
)
pub fn update_from_order_snapshot( &mut self, order: Snapshot<&Order<ExchangeKey, InstrumentKey, OrderState<AssetKey, InstrumentKey>>>, )
Updates the instrument state from an Order snapshot.
Sourcepub fn update_from_cancel_response(
&mut self,
response: &OrderResponseCancel<ExchangeKey, AssetKey, InstrumentKey>,
)
pub fn update_from_cancel_response( &mut self, response: &OrderResponseCancel<ExchangeKey, AssetKey, InstrumentKey>, )
Updates the instrument state from an
OrderRequestCancel response.
Sourcepub fn update_from_trade(
&mut self,
trade: &Trade<QuoteAsset, InstrumentKey>,
) -> Option<PositionExited<QuoteAsset, InstrumentKey>>
pub fn update_from_trade( &mut self, trade: &Trade<QuoteAsset, InstrumentKey>, ) -> Option<PositionExited<QuoteAsset, InstrumentKey>>
Updates the instrument state based on a new trade.
This method handles:
- Opening/updating the current position state based on a new trade.
- Updating the internal
TearSheetGeneratorif a position is exited.
Sourcepub fn update_from_market(
&mut self,
event: &MarketEvent<InstrumentKey, InstrumentData::MarketEventKind>,
)where
InstrumentData: InstrumentDataState<ExchangeKey, AssetKey, InstrumentKey>,
pub fn update_from_market(
&mut self,
event: &MarketEvent<InstrumentKey, InstrumentData::MarketEventKind>,
)where
InstrumentData: InstrumentDataState<ExchangeKey, AssetKey, InstrumentKey>,
Updates the instrument state based on a new market event.
If the market event has a price associated with it (eg/ PublicTrade, OrderBookL1), any
open Position pnl_unrealised is re-calculated.
Trait Implementations§
Source§impl<InstrumentData: Clone, ExchangeKey: Clone, AssetKey: Clone, InstrumentKey: Clone> Clone for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
impl<InstrumentData: Clone, ExchangeKey: Clone, AssetKey: Clone, InstrumentKey: Clone> Clone for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
Source§impl<InstrumentData: Debug, ExchangeKey: Debug, AssetKey: Debug, InstrumentKey: Debug> Debug for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
impl<InstrumentData: Debug, ExchangeKey: Debug, AssetKey: Debug, InstrumentKey: Debug> Debug for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
Source§impl<'de, InstrumentData, ExchangeKey, AssetKey, InstrumentKey> Deserialize<'de> for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>where
InstrumentData: Deserialize<'de>,
ExchangeKey: Deserialize<'de>,
AssetKey: Deserialize<'de>,
InstrumentKey: Deserialize<'de>,
impl<'de, InstrumentData, ExchangeKey, AssetKey, InstrumentKey> Deserialize<'de> for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>where
InstrumentData: Deserialize<'de>,
ExchangeKey: Deserialize<'de>,
AssetKey: Deserialize<'de>,
InstrumentKey: Deserialize<'de>,
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>,
Source§impl<InstrumentData: PartialEq, ExchangeKey: PartialEq, AssetKey: PartialEq, InstrumentKey: PartialEq> PartialEq for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
impl<InstrumentData: PartialEq, ExchangeKey: PartialEq, AssetKey: PartialEq, InstrumentKey: PartialEq> PartialEq for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
Source§impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> Serialize for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> Serialize for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
impl<InstrumentData: PartialEq, ExchangeKey: PartialEq, AssetKey: PartialEq, InstrumentKey: PartialEq> StructuralPartialEq for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>
Auto Trait Implementations§
impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> Freeze for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: Freeze,
Instrument<ExchangeKey, AssetKey>: Freeze,
PositionManager<InstrumentKey>: Freeze,
Orders<ExchangeKey, InstrumentKey>: Freeze,
InstrumentData: Freeze,
impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> RefUnwindSafe for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: RefUnwindSafe,
Instrument<ExchangeKey, AssetKey>: RefUnwindSafe,
PositionManager<InstrumentKey>: RefUnwindSafe,
Orders<ExchangeKey, InstrumentKey>: RefUnwindSafe,
InstrumentData: RefUnwindSafe,
impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> Send for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: Send,
Instrument<ExchangeKey, AssetKey>: Send,
PositionManager<InstrumentKey>: Send,
Orders<ExchangeKey, InstrumentKey>: Send,
InstrumentData: Send,
impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> Sync for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: Sync,
Instrument<ExchangeKey, AssetKey>: Sync,
PositionManager<InstrumentKey>: Sync,
Orders<ExchangeKey, InstrumentKey>: Sync,
InstrumentData: Sync,
impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> Unpin for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: Unpin,
Instrument<ExchangeKey, AssetKey>: Unpin,
PositionManager<InstrumentKey>: Unpin,
Orders<ExchangeKey, InstrumentKey>: Unpin,
InstrumentData: Unpin,
impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> UnsafeUnpin for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: UnsafeUnpin,
Instrument<ExchangeKey, AssetKey>: UnsafeUnpin,
PositionManager<InstrumentKey>: UnsafeUnpin,
Orders<ExchangeKey, InstrumentKey>: UnsafeUnpin,
InstrumentData: UnsafeUnpin,
impl<InstrumentData, ExchangeKey, AssetKey, InstrumentKey> UnwindSafe for InstrumentState<InstrumentData, ExchangeKey, AssetKey, InstrumentKey>where
InstrumentKey: UnwindSafe,
Instrument<ExchangeKey, AssetKey>: UnwindSafe,
PositionManager<InstrumentKey>: UnwindSafe,
Orders<ExchangeKey, InstrumentKey>: UnwindSafe,
InstrumentData: 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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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