pub struct RequestOpen {
pub side: Side,
pub price: Option<Decimal>,
pub quantity: Decimal,
pub kind: OrderKind,
pub time_in_force: TimeInForce,
pub position_id: Option<PositionId>,
pub reduce_only: bool,
}Expand description
Parameters for opening a new order.
§Warning: reduce_only Default Behavior
The reduce_only field defaults to false, which means:
- A
Sellorder defaults toSellToOpen(open short / write option) - A
Buyorder defaults toBuyToOpen(open long)
For closing positions, callers MUST explicitly set reduce_only: true.
Failure to do so on non-crypto instruments (equities, options) will:
- On non-margin accounts: result in a 422 rejection from the exchange
- On margin accounts: silently open a short position instead of closing the long
The close_open_positions_with_market_orders
helper sets this correctly. Direct RequestOpen construction must handle it manually.
Fields§
§side: Side§price: Option<Decimal>Limit price for the order. Required for Limit/StopLimit/TrailingStopLimit orders.
None for Market/Stop/TrailingStop orders (which execute at market price when triggered).
quantity: Decimal§kind: OrderKind§time_in_force: TimeInForce§position_id: Option<PositionId>Target PositionId for this order in OmsMode::Hedging.
For opening orders: the position this fill should open or add to.
For closing orders: the position this fill should reduce or close.
In OmsMode::Netting, leave as None (ignored).
reduce_only: boolConstrain this order to only reduce existing positions, never open new ones.
Used by exchanges that require explicit open/close intent (Alpaca, Interactive
Brokers, Schwab). Adapters derive venue-specific semantics from this flag + side:
reduce_only=false, Buy→ BuyToOpen (open long / add to long)reduce_only=false, Sell→ SellToOpen (open short / write option)reduce_only=true, Buy→ BuyToClose (close short)reduce_only=true, Sell→ SellToClose (close long)
Exchanges that infer intent from positions (Binance, Deribit) may map this to
their reduceOnly parameter or ignore it entirely.
Trait Implementations§
Source§impl Clone for RequestOpen
impl Clone for RequestOpen
Source§fn clone(&self) -> RequestOpen
fn clone(&self) -> RequestOpen
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RequestOpen
impl Debug for RequestOpen
Source§impl<'de> Deserialize<'de> for RequestOpen
impl<'de> Deserialize<'de> for RequestOpen
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 Hash for RequestOpen
impl Hash for RequestOpen
Source§impl Ord for RequestOpen
impl Ord for RequestOpen
Source§fn cmp(&self, other: &RequestOpen) -> Ordering
fn cmp(&self, other: &RequestOpen) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for RequestOpen
impl PartialEq for RequestOpen
Source§fn eq(&self, other: &RequestOpen) -> bool
fn eq(&self, other: &RequestOpen) -> bool
self and other values to be equal, and is used by ==.Source§impl PartialOrd for RequestOpen
impl PartialOrd for RequestOpen
Source§impl Serialize for RequestOpen
impl Serialize for RequestOpen
impl Eq for RequestOpen
impl StructuralPartialEq for RequestOpen
Auto Trait Implementations§
impl Freeze for RequestOpen
impl RefUnwindSafe for RequestOpen
impl Send for RequestOpen
impl Sync for RequestOpen
impl Unpin for RequestOpen
impl UnsafeUnpin for RequestOpen
impl UnwindSafe for RequestOpen
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
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> 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