Skip to main content

KuCoin

Struct KuCoin 

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

A KuCoin client over injected transports.

Implementations§

Source§

impl KuCoin

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/v1/timestamp.

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, ) -> KuCoin

Build a public KuCoin client.

Source

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

Build an authenticated KuCoin client (credentials must carry a passphrase).

Source

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

Override the timestamp source (deterministic signing in tests).

Source

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

Attach a WebSocket transport.

Source

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

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

Source

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

A ticker for symbol (from the 24-hour stats endpoint).

§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). KuCoin returns newest-first; the result is 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 (top 20 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.

KuCoin publishes both on /contract/instrument, under two subjects: funding.rate and mark.index.price. The funding subject carries no price, so a funding print reports a mark of zero rather than one taken from the other subject at another moment.

Liquidations is refused: KuCoin publishes no public stream of forced orders.

§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 /api/v1/contracts/<contract>).

Polled, not pushed. KuCoin reports it in contracts and publishes the contract’s multiplier in the same reply, so the base-currency figure is exact arithmetic on one reading rather than two.

§Errors

Returns an Error on a spot client, if the request fails, or if the reply carries neither figure.

Source

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

KuCoin publishes no public long/short positioning figure.

§Errors

Always returns an Error: there is nothing to read.

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. Negotiates a bullet-private token over REST (POST /api/v1/bullet-private, signed), connects the returned instance endpoint (<endpoint>?token=<token>&connectId=<id>), then subscribes to the account’s own order and balance channels – on spot /spotMarket/tradeOrders and /account/balance, on futures /contractMarket/tradeOrders and /contractAccount/wallet. A futures client negotiates its token against the futures host, which serves the same /api/v1/bullet-private path. Afterwards poll_events also surfaces the account’s own Event::OrderUpdate and Event::BalanceUpdate.

The bullet token expires; keepalive_user_data sends KuCoin’s ping to keep it alive, and a dropped stream is re-subscribed automatically on the next poll_events, which re-negotiates a fresh token.

§Errors

Returns Error::InvalidCredentials without credentials or a passphrase, Error::NotConnected without a WebSocket transport, or another Error if the token negotiation or subscription fails.

Source

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

Send KuCoin’s application-level heartbeat ({"id":..,"type":"ping"}) on the private stream so the bullet token 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(&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>

All open orders, optionally filtered to one symbol.

§Errors

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

Source

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

Trade-account balances.

§Errors

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

Source§

impl KuCoin

Source

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

Open futures positions (/api/v1/positions on the futures host); flat positions are omitted. Quantities are in contracts, KuCoin’s native futures unit.

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

Record the leverage applied to subsequent futures orders. KuCoin has no standalone set-leverage endpoint — leverage is a per-order field — so this stores it locally rather than issuing a request.

§Errors

Never errors; the signature matches the Derivatives trait.

Source

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

Set the margin mode for symbol (/api/v1/position/changeMarginMode).

§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 (size in contracts).

§Errors

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

Source

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

Place several spot orders on one symbol in one request (/api/v1/orders/multi). KuCoin returns the results in request order, so each element maps to its request’s own Result.

§Errors

Returns an Error if the batch request itself fails, or if called on a futures client (multi is a spot endpoint).

Source

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

Cancel several orders by id. KuCoin has no batch-cancel-by-id endpoint, so the ids are cancelled sequentially.

§Errors

Returns an Error if any cancel fails.

Source

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

Place a one-cancels-other bracket (/api/v3/oco/order). KuCoin models an OCO as one order-list, so the returned vector holds one order carrying the list id.

§Errors

Returns an Error if the OCO is invalid or rejected.

Trait Implementations§

Source§

impl AdvancedOrders for KuCoin

Source§

fn amend_order( &mut self, _symbol: &Symbol, _order_id: &str, _new_price: Option<Decimal>, _new_quantity: Option<Decimal>, ) -> Result<Order, Error>

KuCoin has no in-place amend (orders are cancelled and re-placed), so this returns an Error::Exchange.

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§

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

Place a one-cancels-other bracket, returning the resulting order legs. Read more
Source§

impl Debug for KuCoin

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 KuCoin

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 KuCoin

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 KuCoin

Source§

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

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

impl Execution for KuCoin

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 KuCoin

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 KuCoin

Source§

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

KuCoin exposes no WebSocket order-entry API — its WebSocket surface is subscription-only (market data plus the private tradeOrders/balance push channels). Orders are placed over REST, so this returns a documented Error::Exchange.

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 KuCoin

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 KuCoin

§

impl !RefUnwindSafe for KuCoin

§

impl !Sync for KuCoin

§

impl !UnwindSafe for KuCoin

§

impl Send for KuCoin

§

impl Unpin for KuCoin

§

impl UnsafeUnpin for KuCoin

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