mirror of
				https://github.com/JKorf/CryptoExchange.Net
				synced 2025-10-31 02:17:45 +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);
 | |
| ``` |