pub struct OrderRequestBuilder<Symbol, Side, Type, Amt> { /* private fields */ }Expand description
Builder for OrderRequest with typestate pattern for required fields.
The typestate pattern ensures at compile-time that all required fields
(symbol, side, order_type, amount) are set before the build() method
becomes available.
§Type Parameters
Symbol- EitherMissingorSet<String>for the symbol fieldSide- EitherMissingorSet<OrderSide>for the side fieldType- EitherMissingorSet<OrderType>for the order_type fieldAmt- EitherMissingorSet<Amount>for the amount field
§Examples
use ccxt_core::types::order_request::OrderRequestBuilder;
use ccxt_core::types::{OrderSide, OrderType, TimeInForce};
use ccxt_core::types::financial::{Amount, Price};
use rust_decimal_macros::dec;
// This compiles - all required fields are set
let request = OrderRequestBuilder::new()
.symbol("BTC/USDT")
.side(OrderSide::Buy)
.order_type(OrderType::Limit)
.amount(Amount::new(dec!(0.1)))
.price(Price::new(dec!(50000)))
.time_in_force(TimeInForce::GTC)
.build();Implementations§
Source§impl<Side, Type, Amt> OrderRequestBuilder<Missing, Side, Type, Amt>
impl<Side, Type, Amt> OrderRequestBuilder<Missing, Side, Type, Amt>
Source§impl<Symbol, Type, Amt> OrderRequestBuilder<Symbol, Missing, Type, Amt>
impl<Symbol, Type, Amt> OrderRequestBuilder<Symbol, Missing, Type, Amt>
Source§impl<Symbol, Side, Amt> OrderRequestBuilder<Symbol, Side, Missing, Amt>
impl<Symbol, Side, Amt> OrderRequestBuilder<Symbol, Side, Missing, Amt>
Sourcepub fn order_type(
self,
order_type: OrderType,
) -> OrderRequestBuilder<Symbol, Side, Set<OrderType>, Amt>
pub fn order_type( self, order_type: OrderType, ) -> OrderRequestBuilder<Symbol, Side, Set<OrderType>, Amt>
Source§impl<Symbol, Side, Type> OrderRequestBuilder<Symbol, Side, Type, Missing>
impl<Symbol, Side, Type> OrderRequestBuilder<Symbol, Side, Type, Missing>
Source§impl<Symbol, Side, Type, Amt> OrderRequestBuilder<Symbol, Side, Type, Amt>
impl<Symbol, Side, Type, Amt> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sourcepub fn price(self, price: Price) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn price(self, price: Price) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sourcepub fn stop_price(
self,
stop_price: Price,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn stop_price( self, stop_price: Price, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sourcepub fn time_in_force(
self,
tif: TimeInForce,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn time_in_force( self, tif: TimeInForce, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sourcepub fn client_order_id(
self,
id: impl Into<String>,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn client_order_id( self, id: impl Into<String>, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sourcepub fn reduce_only(
self,
reduce_only: bool,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn reduce_only( self, reduce_only: bool, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sets the reduce-only flag (optional, for futures).
When true, the order will only reduce an existing position.
Sourcepub fn post_only(
self,
post_only: bool,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn post_only( self, post_only: bool, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sets the post-only flag (optional).
When true, the order will only be placed if it would be a maker order.
Sourcepub fn trigger_price(
self,
trigger_price: Price,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn trigger_price( self, trigger_price: Price, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sets the trigger price (optional, for conditional orders).
§Arguments
trigger_price- Price at which the order is triggered
Sourcepub fn take_profit_price(
self,
take_profit_price: Price,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn take_profit_price( self, take_profit_price: Price, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sourcepub fn stop_loss_price(
self,
stop_loss_price: Price,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn stop_loss_price( self, stop_loss_price: Price, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sourcepub fn trailing_delta(
self,
delta: Decimal,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn trailing_delta( self, delta: Decimal, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sets the trailing delta in basis points (optional).
§Arguments
delta- Trailing delta in basis points
Sourcepub fn trailing_percent(
self,
percent: Decimal,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn trailing_percent( self, percent: Decimal, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sourcepub fn activation_price(
self,
activation_price: Price,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn activation_price( self, activation_price: Price, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sets the activation price (optional, for trailing stop orders).
§Arguments
activation_price- Price at which trailing stop activates
Sourcepub fn callback_rate(
self,
rate: Decimal,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn callback_rate( self, rate: Decimal, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sets the callback rate (optional, for futures trailing stop orders).
§Arguments
rate- Callback rate percentage
Sourcepub fn working_type(
self,
working_type: impl Into<String>,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn working_type( self, working_type: impl Into<String>, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sets the working type (optional, for futures).
§Arguments
working_type- “CONTRACT_PRICE” or “MARK_PRICE”
Sourcepub fn position_side(
self,
position_side: impl Into<String>,
) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
pub fn position_side( self, position_side: impl Into<String>, ) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
Sets the position side (optional, for hedge mode futures).
§Arguments
position_side- “LONG”, “SHORT”, or “BOTH”
Source§impl OrderRequestBuilder<Set<String>, Set<OrderSide>, Set<OrderType>, Set<Amount>>
impl OrderRequestBuilder<Set<String>, Set<OrderSide>, Set<OrderType>, Set<Amount>>
Sourcepub fn build(self) -> OrderRequest
pub fn build(self) -> OrderRequest
Builds the final OrderRequest.
This method is only available when all required fields (symbol, side, order_type, amount) have been set.
§Returns
A fully constructed OrderRequest with all specified fields.
§Examples
use ccxt_core::types::order_request::OrderRequest;
use ccxt_core::types::{OrderSide, OrderType};
use ccxt_core::types::financial::Amount;
use rust_decimal_macros::dec;
let request = OrderRequest::builder()
.symbol("BTC/USDT")
.side(OrderSide::Buy)
.order_type(OrderType::Market)
.amount(Amount::new(dec!(0.1)))
.build();
assert_eq!(request.symbol, "BTC/USDT");Trait Implementations§
Source§impl<Symbol, Side, Type, Amt> Clone for OrderRequestBuilder<Symbol, Side, Type, Amt>
impl<Symbol, Side, Type, Amt> Clone for OrderRequestBuilder<Symbol, Side, Type, Amt>
Source§fn clone(&self) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
fn clone(&self) -> OrderRequestBuilder<Symbol, Side, Type, Amt>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more