pub struct SimulatedExchange { /* private fields */ }Expand description
A simulated exchange for testing.
Implementations§
Source§impl SimulatedExchange
impl SimulatedExchange
Sourcepub fn set_latency(&mut self, ms: u64)
pub fn set_latency(&mut self, ms: u64)
Sets the simulated latency.
Sourcepub fn fail_next_with(&self, error: ExchangeError)
pub fn fail_next_with(&self, error: ExchangeError)
Makes the next operation fail with the given error.
Sourcepub fn add_instrument(
&self,
symbol: impl Into<String>,
name: impl Into<String>,
price: Decimal,
lot_size: u32,
)
pub fn add_instrument( &self, symbol: impl Into<String>, name: impl Into<String>, price: Decimal, lot_size: u32, )
Adds an instrument to the market.
Sourcepub fn create_account(
&self,
account_id: impl Into<String>,
initial_cash: Decimal,
)
pub fn create_account( &self, account_id: impl Into<String>, initial_cash: Decimal, )
Creates an account with initial cash.
Sourcepub fn add_position(&self, account_id: &str, position: Position)
pub fn add_position(&self, account_id: &str, position: Position)
Adds a position to an account.
Sourcepub fn set_market_status(&self, status: MarketStatus)
pub fn set_market_status(&self, status: MarketStatus)
Sets the market status for all instruments.
Trait Implementations§
Source§impl Debug for SimulatedExchange
impl Debug for SimulatedExchange
Source§impl ExchangeProvider for SimulatedExchange
impl ExchangeProvider for SimulatedExchange
Source§fn info(&self) -> &ExchangeInfo
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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 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,
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,
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,
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,
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§
impl Forget for SimulatedExchange
impl Freeze for SimulatedExchange
impl Move for SimulatedExchange
impl RefUnwindSafe for SimulatedExchange
impl Send for SimulatedExchange
impl Sync for SimulatedExchange
impl Unpin for SimulatedExchange
impl UnsafeUnpin for SimulatedExchange
impl UnwindSafe for SimulatedExchange
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
Mutably borrows from an owned value. Read more