Skip to main content

SimulatedExchange

Struct SimulatedExchange 

Source
pub struct SimulatedExchange { /* private fields */ }
Expand description

A simulated exchange for testing.

Implementations§

Source§

impl SimulatedExchange

Source

pub fn new(base_currency: impl Into<String>) -> Self

Creates a new simulated exchange.

Source

pub fn set_latency(&mut self, ms: u64)

Sets the simulated latency.

Source

pub fn fail_next_with(&self, error: ExchangeError)

Makes the next operation fail with the given error.

Source

pub fn add_instrument( &self, symbol: impl Into<String>, name: impl Into<String>, price: Decimal, lot_size: u32, )

Adds an instrument to the market.

Source

pub fn create_account( &self, account_id: impl Into<String>, initial_cash: Decimal, )

Creates an account with initial cash.

Source

pub fn add_position(&self, account_id: &str, position: Position)

Adds a position to an account.

Source

pub fn set_price(&self, symbol: &str, price: Decimal)

Sets the price for an instrument.

Source

pub fn set_market_status(&self, status: MarketStatus)

Sets the market status for all instruments.

Source

pub fn tick(&self)

Advances the market by one tick.

Source

pub fn market(&self) -> Arc<RwLock<MarketManager>> ⓘ

Gets a reference to the market manager.

Trait Implementations§

Source§

impl Debug for SimulatedExchange

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl ExchangeProvider for SimulatedExchange

Source§

fn info(&self) -> &ExchangeInfo

Returns information about this exchange.
Source§

fn ping<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ExchangeResult<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Tests the connection and authentication.
Source§

fn get_wallet<'life0, 'life1, 'async_trait>( &'life0 self, account_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = ExchangeResult<Wallet>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets account information and current positions (wallet).
Source§

fn get_instrument<'life0, 'life1, 'async_trait>( &'life0 self, symbol: &'life1 str, ) -> Pin<Box<dyn Future<Output = ExchangeResult<Instrument>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets information about a specific instrument.
Source§

fn list_instruments<'life0, 'async_trait>( &'life0 self, ) -> Pin<Box<dyn Future<Output = ExchangeResult<Vec<Instrument>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Gets a list of all available instruments.
Source§

fn get_market_data<'life0, 'life1, 'async_trait>( &'life0 self, symbol: &'life1 str, ) -> Pin<Box<dyn Future<Output = ExchangeResult<MarketData>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets current market data for an instrument.
Source§

fn get_order_book<'life0, 'life1, 'async_trait>( &'life0 self, symbol: &'life1 str, depth: u32, ) -> Pin<Box<dyn Future<Output = ExchangeResult<OrderBook>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets the order book for an instrument.
Source§

fn place_order<'life0, 'life1, 'async_trait>( &'life0 self, account_id: &'life1 str, order: Order, ) -> Pin<Box<dyn Future<Output = ExchangeResult<Order>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Places an order.
Source§

fn cancel_order<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, account_id: &'life1 str, order_id: &'life2 str, ) -> Pin<Box<dyn Future<Output = ExchangeResult<Order>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Cancels an order.
Source§

fn get_order<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, account_id: &'life1 str, order_id: &'life2 str, ) -> Pin<Box<dyn Future<Output = ExchangeResult<Order>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Gets the current status of an order.
Source§

fn get_active_orders<'life0, 'life1, 'async_trait>( &'life0 self, account_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = ExchangeResult<Vec<Order>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets all active orders.
Source§

fn id(&self) -> &str

Returns the exchange identifier.
Source§

fn name(&self) -> &str

Returns the exchange name.
Source§

fn get_market_data_batch<'life0, 'life1, 'async_trait>( &'life0 self, symbols: &'life1 [String], ) -> Pin<Box<dyn Future<Output = ExchangeResult<Vec<MarketData>>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets market data for multiple instruments.
Source§

fn is_market_open<'life0, 'life1, 'async_trait>( &'life0 self, symbol: &'life1 str, ) -> Pin<Box<dyn Future<Output = ExchangeResult<bool>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Checks if the market is currently open for a symbol.
Source§

fn market_buy<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, account_id: &'life1 str, symbol: &'life2 str, lots: u32, ) -> Pin<Box<dyn Future<Output = ExchangeResult<Order>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Creates a market buy order.
Source§

fn market_sell<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, account_id: &'life1 str, symbol: &'life2 str, lots: u32, ) -> Pin<Box<dyn Future<Output = ExchangeResult<Order>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Creates a market sell order.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more