Skip to main content

Gate

Struct Gate 

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

A Gate.io client over injected transports.

Implementations§

Source§

impl Gate

Source

pub fn sync_time(&mut self) -> Result<i64, Error>

Learn the offset between this machine’s clock and the venue’s, from GET /api/v4/spot/time.

Explicit rather than automatic: it costs a request, and a client should not make one the caller did not ask for. Call it once after connecting, and again if the process runs long enough for drift to matter.

Returns the new offset in milliseconds (server - local).

§Errors

Returns an Error if the request fails or the response cannot be parsed.

Source

pub fn with_http( http: Box<dyn HttpTransport>, options: &ExchangeOptions, ) -> Gate

Build a public Gate.io client.

Source

pub fn with_credentials( http: Box<dyn HttpTransport>, options: &ExchangeOptions, credentials: Credentials, ) -> Gate

Build an authenticated Gate.io client.

Source

pub fn with_clock(self, now_ms: Box<dyn Fn() -> i64 + Send + Sync>) -> Gate

Override the timestamp source (deterministic signing in tests).

Source

pub fn with_ws(self, ws: Box<dyn WsTransport>) -> Gate

Attach a WebSocket transport.

Source

pub fn wire_symbol(symbol: &Symbol) -> String

The Gate wire symbol for a canonical Symbol (BTC/USDT -> BTC_USDT).

Source

pub fn ticker(&self, symbol: &Symbol) -> Result<Ticker, Error>

A ticker for symbol.

§Errors

Returns an Error if the request fails or the symbol is unknown.

Source

pub fn klines( &self, symbol: &Symbol, interval: &str, limit: u32, ) -> Result<Vec<Candle>, Error>

Up to limit candles for symbol at interval (unified). Gate returns oldest-first, already chronological.

§Errors

Returns an Error if the request fails or a row cannot be parsed.

Source

pub fn order_book( &self, symbol: &Symbol, depth: u32, ) -> Result<OrderBookSnapshot, Error>

A depth snapshot of symbol up to depth levels per side.

§Errors

Returns an Error if the request fails or the response cannot be parsed.

Source

pub fn subscribe_derivatives( &mut self, symbol: &Symbol, channel: DerivativesChannel, ) -> Result<(), Error>

Subscribe to a pushed derivatives channel.

Gate publishes the funding rate, the mark price and the index price inside the futures.tickers frame – one reading at one moment – so Funding and MarkIndex are the same subscription seen two ways.

Liquidations is refused. Gate has a futures.liquidates channel, but it answers an anonymous subscribe with “authentication required for Channel futures.liquidates”: it reports the caller’s own liquidations, not the venue’s forced flow, so it is not the public feed this channel means.

§Errors

Returns an Error on a spot client, for Liquidations, or if the subscription fails.

Source

pub fn open_interest(&self, symbol: &Symbol) -> Result<OpenInterest, Error>

The current open interest (GET /futures/usdt/contract_stats), most recent point.

Polled, not pushed. The figure is in contracts, the unit this client’s futures order path takes. The row’s time is in seconds, where every other stamp in this crate is milliseconds.

§Errors

Returns an Error on a spot client, if the request fails, or if the venue returns no data point.

Source

pub fn long_short_ratio(&self, symbol: &Symbol) -> Result<LongShortRatio, Error>

The current long/short account ratio (GET /futures/usdt/contract_stats), most recent point.

Polled, not pushed. Gate publishes lsr_account, the ratio of long accounts to short ones, where Binance publishes the two proportions. With two categories the conversion is exact and sums to one.

§Errors

Returns an Error on a spot client, if the request fails, or if the venue returns no data point.

Source

pub fn subscribe_trades(&mut self, symbol: &Symbol) -> Result<(), Error>

Subscribe to the public trade stream for symbol.

§Errors

Returns Error::NotConnected if no WebSocket transport is configured.

Source

