mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-06-07 07:56:12 +00:00
794 lines
39 KiB
Markdown
794 lines
39 KiB
Markdown
#  CryptoExchange.Net
|
|
|
|
[](https://github.com/JKorf/CryptoExchange.Net/actions/workflows/dotnet.yml) [](https://www.nuget.org/packages/CryptoExchange.Net) 
|
|
|
|
CryptoExchange.Net is a base library which is used to implement different cryptocurrency (exchange) API's. It provides a standardized way of implementing different API's, which results in a very similar experience for users of the API implementations.
|
|
Note that the CryptoExchange.Net package itself can not be used directly for accessing API's. Either install a client library from the list below or use [CryptoClients.Net](https://github.com/jkorf/CryptoClients.Net) which includes access to all exchange API's.
|
|
|
|
For more information on what CryptoExchange.Net and it's client libraries offers see the [Documentation](https://jkorf.github.io/CryptoExchange.Net/).
|
|
|
|
### Current implementations
|
|
The following API's are directly supported. Note that there are 3rd party implementations going around, but only these are created and supported by me:
|
|
|
|
|Exchange|Repository|Nuget|
|
|
|--|--|--|
|
|
|Binance|[JKorf/Binance.Net](https://github.com/JKorf/Binance.Net)|[](https://www.nuget.org/packages/Binance.Net)|
|
|
|BingX|[JKorf/BingX.Net](https://github.com/JKorf/BingX.Net)|[](https://www.nuget.org/packages/JK.BingX.Net)|
|
|
|Bitfinex|[JKorf/Bitfinex.Net](https://github.com/JKorf/Bitfinex.Net)|[](https://www.nuget.org/packages/Bitfinex.Net)|
|
|
|Bitget|[JKorf/Bitget.Net](https://github.com/JKorf/Bitget.Net)|[](https://www.nuget.org/packages/JK.Bitget.Net)|
|
|
|BitMart|[JKorf/BitMart.Net](https://github.com/JKorf/BitMart.Net)|[](https://www.nuget.org/packages/BitMart.Net)|
|
|
|Bybit|[JKorf/Bybit.Net](https://github.com/JKorf/Bybit.Net)|[](https://www.nuget.org/packages/Bybit.Net)|
|
|
|Coinbase|[JKorf/Coinbase.Net](https://github.com/JKorf/Coinbase.Net)|[](https://www.nuget.org/packages/JKorf.Coinbase.Net)|
|
|
|CoinEx|[JKorf/CoinEx.Net](https://github.com/JKorf/CoinEx.Net)|[](https://www.nuget.org/packages/CoinEx.Net)|
|
|
|CoinGecko|[JKorf/CoinGecko.Net](https://github.com/JKorf/CoinGecko.Net)|[](https://www.nuget.org/packages/CoinGecko.Net)|
|
|
|Crypto.com|[JKorf/CryptoCom.Net](https://github.com/JKorf/CryptoCom.Net)|[](https://www.nuget.org/packages/CryptoCom.Net)|
|
|
|Gate.io|[JKorf/GateIo.Net](https://github.com/JKorf/GateIo.Net)|[](https://www.nuget.org/packages/GateIo.Net)|
|
|
|HTX|[JKorf/HTX.Net](https://github.com/JKorf/HTX.Net)|[](https://www.nuget.org/packages/JKorf.HTX.Net)|
|
|
|Kraken|[JKorf/Kraken.Net](https://github.com/JKorf/Kraken.Net)|[](https://www.nuget.org/packages/KrakenExchange.Net)|
|
|
|Kucoin|[JKorf/Kucoin.Net](https://github.com/JKorf/Kucoin.Net)|[](https://www.nuget.org/packages/Kucoin.Net)|
|
|
|Mexc|[JKorf/Mexc.Net](https://github.com/JKorf/Mexc.Net)|[](https://www.nuget.org/packages/JK.Mexc.Net)|
|
|
|OKX|[JKorf/OKX.Net](https://github.com/JKorf/OKX.Net)|[](https://www.nuget.org/packages/JK.OKX.Net)|
|
|
|WhiteBit|[JKorf/WhiteBit.Net](https://github.com/JKorf/WhiteBit.Net)|[](https://www.nuget.org/packages/WhiteBit.Net)|
|
|
|XT|[JKorf/XT.Net](https://github.com/JKorf/XT.Net)|[](https://www.nuget.org/packages/XT.Net)|
|
|
|
|
Any of these can be installed independently or install [CryptoClients.Net](https://github.com/jkorf/CryptoClients.Net) which includes all exchange API's.
|
|
|
|
## Discord
|
|
[](https://discord.gg/MSpeEtSY8t)
|
|
A Discord server is available [here](https://discord.gg/MSpeEtSY8t). Feel free to join for discussion and/or questions around the CryptoExchange.Net and implementation libraries.
|
|
|
|
## Support the project
|
|
Any support is greatly appreciated.
|
|
|
|
## Referral
|
|
When creating an account on new exchanges please consider using a referral link from below to support development
|
|
|
|
|Exchange|Link|
|
|
|--|--|
|
|
|Bybit|[https://partner.bybit.com/b/jkorf](https://partner.bybit.com/b/jkorf)|
|
|
|Coinbase|[https://advanced.coinbase.com/join/T6H54H8](https://advanced.coinbase.com/join/T6H54H8)|
|
|
|CoinEx|[https://www.coinex.com/register?refer_code=hd6gn](https://www.coinex.com/register?refer_code=hd6gn)|
|
|
|Crypto.com|[https://crypto.com/exch/26ge92xbkn](https://crypto.com/exch/26ge92xbkn)|
|
|
|HTX|[https://www.htx.com/invite/en-us/1f?invite_code=fxp9](https://www.htx.com/invite/en-us/1f?invite_code=fxp9)|
|
|
|Kucoin|[https://www.kucoin.com/r/rf/QBS4FPED](https://www.kucoin.com/r/rf/QBS4FPED)|
|
|
|OKX|[https://okx.com/join/48046699](https://okx.com/join/48046699)|
|
|
|WhiteBit|[https://whitebit.com/referral/a8e59b59-186c-4662-824c-3095248e0edf](https://whitebit.com/referral/a8e59b59-186c-4662-824c-3095248e0edf)|
|
|
|XT|[https://www.xt.com/en/accounts/register?ref=1HRM5J](https://www.xt.com/en/accounts/register?ref=1HRM5J)|
|
|
|
|
### Donate
|
|
Make a one time donation in a crypto currency of your choice. If you prefer to donate a currency not listed here please contact me.
|
|
|
|
**Btc**: bc1q277a5n54s2l2mzlu778ef7lpkwhjhyvghuv8qf
|
|
**Eth**: 0xcb1b63aCF9fef2755eBf4a0506250074496Ad5b7
|
|
**USDT (TRX)** TKigKeJPXZYyMVDgMyXxMf17MWYia92Rjd
|
|
|
|
### Sponsor
|
|
Alternatively, sponsor me on Github using [Github Sponsors](https://github.com/sponsors/JKorf).
|
|
|
|
## Release notes
|
|
* Version 8.4.5 - 20 Dec 2024
|
|
* Added EmptyArrayObjectConverter System.Text.Json JsonConverter
|
|
* Added JsonSerializerOptions parameter to SystemTextJsonMessageAccessor constructor
|
|
|
|
* Version 8.4.4 - 08 Dec 2024
|
|
* Changed JsonConverterCtorAttribute to use constructor type parameter instead of generic type parameter to support .net framework
|
|
|
|
* Version 8.4.3 - 03 Dec 2024
|
|
* Fixed KlineTracker update handling
|
|
|
|
* Version 8.4.2 - 02 Dec 2024
|
|
* Removed special characters in ClientOrderIdSeperator to adhere to field content rules
|
|
|
|
* Version 8.4.1 - 02 Dec 2024
|
|
* Added JsonConverterCtorAttribute to allow specifying a custom JsonConverter with constructor parameters on properties
|
|
* Added ReplaceConverter System.Text.Json converter
|
|
* Added LibraryHelpers class for internal helper methods
|
|
|
|
* Version 8.4.0 - 28 Nov 2024
|
|
* Added GetFeesAsync Shared REST client support
|
|
* Added LibraryOptions base class
|
|
* Added CommaSplitEnumConverter System.Text.Json converter
|
|
* Added TimePeriodFilterSupport and MaxLimit properties to PaginatedEndpointOptions
|
|
* Updated package dependency versions
|
|
|
|
* Version 8.3.0 - 19 Nov 2024
|
|
* Added support for IOptions injection, allowing options to be read from IConfiguration
|
|
* Added handling of Infinity values in decimal converter
|
|
* Added rate limit update event
|
|
* Small refactor on client options internals
|
|
* Fixed concurrency issue when unsubscribing websocket subscription during reconnection
|
|
|
|
* Version 8.2.0 - 06 Nov 2024
|
|
* Added support for not allowing duplicate subscription topics on the same websocket connection
|
|
* Added PerAccount SharedLeverageSettingMode enum value, changed Side on SharedUserTrade to nullable
|
|
* Added support for object deserialization in SystemTextJsonMessageAccessor.GetValue<T>
|
|
* Changed SocketApiClient GetAuthenticationRequest to GetAuthenticationRequestAsync to allow for requesting token
|
|
|
|
* Version 8.1.1 - 01 Nov 2024
|
|
* Fixed socket connections trying to authenticated connection when it's marked as dedicated request connection even when no authentication is needed
|
|
* Fixed System.Text.Json ArrayConverter not passing serializer options to nested deserialization
|
|
* Fixed System.Text.Json ArrayConverter creating new serializer options each time a JsonConverter attribute is encountered
|
|
|
|
* Version 8.1.0 - 28 Oct 2024
|
|
* Added KlineTracker and TradeTracker implementation
|
|
* Added Side to SharedTrade model
|
|
* Added overload for Create method in OrderBookFactory using SharedSymbol
|
|
* Added ValidateMessage method to websocket Query object to filter messages even though it is matched to the query based on the ListenIdentifier
|
|
* Added DoHandleReset method for websocket subscriptions
|
|
* Added ConnectionId to RequestDefinition to correctly handle connection and path rate limiting configuration
|
|
* Added System.Text.Json ArrayConverter Write implementation
|
|
* Updated SharedFuturesTicker LastPrice, HighPrice and LowPrice properties to be nullable
|
|
* Updated SetApiCredentials method to also updated the credentials on the client specific options to prevent unknown client credentials in some situations
|
|
|
|
* Version 8.0.3 - 14 Oct 2024
|
|
* Added support for duplicate array indexes in System.Text.Json ArrayConverter
|
|
* Added fallback for unparsable value in System.Text.Json NumberStringConverter
|
|
* Added Authenticated property on base client and shared client
|
|
* Added GetValues System.Text.Json implementation in message accessor
|
|
|
|
* Version 8.0.2 - 09 Oct 2024
|
|
* Updated dependency versions, including System.Text.Json from 8.0.4 to 8.0.5 containing a vulnerability fix
|
|
|
|
* Version 8.0.1 - 07 Oct 2024
|
|
* Added cached library version properties on base client
|
|
* Added support for derserializing 0001-01-01 as datetime null value
|
|
* Added ToRfc3339String extension method for DateTime type
|
|
|
|
* Version 8.0.0 - 27 Sep 2024
|
|
* Added new cross exchange interfaces implementation
|
|
* Supports REST, WebSocket, Spot and Futures API's
|
|
* Added various client interfaces for specific functionality
|
|
* Added SharedSymbol type, taking care of symbol formatting for different exchanges
|
|
* Added dynamic pagination support for shared functionality
|
|
* Added various shared Enum definitions
|
|
* Added ExchangeWebResult and ExchangeEvent, exchange specific versions of WebCallResult and DataEvent
|
|
* See https://jkorf.github.io/CryptoExchange.Net/index.html#idocs_shared for more info
|
|
* Added tradingMode and deliverData parameters to BaseApiClient FormatSymbol method
|
|
* Added ExecutePages method to ExchangeHelpers static class
|
|
* Added ApplySymbolRules method to ExchangeHelpers static class
|
|
* Added ResubscribingFailed event for websocket connections
|
|
* Added handling of http result 429 (ratelimited) during websocket connection
|
|
* Added Websocket dispose before creating new connection when reconnecting
|
|
* Updated Sourcelink package version
|
|
* Marked ISpotClient and IFuturesClient references as deprecated
|
|
|
|
|
|
* Version 7.11.2 - 28 Aug 2024
|
|
* Fixed issues when ratelimiting is canceled using the provided cancellation token
|
|
|
|
* Version 7.11.1 - 25 Aug 2024
|
|
* Improved closing logic websockets
|
|
|
|
* Version 7.11.0 - 07 Aug 2024
|
|
* Added ParseString static method on EnumConverter for parsing strings manually
|
|
* Added support for decimal values in System.Text.Json NumberStringConverter
|
|
* Added support for `null` string values in System.Text.Json DecimalConverter
|
|
* Added support for number deserialization when requesting string in System.Text.Json MessageAccessor.GetValue
|
|
* Added deserialization handling of json values too big to fit decimal value
|
|
* Decreased some memory allocations during rest request authentication
|
|
* Fixed subscriptions trying to send unsubscribe request when the socket connection will be closed anyway
|
|
* Removed SecureString usage in credentials; it's not recommended to be used
|
|
* Removed some extension methods no longer relevant
|
|
* Improved testing checks
|
|
|
|
* Version 7.10.0 - 26 Jul 2024
|
|
* Added System.Text.Json NumberStringConverter
|
|
* Added integration testing base class
|
|
* Added AddSecondsString and AddOptionalSecondsString to ParameterCollection
|
|
* Added Decompress method for ReadOnlyMemory using non-GZip deflate
|
|
* Added SocketConnection parameter to SocketConnection PreprocessStreamMessage
|
|
* Fixed websocket reconnect/unsubscribe timing bug
|
|
* Fixed issue in System.Text.Json array object deserialization skipping property when skipping an index
|
|
* Fixed order book logging bug
|
|
* Fixed bug in ParameterCollection AddEnumAsInt
|
|
|
|
* Version 7.9.0 - 16 Jul 2024
|
|
* Added some checks in websocket connection handling
|
|
* Added As<T> and AsError<T> methods on untyped WebCallResult
|
|
* Updated System.Text.Json package to version 8.0.4 to fix vulnerability
|
|
* Updated websocket subscription response handling to remove the thread blocking ManualResetEvent usage
|
|
* Updated static logging classes access modifier from internal to public so they can be called in overriden methods
|
|
* Updated some testing object implementations
|
|
* Fixed authentication error when reconnecting an unauthenticated connection which was marked as dedicated query connection
|
|
* Small improvements in SystemTextJsonMessageAccessor
|
|
* Fixed System.Text.Json ArrayConverter implementation nullable value types handling
|
|
|
|
* Version 7.8.0 - 02 Jul 2024
|
|
* Updated single endpoint limit configuration
|
|
* Added LongConverter for nullable longs
|
|
* Updated SystemTextJsonComparer logic
|
|
|
|
* Version 7.7.3 - 26 Jun 2024
|
|
* Fixed request ids not matching in logging
|
|
* Added nullable int converter for System.Text.Json
|
|
* Small fixes in tests
|
|
|
|
* Version 7.7.2 - 25 Jun 2024
|
|
* Fixed ratelimiting issue possibly creating negative delays
|
|
|
|
* Version 7.7.1 - 23 Jun 2024
|
|
* Fixes for caching implementation
|
|
|
|
* Version 7.7.0 - 23 Jun 2024
|
|
* Caching support
|
|
* Caching is supported for GET requests within a certain time frame
|
|
* Enable caching by setting CachingEnabled to true in the client options
|
|
* Added DataSource to CallResult object
|
|
* Dedicated websocket connection
|
|
* Added functionality for always having a connection open which can then be used for order operations
|
|
* This eliminates the initial connection time for the first request
|
|
* WebSocket connection can be prepared by calling PrepareConnectionsAsync on the Api client, for example `await binanceSocketClient.SpotApi.PrepareConnectionsAsync()`. This is only needed initially; it will be reconnected when connection is lost.
|
|
* Added CancellationToken support for websocket queries
|
|
* Added SocketConnection parameter to SocketApiClient.GetAuthenticationRequest method
|
|
* Added ObjectStringConverter base converter for deserializing nested json strings
|
|
* Fixed websocket issue with ratelimiting and reconnecting interaction
|
|
* Fixed rate limiting issue with sub-millisecond delays
|
|
* Fixed websocket connection will now close if authentication fails because of not set credentials
|
|
* Updated websocket reconnection handling and options, added backoff policy
|
|
* Removed check for confirmed subscription as data often is pushed before the subscription is confirmed
|
|
|
|
* Version 7.6.0 - 11 Jun 2024
|
|
* Added support for specifying seperate uri and body parameters
|
|
* Added support for different message and handling generic types on socket queries
|
|
* Added support for PATCH http method requests
|
|
* Added support for setting http request body to a specific type directly
|
|
* Split DataEvent.Topic into StreamId and Symbol properties
|
|
* Added support for negative time values parsing
|
|
* Added some helper methods for converting DataEvent to CallResult
|
|
* Added support for GZip/Deflate automatic decompressing in the default HttpClient
|
|
* Updated some testing methods
|
|
|
|
* Version 7.5.2 - 07 May 2024
|
|
* Fixed SetApiCredentials not correctly being used by rate limiter causing exception
|
|
|
|
* Version 7.5.1 - 03 May 2024
|
|
* Some small improvements in unit testing components
|
|
|
|
* Version 7.5.0 - 01 May 2024
|
|
* Added testing implementations
|
|
* Small refactor AuthenticationProvider to allow better testing
|
|
* Change result of MessageAccessor.Read methods to CallResult so error can be returned
|
|
* Moved some DateTimeConverter logic to seperate methods to allow access from outside converters
|
|
|
|
* Version 7.4.0 - 28 Apr 2024
|
|
* Added FormatSymbol on IBaseApiClient interface
|
|
* Added IOrderBookFactory interface
|
|
* Removed ExchangeOptions as base class for OrderBookOptions
|
|
|
|
* Version 7.3.3 - 23 Apr 2024
|
|
* Added support for new DateTime format parsing
|
|
* Updated some logging
|
|
* Fixed concurrency issue in rest request sending
|
|
|
|
* Version 7.3.2 - 19 Apr 2024
|
|
* Fix for endpoint specific rate limiting throwing exception
|
|
|
|
* Version 7.3.1 - 18 Apr 2024
|
|
* Fixed websocket system subscriptions getting marked as unconfirmed when reconnecting
|
|
|
|
* Version 7.3.0 - 17 Apr 2024
|
|
* Added new method for sending Rest requests which splits the static and dynamic parameters
|
|
* Refactored rate limiting implementation
|
|
* Ratelimiters now statically applied for all clients
|
|
* Added support for different rate limit window types
|
|
* Added modular configuration of rate limits
|
|
* Added rate limit check when creating websocket connections
|
|
* Added automatic handling and retry for Retry-After responses
|
|
* Added configuration for setting ratelimit for each individual endpoint
|
|
* Added event for when rate limit is triggered
|
|
* Added SocketClient GetSocketApiClientStates method
|
|
|
|
* Version 7.2.1 - 05 Apr 2024
|
|
* Improved websocket reconnect logic
|
|
* Simplified SystemTextJsonMessageAccessor value retrieval
|
|
* Fixed System.Text.Json BoolConverter value writing
|
|
|
|
* Version 7.2.0 - 24 Mar 2024
|
|
* Added ArrayParametersSerialization.JsonArray support
|
|
* Refactored to high-performance logging for hot paths
|
|
* Updated SymbolOrderBook to use LoggerFactory
|
|
* Performance improvements
|
|
* Small bug fixes
|
|
* Updated logging
|
|
|
|
* Version 7.1.0 - 16 Mar 2024
|
|
* Added initial System.Text.Json deserialization support
|
|
* Added support for setting MessageSendSizeLimit for websocket clients to limit message size
|
|
* Added Exchange name property to IRestClient and ISocketClient interface
|
|
* Abstracted out rest client deserialization so different (de)serializers can be used
|
|
* Cleaned up rest client response handling
|
|
* Continued update of websocket message handling
|
|
* Use ReadonlyMemory<byte> to represent message data to prevent copying data multiple times
|
|
* Switched back to non-async websocket message handling to remove tasks overhead
|
|
* Updated package dependencies to latest versions
|
|
* Updated unit test package dependencies and updated tests accordingly
|
|
* Moved some properties used by the RestApiClient from the BaseApiClient
|
|
* Fixed issue with multiple concurrent subscribe calls in socket client
|
|
|
|
* Version 7.0.0 - 24 Feb 2024
|
|
* Full overhaul of Websocket message handling
|
|
* Abstracted out Newtonsoft.Json references in preparation of moving to System.Text.Json
|
|
* Updated SendPeriodic to operate on connection level instead of client level to prevent looping when there are no connections
|
|
* Added check to not send an unsubscribe message if there is another subscription listening to the same events
|
|
* Added CryptoRestClient and CryptoSocketClient as aggregate for accessing different exchange APIs
|
|
* Updated socket client log messages
|
|
* Updated socket client GetSubscriptionState output
|
|
|
|
* Version 6.2.5 - 09 Jan 2024
|
|
* Added support for deserializing null and empty string values to BoolConverter
|
|
|
|
* Version 6.2.4 - 04 Jan 2024
|
|
* Fixed parsing of DateTime value of zero with additional zero decimal places
|
|
|
|
* Version 6.2.3 - 02 Dec 2023
|
|
* Fixed requestBodyFormat parameter handling
|
|
|
|
* Version 6.2.2 - 02 Dec 2023
|
|
* Added support for specifying the request body content type on a per request basis
|
|
* Added DecimalStringWriterConverter
|
|
* Added RequestId to WebCallResult model
|
|
* Updated response logging
|
|
|
|
* Version 6.2.1 - 28 Oct 2023
|
|
* Utility methods
|
|
|
|
* Version 6.2.0 - 24 Oct 2023
|
|
* Added SerializerOptions helper class for setting a default serializer
|
|
* Added ParameterCollection helper class for easier parameter definition
|
|
* Added extra helper methods AuthenticationProvider
|
|
* Remove interface entries meant for internal use
|
|
* Added support for writing int values to the EnumConverter
|
|
|
|
* Version 6.1.5 - 08 Oct 2023
|
|
* Added UpdateType to socket DataEvent
|
|
* Added additional scenarios for BoolConverter
|
|
* Updated some logging
|
|
|
|
* Version 6.1.4 - 23 Sep 2023
|
|
* Added BoolConverter
|
|
* Added parameter for logging warning message on missing enum entry to EnumConverter
|
|
|
|
* Version 6.1.3 - 18 Sep 2023
|
|
* Fix for concurrency exception in socket subscription
|
|
|
|
* Version 6.1.2 - 11 Sep 2023
|
|
* Added support for multiple of the same ratelimiting type in the same rate limiter
|
|
* Fixed nullreference on rate limit error if no Retry-After header is returned
|
|
|
|
* Version 6.1.1 - 04 Sep 2023
|
|
* Fixes for json converters
|
|
|
|
* Version 6.1.0 - 24 Aug 2023
|
|
* Added support for ratelimiting on socket connections
|
|
* Added rest ratelimit handling and parsing
|
|
* Added ServerRatelimitError error
|
|
|
|
* Version 6.0.3 - 23 Jul 2023
|
|
* Fixed Proxy not getting applied in rest clients when not using DI
|
|
|
|
* Version 6.0.2 - 05 Jul 2023
|
|
* Added properties generic dictionary to SocketConnection
|
|
|
|
* Version 6.0.1 - 29 Jun 2023
|
|
* Added LogLevel optional parameter to TraceLoggerProvider
|
|
|
|
* Version 6.0.0 - 25 Jun 2023
|
|
* Updated ApiCredentials to support RSA signing as well as the default Hmac signature
|
|
* Removed custom logging implementation in favor of using `Microsoft.Extensions.Logging` ILogger directly
|
|
* Refactored client options for easier use
|
|
* Added easier way of switching environments
|
|
* Added ResponseLength and ToString() override on WebCallResult object
|
|
* Fixed memory leak in AsyncResetEvent
|
|
|
|
* Version 5.4.3 - 14 Apr 2023
|
|
* Fixed potential threading exception in socket connection
|
|
|
|
* Version 5.4.2 - 01 Apr 2023
|
|
* Reverted socket changes as it seems to cause reconnect to hang
|
|
|
|
* Version 5.4.1 - 18 Mar 2023
|
|
* Added CalculateTradableAmount to SymbolOrderBook
|
|
* Improved socket reconnect robustness
|
|
* Fixed api rate limiter not working correctly
|
|
|
|
* Version 5.4.0 - 14 Feb 2023
|
|
* Added unsubscribing when receiving subscribe answer after the request timeout has passed
|
|
* Fixed socket options copying
|
|
* Made TimeSync implementation optional
|
|
* Cleaned up ApiCredentials and added better support for extending ApiCredentials
|
|
|
|
* Version 5.3.1 - 08 Dec 2022
|
|
* Added default request parameter ordering before applying authentication
|
|
* Fixed possible issue where a socket would reconnect when it should close if it was already in reconnecting
|
|
|
|
* Version 5.3.0 - 14 Nov 2022
|
|
* Reworked client architecture, shifting funcationality to the ApiClient
|
|
* Fixed ArrayConverter exponent parsing
|
|
* Fixed ArrayConverter not checking null
|
|
* Added optional delay setting after establishing socket connection
|
|
* Added callback for revitalizing a socket request when reconnecting
|
|
* Fixed proxy setting websocket
|
|
|
|
* Version 5.2.4 - 31 Jul 2022
|
|
* Added handling of PlatformNotSupportedException when trying to use websocket from WebAssembly
|
|
* Changed DataEvent to have a public constructor for testing purposes
|
|
* Fixed EnumConverter serializing values without proper quotes
|
|
* Fixed websocket connection reconnecting too quickly when resubscribing/reauthenticating fails
|
|
|
|
* Version 5.2.3 - 19 Jul 2022
|
|
* Fixed socket getting disconnected when `no data` timeout is reached instead of being reconnected
|
|
|
|
* Version 5.2.2 - 17 Jul 2022
|
|
* Added support for retrieving a new url when socket connection is lost and reconnection will happen
|
|
|
|
* Version 5.2.1 - 16 Jul 2022
|
|
* Fixed socket reconnect issue
|
|
* Fixed `message not handled` messages after unsubscribing
|
|
* Fixed error returning for non-json error responses
|
|
|
|
* Version 5.2.0 - 10 Jul 2022
|
|
* Refactored websocket code, removed some clutter and simplified
|
|
* Added ReconnectAsync and GetSubscriptionsState methods on socket clients
|
|
|
|
* Version 5.1.12 - 12 Jun 2022
|
|
* Changed time sync so requests no longer wait for it to complete unless it's the first time
|
|
* Made log client options changable after client creation
|
|
* Fixed proxy setting not used when reconnecting socket
|
|
* Changed MaxSocketConnections to a client options
|
|
* Updated socket reconnection logic
|
|
|
|
* Version 5.1.12 - 12 Jun 2022
|
|
* Changed time sync so requests no longer wait for it to complete unless it's the first time
|
|
* Made log client options changable after client creation
|
|
* Fixed proxy setting not used when reconnecting socket
|
|
* Updated socket reconnection logic
|
|
|
|
* Version 5.1.11 - 24 May 2022
|
|
* Added KeepAliveInterval setting
|
|
* Fixed port not being copied when setting parameters on request
|
|
* Fixed inconsistent PackageReference casing in csproj
|
|
|
|
* Version 5.1.10 - 22 May 2022
|
|
* Fixed order book reconnecting while Diposed
|
|
* Fixed exception when disposing socket client while reconnecting
|
|
* Added additional null/default checking in DateTimeConverter
|
|
* Changed ConnectionLost subscription event to run in seperate task to prevent exception/longer operations from intervering with reconnecting
|
|
|
|
* Version 5.1.9 - 08 May 2022
|
|
* Added latency to the timesync calculation
|
|
* Small fix for exception in socket close handling
|
|
|
|
* Version 5.1.8 - 01 May 2022
|
|
* Cleanup socket code, fixed an issue which could cause connections to never reconnect when connection was lost
|
|
* Added support for sending requests which expect an empty response
|
|
* Fixed issue with the DateTimeConverter date interpretation
|
|
|
|
* Version 5.1.7 - 14 Apr 2022
|
|
* Moved some Rest parameters from BaseRestClient to RestApiClient to allow different implementations for sub clients
|
|
|
|
* Version 5.1.6 - 10 Mar 2022
|
|
* Updated EnumConverter to properly handle emtpy/null and default values
|
|
|
|
* Version 5.1.5 - 09 Mar 2022
|
|
* Removed ResubscribeMaxRetries default value of 5
|
|
* Updated logging and log verbosity
|
|
|
|
* Version 5.1.4 - 04 Mar 2022
|
|
* Fixed ArraySerialization handling
|
|
* Added check for invalid rate limit configured for a request
|
|
|
|
* Version 5.1.3 - 01 Mar 2022
|
|
* Fixed some issues in websocket reconnection, should be more robust now
|
|
* Prevent duplicate data reading on error in rest request
|
|
* Added ApiName to time sync state to improve log feedback
|
|
|
|
* Version 5.1.2 - 27 Feb 2022
|
|
* Fixed issue where the rate limiter was messing with time syncing
|
|
* Added support for delegate parameters
|
|
* Added `ignoreRateLimit` paramter in `SendRequestAsync`
|
|
|
|
* Version 5.1.1 - 24 Feb 2022
|
|
* Fixed issue ApiCredentials
|
|
|
|
* Version 5.1.0 - 24 Feb 2022
|
|
* Improved dispose handling in SymbolOrderBook
|
|
* Fixed TimeSync RecalculationInterval not being respected
|
|
* Small rework client options
|
|
|
|
* Version 5.0.0
|
|
* Added Github.io page for documentation: https://jkorf.github.io/CryptoExchange.Net/
|
|
* Added single DateTimeConverter replacing the different timestamp converters
|
|
* Added additional request related properties to WebCallResult
|
|
* Added CancelationToken support for websockets
|
|
* Added CancelationToken support for SymbolOrderBook starting
|
|
* Added TimeSync support
|
|
* Refactored base client classes into BaseClient and ApiClient to provide a more defined client structure
|
|
* Refactored client options to have better control over each different ApiClient
|
|
* Refactored authentication provider to be more flexible
|
|
* Refactored rate limiter implementation
|
|
* Refactored IExchangeClient interface to ISpotClient and IFuturesClient
|
|
* Refactored socket reconnection to immediately try to reconnect before waiting the ReconnectTimeout
|
|
* Improved SymbolOrderBook stability
|
|
* Updated code docs
|
|
|
|
* Version 4.2.8 - 08 Oct 2021
|
|
* Fixed deadlock in socket receive
|
|
* Fixed issue in reconnection handling when the client is disconnected again during resubscribing
|
|
* Added some additional checking of socket state to prevent sending/expecting data when socket is not connected
|
|
|
|
* Version 4.2.7 - 06 Oct 2021
|
|
* Made receivedMessages protected again to allow implementations with custom transport (Bittrex) to use it again
|
|
|
|
* Version 4.2.6 - 06 Oct 2021
|
|
* Fixed an issue causing socket client to stop processing data in .NET Framework
|
|
|
|
* Version 4.2.5 - 05 Oct 2021
|
|
* Added custom async wait event implementation as previous method seems to not work 100% of the time
|
|
|
|
* Version 4.2.4 - 30 Sep 2021
|
|
* Fix for InvalidOperationExceptions when running socket connections from .Net framework
|
|
|
|
* Version 4.2.3 - 29 Sep 2021
|
|
* Added IncomingKbps property to socket/socket client
|
|
* Updated logging
|
|
* Socket performance improvements
|
|
|
|
* Version 4.2.2 - 23 Sep 2021
|
|
* Restored missing request parameters log
|
|
|
|
* Version 4.2.1 - 22 Sep 2021
|
|
* Fìx for websocket not automatically reconnecting when connection is closed unexpectedly
|
|
|
|
* Version 4.2.0 - 20 Sep 2021
|
|
* Prevent reconnect spamming when invalid checksum is calculated in SymbolOrderBook
|
|
* Added default nonce provider implementation
|
|
|
|
* Version 4.1.0 - 15 Sep 2021
|
|
* Added overload for UnsubscribeAsync with id parameter
|
|
* Added parameter position configuration per HttpMethod type
|
|
* Added option to send custom headers with each requets
|
|
* Added option to send custom headers with individual requests
|
|
* Added debug data on error
|
|
|
|
* Version 4.0.8 - 26 Aug 2021
|
|
* Added rate limiting option for outgoing messages per socket
|
|
|
|
* Version 4.0.7 - 24 Aug 2021
|
|
* Additional error info on websocket exception
|
|
|
|
* Version 4.0.6 - 24 Aug 2021
|
|
* Removed some debug logging
|
|
|
|
* Version 4.0.5 - 24 Aug 2021
|
|
* Added ConnectionClosed event on UpdateSubscriptions to signal the connection was closed and no reconnecting is happening
|
|
|
|
* Version 4.0.4 - 24 Aug 2021
|
|
* Websocket connection fixes/improvements
|
|
* Added ChecksumValidationEnabled option for controlling checksum validation in SymbolOrderBook
|
|
* Added MaxReconnectTries option
|
|
* Added MaxResubscribeTries option
|
|
* Added MaxConcurrentResubscriptionsPerSocket option
|
|
* Fix for TimestampSecondsConverter rounding to nearest millisecond
|
|
|
|
* Version 4.0.3 - 20 Aug 2021
|
|
* Fix for concurrent sent socket issue
|
|
|
|
* Version 4.0.2 - 20 Aug 2021
|
|
* Fixed socket client continuing before the send/receive loops have been started, which could cause issues when doing concurrent connections
|
|
|
|
* Version 4.0.1 - 13 Aug 2021
|
|
* Fixed OperationCancelledException when closing socket from a project targeting .net framework
|
|
|
|
* Version 4.0.0 - 12 Aug 2020
|
|
* Release version, summed up changes from previous beta releases:
|
|
* Removed `Websocket4Net` dependency in favor of a `ClientWebSocket` native implementation for websocket connections
|
|
* Socket events now always come wrapped in a `DataEvent<>` object which contain the timestamp of the data, and optionally the originally received json string
|
|
* Implemented usage of the `Microsoft.Extensions.Logging.Abstractions` `ILogger` interface instead of a custom implementation
|
|
* Added some properties to the `IExchangeClient` interface
|
|
* `ICommonOrder.CommonOrderTime`
|
|
* `ICommonOrder.CommonOrderStatus` enum
|
|
* `ICommonTrade.CommonTradeTime`
|
|
* Added `OnOrderPlaced` and `OnOrderCanceled` events on the `IExchangeClient` interface
|
|
* Added `ExchangeHelpers` static class for various helper methods
|
|
* Removed non-async methods due to too much overhead in development/maintainance
|
|
* If you were previously using non-async methods you can add `.Result` to the end of the async call to get the same result
|
|
* Added `Book` property to `SymbolOrderBook` for a book snapshot
|
|
* Added `CalculateAverageFillPrice` to `SymbolOrderBook` to calculate the average fill price for an order with the current order book state
|
|
* Various fixes
|
|
|
|
* Version 4.0.0-beta15 - 12 Aug 2021
|
|
* Conditional version Logging.Abstractions
|
|
|
|
* Version 4.0.0-beta14 - 09 Aug 2021
|
|
* Fix for bug in processing order in SymbolOrderBook
|
|
|
|
* Version 4.0.0-beta13 - 31 Jul 2021
|
|
* Fix for socket connection
|
|
|
|
* Version 4.0.0-beta12 - 26 Jul 2021
|
|
* Fix for socket connection
|
|
|
|
* Version 4.0.0-beta11 - 09 Jul 2021
|
|
* Added CalculateAverageFillPrice to SymbolOrderBook
|
|
* Added Book property to SymbolOrderBook
|
|
* Added Async postfix to async methods
|
|
|
|
* Version 4.0.0-beta10 - 07 Jul 2021
|
|
* Updated BaseConverter to be case sensitive
|
|
* Added ExchangeHelpers class containing some helper methods
|
|
* Fixed responses not being logged on Trace log level
|
|
* Added some code docs
|
|
|
|
* Version 4.0.0-beta9 - 17 Jun 2021
|
|
* Small fixes
|
|
|
|
* Version 4.0.0-beta8 - 08 Jun 2021
|
|
* Fixed exception socket buffer size in .net framework
|
|
|
|
* Version 4.0.0-beta7 - 07 Jun 2021
|
|
* Added CommonOrderTime to IOrder
|
|
* Added OrderStatus enum for IOrder
|
|
* Added OnOrderPlaced and OnOrderCanceled events on IExchangeClient
|
|
* Added CommonTradeTime to ICommonTrade
|
|
|
|
* Version 4.0.0-beta6 - 01 jun 2021
|
|
* Some logging adjustments
|
|
* Fixed some async issues
|
|
|
|
* Version 4.0.0-beta5 - 26 May 2021
|
|
* Added DataEvent wrapper for socket updates
|
|
* Added optional original json output
|
|
* Changed logging implementation to use ILogger
|
|
|
|
* Version 4.0.0-beta4 - 06 mei 2021
|
|
* Added analyzers
|
|
* Fixed some warnings
|
|
|
|
* Version 4.0.0-beta3 - 30 Apr 2021
|
|
* Updated socket closing
|
|
|
|
* Version 4.0.0-beta2 - 30 apr 2021
|
|
* Fix for closing socket without timeout task
|
|
|
|
* Version 4.0.0-beta1 - 30 apr 2021
|
|
* Removed Websocket4Net dependency
|
|
* Added custom ClientWebSocket implementation
|
|
* Renamed handler -> subscription internally
|
|
* Renamed socket -> socketConenction when type is socketConnection
|
|
|
|
* Version 3.9.0 - 28 apr 2021
|
|
* Added optional JsonSerializer parameter to SendRequest to use during deserialization
|
|
* Fix for unhandled message warning when unsubscribing a socket subscription
|
|
|
|
* Version 3.8.1 - 19 apr 2021
|
|
* Added debug logs
|
|
* Added ValidateNullOrNotEmpty extension method
|
|
|
|
* Version 3.8.0 - 30 mrt 2021
|
|
* Better handling of json errors while deserializing stream
|
|
* Added string datetime converter
|
|
|
|
* Version 3.7.1 - 10 mrt 2021
|
|
* Performance improvemnt for the ArrayConverter
|
|
|
|
* Version 3.7.0 - 01 mrt 2021
|
|
* Changed GetResponse in RestClient to protected
|
|
* Added configuration for deterministic build
|
|
|
|
* Version 3.6.1 - 16 feb 2021
|
|
* Fix for timing related exception when stopping an symbol order book
|
|
|
|
* Version 3.6.0 - 22 jan 2021
|
|
* Added CommonVolume and CommonOpenTime to ICommonKline interface
|
|
|
|
* Version 3.5.0 - 11 jan 2021
|
|
* Additional info on exception messages
|
|
* Added support for rate limiting using credits
|
|
|
|
* Version 3.4.0 - 21 dec 2020
|
|
* Updated IExchangeClient interface
|
|
* Fix for dropping message after timeout on socket
|
|
* Added virtual HandleUnhandledMessage method in SocketClient
|
|
|
|
* Version 3.3.0 - 10 dec 2020
|
|
* Added client name
|
|
* Added common interfaces
|
|
* Fixed api key plain text storing in RateLimitterApiKey
|
|
|
|
* Version 3.2.1 - 19 nov 2020
|
|
* Fixed error code parsing
|
|
|
|
* Version 3.2.0 - 19 nov 2020
|
|
* Fix for multiple socket subscriptions re-using the same socket connection
|
|
* Updated errors
|
|
|
|
* Version 3.1.0 - 08 Oct 2020
|
|
* Added CallResult without type parameter for calls which don't return data
|
|
* Added GetErrorOrResult method on CallResult to support proper nullability checking
|
|
* Fix for reading credentials from file
|
|
* Fix for setting custom base addresses in clients
|
|
|
|
* Version 3.0.15 - 06 Oct 2020
|
|
* Changed default ShouldCheckObjects to false to prevent spam in logging
|
|
|
|
* Version 3.0.14 - 24 Aug 2020
|
|
* Updated exception message logging
|
|
|
|
* Version 3.0.13 - 24 Aug 2020
|
|
* Added request tracing id for logging
|
|
* Added shared HttpClient option
|
|
|
|
* Version 3.0.12 - 12 Aug 2020
|
|
* Named parameters on SymbolOrderBook events
|
|
|
|
* Version 3.0.11 - 20 Jun 2020
|
|
* Added support for checksum in SymbolOrderBook
|
|
|
|
* Version 3.0.10 - 16 Jun 2020
|
|
* Fix for order book synchronization
|
|
|
|
* Version 3.0.9 - 07 Jun 2020
|
|
* Added arraySerialization and postParameterPosition to AuthenticationProvider interface
|
|
* Fixed array serialization in request body
|
|
|
|
* Version 3.0.8 - 02 Jun 2020
|
|
* Added requestBodyEmptyContent setting for rest client
|
|
* Added TryParseError for rest implementations to check for error with success status code
|
|
|
|
* Version 3.0.7 - 20 May 2020
|
|
* Added error debug output
|
|
* Fix for unsubscribe causing possible deadlock
|
|
|
|
* Version 3.0.6 - 03 Mar 2020
|
|
* Added BestOffer to SymbolOrderBook, removed invalid check on proxy
|
|
|
|
* Version 3.0.5 - 05 Feb 2020
|
|
* Added PausedActivity events on socket subscriptions
|
|
|
|
* Version 3.0.4 - 29 Jan 2020
|
|
* Removed unnecessary json serialization
|
|
|
|
* Version 3.0.3 - 23 Jan 2020
|
|
* Added OnBestOffersChanged event to order book implementations
|
|
|
|
* Version 3.0.2 - 10 Dec 2019
|
|
* Removed invalid check for unauthenticated proxy
|
|
|
|
* Version 3.0.1 - 14 Nov 2019
|
|
* Re-enabled debug response logging
|
|
|
|
* Version 3.0.0 - 23 Oct 2019
|
|
* Updated to C# 8.0
|
|
* Added .NetStandard2.1 support
|
|
* Added Nullability support
|
|
* Now using HttpClient instead of WebRequest, should result in faster consequtive requests
|
|
* Added CancellationToken support
|
|
* Added bool compare override to CallResult (now possible to `if(callresult)` instead of `if(callresult.Success)`)
|
|
* Added input validation methods
|
|
* Wrong input will now throw exceptions rather than error results
|
|
* OnOrderBookUpdate event added to `SymbolOrderBook`
|
|
|
|
|
|
* Version 2.1.8 - 29 Aug 2019
|
|
* Added array serialization options for implementations
|
|
|
|
* Version 2.1.7 - 07 Aug 2019
|
|
* Fixed bug with socket connection not being disposed after lost connection
|
|
* Resubscribing after reconnecting socket now in parallel
|
|
|
|
* Version 2.1.6 - 06 Aug 2019
|
|
* Fix for missing subscription events if they are also a request response, added code docs
|
|
|
|
* Version 2.1.5 - 09 jul 2019
|
|
* Updated SymbolOrderBook
|
|
|
|
* Version 2.1.4 - 24 jun 2019
|
|
* Added checks for json deserialization issues
|
|
|
|
* Version 2.1.3 - 16 may 2019
|
|
* Refactored SymbolOrderBook
|
|
* Added BestBid/BestAsk properties for order book
|
|
|
|
* Version 2.1.2 - 14 may 2019
|
|
* Added order book base class for easy implementation
|
|
* Added additional constructor to ApiCredentials to be able to read from file |