OrderSubmitter

Struct OrderSubmitter 

Source
pub struct OrderSubmitter { /* private fields */ }

Implementations§

Source§

impl OrderSubmitter

Source

pub fn new( grpc_client: DydxGrpcClient, http_client: DydxHttpClient, wallet_address: String, subaccount_number: u32, chain_id: ChainId, authenticator_ids: Vec<u64>, ) -> Self

Source

pub async fn submit_market_order( &self, wallet: &Wallet, instrument_id: InstrumentId, client_order_id: u32, side: OrderSide, quantity: Quantity, block_height: u32, ) -> Result<(), DydxError>

Submits a market order to dYdX via gRPC.

Market orders execute immediately at the best available price.

§Errors

Returns DydxError if gRPC submission fails.

Source

pub async fn submit_limit_order( &self, wallet: &Wallet, instrument_id: InstrumentId, client_order_id: u32, side: OrderSide, price: Price, quantity: Quantity, time_in_force: TimeInForce, post_only: bool, reduce_only: bool, block_height: u32, expire_time: Option<i64>, ) -> Result<(), DydxError>

Submits a limit order to dYdX via gRPC.

Limit orders execute only at the specified price or better.

§Errors

Returns DydxError if gRPC submission fails.

Source

pub async fn cancel_order( &self, wallet: &Wallet, instrument_id: InstrumentId, client_order_id: u32, block_height: u32, ) -> Result<(), DydxError>

Cancels an order on dYdX via gRPC.

Requires instrument_id to retrieve correct clob_pair_id from market params. For now, assumes short-term orders (order_flags=0). Future enhancement: track order_flags when placing orders to handle long-term cancellations.

§Errors

Returns DydxError if gRPC cancellation fails or market params not found.

Source

pub async fn cancel_orders_batch( &self, wallet: &Wallet, orders: &[(InstrumentId, u32)], block_height: u32, ) -> Result<(), DydxError>

Cancels multiple orders in a single blockchain transaction.

Batches all cancellation messages into one transaction for efficiency. This is more efficient than sequential cancellation as it requires only one account lookup and one transaction broadcast.

§Arguments
  • wallet - The wallet for signing transactions
  • orders - Slice of (InstrumentId, client_order_id) tuples to cancel
  • block_height - Current block height for order expiration
§Errors

Returns DydxError if transaction broadcast fails or market params not found.

Source

pub async fn submit_conditional_order( &self, wallet: &Wallet, instrument_id: InstrumentId, client_order_id: u32, order_type: ConditionalOrderType, side: OrderSide, trigger_price: Price, limit_price: Option<Price>, quantity: Quantity, time_in_force: Option<TimeInForce>, post_only: bool, reduce_only: bool, expire_time: Option<i64>, ) -> Result<(), DydxError>

Submits a conditional order (stop or take-profit) to dYdX via gRPC.

This is the unified implementation for all conditional order types. Market variants execute immediately when triggered; limit variants place a limit order at the specified price.

§Errors

Returns DydxError if gRPC submission fails or limit_price missing for limit orders.

Source

pub async fn submit_stop_market_order( &self, wallet: &Wallet, instrument_id: InstrumentId, client_order_id: u32, side: OrderSide, trigger_price: Price, quantity: Quantity, reduce_only: bool, expire_time: Option<i64>, ) -> Result<(), DydxError>

Submits a stop market order to dYdX via gRPC.

Stop market orders are triggered when the price reaches trigger_price.

§Errors

Returns DydxError if gRPC submission fails.

Source

pub async fn submit_stop_limit_order( &self, wallet: &Wallet, instrument_id: InstrumentId, client_order_id: u32, side: OrderSide, trigger_price: Price, limit_price: Price, quantity: Quantity, time_in_force: TimeInForce, post_only: bool, reduce_only: bool, expire_time: Option<i64>, ) -> Result<(), DydxError>

Submits a stop limit order to dYdX via gRPC.

Stop limit orders are triggered when the price reaches trigger_price, then placed as a limit order at limit_price.

§Errors

Returns DydxError if gRPC submission fails.

Source

pub async fn submit_take_profit_market_order( &self, wallet: &Wallet, instrument_id: InstrumentId, client_order_id: u32, side: OrderSide, trigger_price: Price, quantity: Quantity, reduce_only: bool, expire_time: Option<i64>, ) -> Result<(), DydxError>

Submits a take profit market order to dYdX via gRPC.

Take profit market orders are triggered when the price reaches trigger_price, then executed as a market order.

§Errors

Returns DydxError if gRPC submission fails.

Source

pub async fn submit_take_profit_limit_order( &self, wallet: &Wallet, instrument_id: InstrumentId, client_order_id: u32, side: OrderSide, trigger_price: Price, limit_price: Price, quantity: Quantity, time_in_force: TimeInForce, post_only: bool, reduce_only: bool, expire_time: Option<i64>, ) -> Result<(), DydxError>

Submits a take profit limit order to dYdX via gRPC.

Take profit limit orders are triggered when the price reaches trigger_price, then placed as a limit order at limit_price.

§Errors

Returns DydxError if gRPC submission fails.

Trait Implementations§

Source§

impl Debug for OrderSubmitter

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

fn in_current_span(self) -> Instrumented<Self>

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

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

§

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in [Layered].
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

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

§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> Ungil for T
where T: Send,