pub fn subscribe_book(&mut self, symbol: &Symbol) -> Result<(), Error>

Subscribe to the order-book stream for symbol.

§Errors

See subscribe_trades.

Source

pub fn subscribe_ticker(&mut self, symbol: &Symbol) -> Result<(), Error>

Subscribe to the ticker stream for symbol.

§Errors

See subscribe_trades.

Source

pub fn poll_events(&mut self) -> Vec<Event>

Drain all stream events available since the last call. Non-blocking.

Source

pub fn subscribe_user_data(&mut self) -> Result<(), Error>

Open the private user-data stream (wss://api.gateio.ws/ws/v4/). Sends signed subscribe frames for the spot.orders and spot.balances channels (each carries an auth object whose SIGN is HMAC-SHA512 over channel=<channel>&event=subscribe&time=<time>). Afterwards poll_events also surfaces the account’s own Event::OrderUpdate and Event::BalanceUpdate.

A dropped private stream is re-subscribed automatically on the next poll_events; call keepalive_user_data periodically to keep it from being dropped for inactivity.

§Errors

Returns Error::InvalidCredentials without credentials, Error::NotConnected without a WebSocket transport, or another Error if the request fails.

Source

pub fn keepalive_user_data(&mut self) -> Result<(), Error>

Send an application-level heartbeat (the ping text frame) on the private stream so it is not dropped for inactivity. A no-op before subscribe_user_data.

§Errors

Returns an Error if the ping cannot be sent.

Source

pub fn place_order_ws(&mut self, request: &OrderRequest) -> Result<Order, Error>

Place a spot order over the Gate WebSocket order API (spot.order_place). Logs into a dedicated connection on first use (spot.login, signature = HMAC-SHA512 over api\nspot.login\n\n<timestamp>), then exchanges the same order args as the REST path.

§Errors

Returns Error::Exchange on the futures client (this binding’s WS order API covers spot), Error::NotConnected without a WebSocket transport, or another Error if the order is invalid or rejected.

Source

pub fn cancel_order_ws( &mut self, symbol: &Symbol, order_id: &str, ) -> Result<(), Error>

Cancel a spot order over the Gate WebSocket order API (spot.order_cancel).

§Errors

Returns Error::Exchange on the futures client, Error::NotConnected without a WebSocket transport, or another Error if the request fails.

Source

pub fn place_order(&self, request: &OrderRequest) -> Result<Order, Error>

Source

pub fn cancel_order(&self, symbol: &Symbol, order_id: &str) -> Result<(), Error>

Cancel an open order by venue id.

§Errors

Returns an Error if credentials are missing or the venue rejects it.

Source

pub fn query_order( &self, symbol: &Symbol, order_id: &str, ) -> Result<Order, Error>

Query a single order by venue id.

§Errors

Returns an Error if credentials are missing or the order is unknown.

Source

pub fn open_orders(&self, symbol: Option<&Symbol>) -> Result<Vec<Order>, Error>

Open orders for one symbol (Gate requires a currency pair / contract here).

§Errors

Returns an Error if credentials are missing, no symbol is given, or the request fails.

Source

pub fn balances(&self) -> Result<Vec<Balance>, Error>

Spot account balances.

§Errors

Returns an Error if credentials are missing or the request fails.

Source

pub fn positions(&self, symbol: Option<&Symbol>) -> Result<Vec<Position>, Error>

Open positions on the USDT-margined futures account (/api/v4/futures/usdt/positions).

§Errors

Returns an Error if credentials are missing or the request fails.

Source

pub fn set_leverage( &mut self, symbol: &Symbol, leverage: u32, ) -> Result<(), Error>

Set the leverage for symbol (isolated margin; leverage=0 = cross).

§Errors

Returns an Error if the leverage is rejected or the request fails.

Source

pub fn set_margin_mode( &mut self, symbol: &Symbol, mode: MarginMode, ) -> Result<(), Error>

Switch the margin mode for symbol. Gate couples this with the leverage endpoint: cross is leverage=0, isolated re-applies the recorded leverage.

§Errors

Returns an Error if the change is rejected or the request fails.

Source

pub fn close_position(&self, symbol: &Symbol) -> Result<Order, Error>

Flatten the open position in symbol with a reduce-only market order.

§Errors

Returns Error::NotFound if there is no open position, or another Error if the request fails.

Source§

impl Gate

Source

pub fn amend_order( &self, symbol: &Symbol, order_id: &str, new_price: Option<Decimal>, new_quantity: Option<Decimal>, ) -> Result<Order, Error>

Amend a resting spot order’s price and/or amount in place (PATCH /api/v4/spot/orders/{id}).

§Errors

Returns an Error if the order is unknown or the amend is rejected.

Source

pub fn place_batch( &self, requests: &[OrderRequest], ) -> Result<Vec<Result<Order, Error>>, Error>

Place several spot orders in one request (/api/v4/spot/batch_orders). Each element carries a succeeded flag, so each request’s own Result is preserved.

§Errors

Returns an Error if the batch request itself fails.

Source

pub fn cancel_batch( &self, symbol: &Symbol, order_ids: &[String], ) -> Result<(), Error>

Cancel several orders on one symbol in one request (/api/v4/spot/cancel_batch_orders).

§Errors

Returns an Error if the request fails.

Trait Implementations§

Source§

impl AdvancedOrders for Gate

Source§

fn place_oco(&mut self, _request: &OcoRequest) -> Result<Vec<Order>, Error>

Gate has no OCO order-list (it uses standalone price-triggered orders), so this returns an Error::Exchange.

Source§

fn amend_order( &mut self, symbol: &Symbol, order_id: &str, new_price: Option<Decimal>, new_quantity: Option<Decimal>, ) -> Result<Order, Error>

Amend a resting order’s price and/or quantity in place, returning the order as the venue reports it afterwards. None leaves that field unchanged. Venues without a native amend emulate it as cancel-replace. Read more
Source§

fn place_batch( &mut self, requests: &[OrderRequest], ) -> Result<Vec<Result<Order, Error>>, Error>

Place several orders in one request. The outer Result covers a transport/auth failure; each inner Result is that order’s own outcome, so a partially-accepted batch still returns the successes. Read more
Source§

fn cancel_batch( &mut self, symbol: &Symbol, order_ids: &[String], ) -> Result<(), Error>

Cancel several orders on one symbol in a single request. Read more
Source§

impl Debug for Gate

Hand-written: the client holds Box<dyn HttpTransport>, Box<dyn WsTransport> and a Box<dyn Fn() -> i64> clock, none of which a derive can reach. The transports are shown by whether a connection is open rather than by value, and the credentials only by whether they are set – printing them would put secret material into every log line that formats a client.

Source§

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

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

impl Derivatives for Gate

Source§

fn positions(&mut self, symbol: Option<&Symbol>) -> Result<Vec<Position>, Error>

Open positions, optionally filtered to one symbol; flat positions are omitted. Read more
Source§

fn set_leverage(&mut self, symbol: &Symbol, leverage: u32) -> Result<(), Error>

Set the account leverage for symbol. Read more
Source§

fn set_margin_mode( &mut self, symbol: &Symbol, mode: MarginMode, ) -> Result<(), Error>

Set the margin mode (cross / isolated) for symbol. Read more
Source§

fn close_position(&mut self, symbol: &Symbol) -> Result<Order, Error>

Flatten the open position in symbol with a reduce-only market order. Read more
Source§

impl DerivativesStream for Gate

Source§

fn subscribe_derivatives( &mut self, symbol: &Symbol, channel: DerivativesChannel, ) -> Result<(), Error>

Subscribe to a pushed derivatives channel. Frames arrive through poll_events as Event::Derivatives. Read more
Source§

fn open_interest(&mut self, symbol: &Symbol) -> Result<OpenInterest, Error>

Read the current open interest. Polled, not pushed. Read more
Source§

fn long_short_ratio(&mut self, symbol: &Symbol) -> Result<LongShortRatio, Error>

Read the current long/short positioning ratio. Polled, not pushed. Read more
Source§

impl Exchange for Gate

Source§

fn name(&self) -> &'static str

The venue’s lowercase identifier (e.g. "binance").
Source§

impl Execution for Gate

Source§

fn place_order(&mut self, request: &OrderRequest) -> Result<Order, Error>

Place an order and return it as accepted by the venue. Read more
Source§

fn cancel_order(&mut self, symbol: &Symbol, order_id: &str) -> Result<(), Error>

Cancel an open order by venue id. Read more
Source§

fn query_order( &mut self, symbol: &Symbol, order_id: &str, ) -> Result<Order, Error>

Query a single order by venue id. Read more
Source§

fn open_orders(&mut self, symbol: Option<&Symbol>) -> Result<Vec<Order>, Error>

All open orders, optionally filtered to one symbol. Read more
Source§

fn balances(&mut self) -> Result<Vec<Balance>, Error>

Current account balances. Read more
Source§

impl MarketData for Gate

Source§

fn ticker(&mut self, symbol: &Symbol) -> Result<Ticker, Error>

A point-in-time ticker for symbol. Read more
Source§

fn klines( &mut self, symbol: &Symbol, interval: &str, limit: u32, ) -> Result<Vec<Candle>, Error>

Up to limit historical candles for symbol at the given interval (e.g. "1m", "1h"). Returns wickra_core::Candles so the result feeds the indicator core directly. Read more
Source§

fn order_book( &mut self, symbol: &Symbol, depth: u32, ) -> Result<OrderBookSnapshot, Error>

A depth snapshot of symbol up to depth levels per side. Read more
Source§

fn subscribe_trades(&mut self, symbol: &Symbol) -> Result<(), Error>

Subscribe to the public trade stream for symbol. Read more
Source§

fn subscribe_book(&mut self, symbol: &Symbol) -> Result<(), Error>

Subscribe to the order-book stream for symbol. Read more
Source§

fn subscribe_ticker(&mut self, symbol: &Symbol) -> Result<(), Error>

Subscribe to the ticker stream for symbol. Read more
Source§

fn poll_events(&mut self) -> Vec<Event>

Drain all events buffered since the last call. Non-blocking: returns an empty vector when nothing is pending.
Source§

impl WsExecution for Gate

Source§

fn place_order_ws(&mut self, request: &OrderRequest) -> Result<Order, Error>

Place an order over the WebSocket API and return it as the venue reports it. Read more
Source§

fn cancel_order_ws( &mut self, symbol: &Symbol, order_id: &str, ) -> Result<(), Error>

Cancel an order over the WebSocket API by venue id. Read more
Source§

impl WsUserData for Gate

Source§

fn subscribe_user_data(&mut self) -> Result<(), Error>

Open the private user-data stream. After it returns, poll_events on the same client also drains the user’s order and balance events alongside the public market-data stream. Read more
Source§

fn keepalive_user_data(&mut self) -> Result<(), Error>

Keep the private user-data stream alive: refresh the venue’s session so it is not dropped for inactivity. The consumer calls this periodically (e.g. on a timer). Venues that need a REST keepalive refresh their listen key; venues that need an application-level heartbeat send a ping frame. The default is a no-op for venues that need neither. Read more

Auto Trait Implementations§

§

impl !Freeze for Gate

§

impl !RefUnwindSafe for Gate

§

impl !Sync for Gate

§

impl !UnwindSafe for Gate

§

impl Send for Gate

§

impl Unpin for Gate

§

impl UnsafeUnpin for Gate

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + 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
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + 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
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