mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-07 07:56:12 +00:00
commit 90f285d7f6bcd926ce9ca3d5832b1d70a5eae6ab Author: JKorf <jankorf91@gmail.com> Date: Sun Jun 25 19:51:12 2023 +0200 Docs commit 72187035c703d1402b37bd2f4c3e066706f28d67 Author: JKorf <jankorf91@gmail.com> Date: Sat Jun 24 16:02:53 2023 +0200 docs commit 8411977292f1fb0b6e0705b1ad675b79a5311d90 Author: JKorf <jankorf91@gmail.com> Date: Fri Jun 23 18:25:15 2023 +0200 wip commit cb7d33aad5d2751104c8b8a6c6eadbf0d36b672c Author: JKorf <jankorf91@gmail.com> Date: Fri Jun 2 19:26:26 2023 +0200 wip commit 4359a2d05ea1141cff516dab18f364a6ca854e18 Author: JKorf <jankorf91@gmail.com> Date: Wed May 31 20:51:36 2023 +0200 wip commit c6adb1b2f728d143f6bd667139c619581122a3c9 Author: JKorf <jankorf91@gmail.com> Date: Mon May 1 21:13:47 2023 +0200 wip commit 7fee733f82fa6ff574030452f0955c9e817647dd Author: JKorf <jankorf91@gmail.com> Date: Thu Apr 27 13:02:56 2023 +0200 wip commit f8057313ffc9b0c31effcda71d35d105ea390971 Author: JKorf <jankorf91@gmail.com> Date: Mon Apr 17 21:37:51 2023 +0200 wip
145 lines
6.3 KiB
Markdown
145 lines
6.3 KiB
Markdown
---
|
|
title: Common interfaces
|
|
nav_order: 7
|
|
---
|
|
|
|
## Shared interfaces
|
|
Clients have a common interface implementation to allow a shared code base to use the same functionality for different exchanges. The interface is implemented at the `API` level, for example:
|
|
```csharp
|
|
var binanceClient = new BinanceClient();
|
|
ISpotClient spotClient = binanceClient.SpotApi.CommonSpotClient;
|
|
IFuturesClient futuresClient = binanceClient.UsdFuturesApi.CommonFuturesClient;
|
|
```
|
|
|
|
For examples on this see the Examples folder.
|
|
|
|
## ISpotClient
|
|
The `ISpotClient` interface is implemented on Spot API clients. The interface exposes basic functionality like retrieving market data and managing orders. The `ISpotClient` interface will be available via the `CommonSpotClient` property on the Api client.
|
|
The spot client has the following members:
|
|
|
|
*Properties*
|
|
```csharp
|
|
// The name of the exchange this client interacts with
|
|
string ExchangeName { get; }
|
|
```
|
|
|
|
*Events*
|
|
```csharp
|
|
// Event when placing an order with this ISpotClient. Note that this is not an event handler listening on the exchange, just an event handler for when the `PlaceOrderAsync` method is called.
|
|
event Action<OrderId> OnOrderPlaced;
|
|
// Event when canceling an order with this ISpotClient. Note that this is not an event handler listening on the exchange, just an event handler for when the `CancelOrderAsync` method is called.
|
|
event Action<OrderId> OnOrderCanceled;
|
|
|
|
```
|
|
|
|
*Methods*
|
|
```csharp
|
|
// Retrieve the name of a symbol based on 2 assets. This will format them in the way the exchange expects them. For example BTC, USDT will return BTCUSDT on Binance and BTC-USDT on Kucoin
|
|
string GetSymbolName(string baseAsset, string quoteAsset);
|
|
|
|
// Get a list of symbols (trading pairs) on the exchange
|
|
Task<WebCallResult<IEnumerable<Symbol>>> GetSymbolsAsync();
|
|
|
|
// Get the ticker (24 hour stats) for a symbol
|
|
Task<WebCallResult<Ticker>> GetTickerAsync(string symbol);
|
|
|
|
// Get a list of tickers for all symbols
|
|
Task<WebCallResult<IEnumerable<Ticker>>> GetTickersAsync();
|
|
|
|
// Get a list klines (candlesticks) for a symbol
|
|
Task<WebCallResult<IEnumerable<Kline>>> GetKlinesAsync(string symbol, TimeSpan timespan, DateTime? startTime = null, DateTime? endTime = null, int? limit = null);
|
|
|
|
// Get the order book for a symbol
|
|
Task<WebCallResult<OrderBook>> GetOrderBookAsync(string symbol);
|
|
|
|
// Get a list of most recent trades
|
|
Task<WebCallResult<IEnumerable<Trade>>> GetRecentTradesAsync(string symbol);
|
|
|
|
// Get balances
|
|
Task<WebCallResult<IEnumerable<Balance>>> GetBalancesAsync(string? accountId = null);
|
|
|
|
// Place an order
|
|
Task<WebCallResult<OrderId>> PlaceOrderAsync(string symbol, CommonOrderSide side, CommonOrderType type, decimal quantity, decimal? price = null, string? accountId = null);
|
|
|
|
// Get order by order id
|
|
Task<WebCallResult<Order>> GetOrderAsync(string orderId, string? symbol = null);
|
|
|
|
// Get the trades for an order
|
|
Task<WebCallResult<IEnumerable<UserTrade>>> GetOrderTradesAsync(string orderId, string? symbol = null);
|
|
|
|
// Get a list of open orders. Some exchanges require a symbol
|
|
Task<WebCallResult<IEnumerable<Order>>> GetOpenOrdersAsync(string? symbol = null);
|
|
|
|
// Get a list of closed orders. Some exchanges require a symbol
|
|
Task<WebCallResult<IEnumerable<Order>>> GetClosedOrdersAsync(string? symbol = null);
|
|
|
|
// Cancel an active order
|
|
Task<WebCallResult<OrderId>> CancelOrderAsync(string orderId, string? symbol = null);
|
|
```
|
|
|
|
## IFuturesClient
|
|
The `IFuturesClient` interface is implemented on Futures API clients. The interface exposes basic functionality like retrieving market data and managing orders. The `IFuturesClient` interface will be available via the `CommonFuturesClient` property on the Api client.
|
|
The spot client has the following members:
|
|
|
|
*Properties*
|
|
```csharp
|
|
// The name of the exchange this client interacts with
|
|
string ExchangeName { get; }
|
|
```
|
|
|
|
*Events*
|
|
```csharp
|
|
// Event when placing an order with this ISpotClient. Note that this is not an event handler listening on the exchange, just an event handler for when the `PlaceOrderAsync` method is called.
|
|
event Action<OrderId> OnOrderPlaced;
|
|
// Event when canceling an order with this ISpotClient. Note that this is not an event handler listening on the exchange, just an event handler for when the `CancelOrderAsync` method is called.
|
|
event Action<OrderId> OnOrderCanceled;
|
|
|
|
```
|
|
|
|
*Methods*
|
|
```csharp
|
|
// Retrieve the name of a symbol based on 2 assets. This will format them in the way the exchange expects them. For example BTC, USDT will return BTCUSDT on Binance and BTC-USDT on Kucoin
|
|
string GetSymbolName(string baseAsset, string quoteAsset);
|
|
|
|
// Get a list of symbols (trading pairs) on the exchange
|
|
Task<WebCallResult<IEnumerable<Symbol>>> GetSymbolsAsync();
|
|
|
|
// Get the ticker (24 hour stats) for a symbol
|
|
Task<WebCallResult<Ticker>> GetTickerAsync(string symbol);
|
|
|
|
// Get a list of tickers for all symbols
|
|
Task<WebCallResult<IEnumerable<Ticker>>> GetTickersAsync();
|
|
|
|
// Get a list klines (candlesticks) for a symbol
|
|
Task<WebCallResult<IEnumerable<Kline>>> GetKlinesAsync(string symbol, TimeSpan timespan, DateTime? startTime = null, DateTime? endTime = null, int? limit = null);
|
|
|
|
// Get the order book for a symbol
|
|
Task<WebCallResult<OrderBook>> GetOrderBookAsync(string symbol);
|
|
|
|
// Get a list of most recent trades
|
|
Task<WebCallResult<IEnumerable<Trade>>> GetRecentTradesAsync(string symbol);
|
|
|
|
// Get balances
|
|
Task<WebCallResult<IEnumerable<Balance>>> GetBalancesAsync(string? accountId = null);
|
|
|
|
// Get current open positions
|
|
Task<WebCallResult<IEnumerable<Position>>> GetPositionsAsync();
|
|
|
|
// Place an order
|
|
Task<WebCallResult<OrderId>> PlaceOrderAsync(string symbol, CommonOrderSide side, CommonOrderType type, decimal quantity, decimal? price = null, int? leverage = null, string? accountId = null);
|
|
|
|
// Get order by order id
|
|
Task<WebCallResult<Order>> GetOrderAsync(string orderId, string? symbol = null);
|
|
|
|
// Get the trades for an order
|
|
Task<WebCallResult<IEnumerable<UserTrade>>> GetOrderTradesAsync(string orderId, string? symbol = null);
|
|
|
|
// Get a list of open orders. Some exchanges require a symbol
|
|
Task<WebCallResult<IEnumerable<Order>>> GetOpenOrdersAsync(string? symbol = null);
|
|
|
|
// Get a list of closed orders. Some exchanges require a symbol
|
|
Task<WebCallResult<IEnumerable<Order>>> GetClosedOrdersAsync(string? symbol = null);
|
|
|
|
// Cancel an active order
|
|
Task<WebCallResult<OrderId>> CancelOrderAsync(string orderId, string? symbol = null);
|
|
``` |