mirror of
https://github.com/JKorf/CryptoExchange.Net.git
synced 2026-08-12 00:43:03 +00:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 21872f818a | |||
| 4e7c45d758 | |||
| 0e55e5f065 | |||
| b1c5cf318a | |||
| 9d94a24862 | |||
| 6cf9684f55 | |||
| 8043a48c49 | |||
| 7d657dd533 | |||
| 1bfdec1484 | |||
| 8d5b6a53f3 | |||
| ad97102e7c |
@@ -6,9 +6,9 @@
|
|||||||
<PackageId>CryptoExchange.Net.Protobuf</PackageId>
|
<PackageId>CryptoExchange.Net.Protobuf</PackageId>
|
||||||
<Authors>JKorf</Authors>
|
<Authors>JKorf</Authors>
|
||||||
<Description>Protobuf support for CryptoExchange.Net</Description>
|
<Description>Protobuf support for CryptoExchange.Net</Description>
|
||||||
<PackageVersion>9.11.1</PackageVersion>
|
<PackageVersion>9.13.0</PackageVersion>
|
||||||
<AssemblyVersion>9.11.1</AssemblyVersion>
|
<AssemblyVersion>9.13.0</AssemblyVersion>
|
||||||
<FileVersion>9.11.1</FileVersion>
|
<FileVersion>9.13.0</FileVersion>
|
||||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||||
<PackageTags>CryptoExchange;CryptoExchange.Net</PackageTags>
|
<PackageTags>CryptoExchange;CryptoExchange.Net</PackageTags>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
<DocumentationFile>CryptoExchange.Net.Protobuf.xml</DocumentationFile>
|
<DocumentationFile>CryptoExchange.Net.Protobuf.xml</DocumentationFile>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CryptoExchange.Net" Version="9.11.0" />
|
<PackageReference Include="CryptoExchange.Net" Version="9.13.0" />
|
||||||
<PackageReference Include="protobuf-net" Version="3.2.56" />
|
<PackageReference Include="protobuf-net" Version="3.2.56" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -5,6 +5,12 @@
|
|||||||
Protobuf support for CryptoExchange.Net.
|
Protobuf support for CryptoExchange.Net.
|
||||||
|
|
||||||
## Release notes
|
## Release notes
|
||||||
|
* Version 9.13.0 - 10 Nov 2025
|
||||||
|
* Updated CryptoExchange.Net version to 9.13.0, see https://github.com/JKorf/CryptoExchange.Net/releases/
|
||||||
|
|
||||||
|
* Version 9.12.0 - 03 Nov 2025
|
||||||
|
* Updated CryptoExchange.Net version to 9.12.0, see https://github.com/JKorf/CryptoExchange.Net/releases/
|
||||||
|
|
||||||
* Version 9.11.1 - 30 Oct 2025
|
* Version 9.11.1 - 30 Oct 2025
|
||||||
* Updated CryptoExchange.Net version to 9.11.0, see https://github.com/JKorf/CryptoExchange.Net/releases/
|
* Updated CryptoExchange.Net version to 9.11.0, see https://github.com/JKorf/CryptoExchange.Net/releases/
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ namespace CryptoExchange.Net.Clients
|
|||||||
{
|
{
|
||||||
_logger = loggerFactory?.CreateLogger(name + ".RestClient") ?? NullLoggerFactory.Instance.CreateLogger(name);
|
_logger = loggerFactory?.CreateLogger(name + ".RestClient") ?? NullLoggerFactory.Instance.CreateLogger(name);
|
||||||
|
|
||||||
LibraryHelpers.StaticLogger = loggerFactory?.CreateLogger(name);
|
LibraryHelpers.StaticLogger = loggerFactory?.CreateLogger("CryptoExchange");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ namespace CryptoExchange.Net.Clients
|
|||||||
{
|
{
|
||||||
_logger = loggerFactory?.CreateLogger(name + ".SocketClient") ?? NullLoggerFactory.Instance.CreateLogger(name);
|
_logger = loggerFactory?.CreateLogger(name + ".SocketClient") ?? NullLoggerFactory.Instance.CreateLogger(name);
|
||||||
|
|
||||||
LibraryHelpers.StaticLogger = loggerFactory?.CreateLogger(name);
|
LibraryHelpers.StaticLogger = loggerFactory?.CreateLogger("CryptoExchange");
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson
|
|||||||
if (isEmptyString && !_unknownValuesWarned.Contains(null))
|
if (isEmptyString && !_unknownValuesWarned.Contains(null))
|
||||||
{
|
{
|
||||||
// We received an empty string and have no mapping for it, and the property isn't nullable
|
// We received an empty string and have no mapping for it, and the property isn't nullable
|
||||||
LibraryHelpers.StaticLogger?.LogWarning($"Received null or empty enum value, but property type is not a nullable enum. EnumType: {typeof(T).Name}. If you think {typeof(T).Name} should be nullable please open an issue on the Github repo");
|
LibraryHelpers.StaticLogger?.LogWarning($"Received null or empty enum value, but property type is not a nullable enum. EnumType: {typeof(T).FullName}. If you think {typeof(T).FullName} should be nullable please open an issue on the Github repo");
|
||||||
}
|
}
|
||||||
|
|
||||||
return new T(); // return default value
|
return new T(); // return default value
|
||||||
@@ -149,7 +149,7 @@ namespace CryptoExchange.Net.Converters.SystemTextJson
|
|||||||
if (!_unknownValuesWarned.Contains(stringValue))
|
if (!_unknownValuesWarned.Contains(stringValue))
|
||||||
{
|
{
|
||||||
_unknownValuesWarned.Add(stringValue!);
|
_unknownValuesWarned.Add(stringValue!);
|
||||||
LibraryHelpers.StaticLogger?.LogWarning($"Cannot map enum value. EnumType: {enumType.Name}, Value: {stringValue}, Known values: {string.Join(", ", _mapping.Select(m => m.Value))}. If you think {stringValue} should added please open an issue on the Github repo");
|
LibraryHelpers.StaticLogger?.LogWarning($"Cannot map enum value. EnumType: {enumType.FullName}, Value: {stringValue}, Known values: {string.Join(", ", _mapping.Select(m => m.Value))}. If you think {stringValue} should added please open an issue on the Github repo");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,9 @@
|
|||||||
<PackageId>CryptoExchange.Net</PackageId>
|
<PackageId>CryptoExchange.Net</PackageId>
|
||||||
<Authors>JKorf</Authors>
|
<Authors>JKorf</Authors>
|
||||||
<Description>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.</Description>
|
<Description>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.</Description>
|
||||||
<PackageVersion>9.12.0</PackageVersion>
|
<PackageVersion>9.13.0</PackageVersion>
|
||||||
<AssemblyVersion>9.12.0</AssemblyVersion>
|
<AssemblyVersion>9.13.0</AssemblyVersion>
|
||||||
<FileVersion>9.12.0</FileVersion>
|
<FileVersion>9.13.0</FileVersion>
|
||||||
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
|
||||||
<PackageTags>OKX;OKX.Net;Mexc;Mexc.Net;Kucoin;Kucoin.Net;Kraken;Kraken.Net;Huobi;Huobi.Net;CoinEx;CoinEx.Net;Bybit;Bybit.Net;Bitget;Bitget.Net;Bitfinex;Bitfinex.Net;Binance;Binance.Net;CryptoCurrency;CryptoCurrency Exchange;CryptoExchange.Net</PackageTags>
|
<PackageTags>OKX;OKX.Net;Mexc;Mexc.Net;Kucoin;Kucoin.Net;Kraken;Kraken.Net;Huobi;Huobi.Net;CoinEx;CoinEx.Net;Bybit;Bybit.Net;Bitget;Bitget.Net;Bitfinex;Bitfinex.Net;Binance;Binance.Net;CryptoCurrency;CryptoCurrency Exchange;CryptoExchange.Net</PackageTags>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
namespace CryptoExchange.Net.Interfaces
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Service for an exchange
|
||||||
|
/// </summary>
|
||||||
|
public interface IExchangeService
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The exchange the service is for
|
||||||
|
/// </summary>
|
||||||
|
public string ExchangeName { get; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.SharedApis
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Type of ticker
|
||||||
|
/// </summary>
|
||||||
|
public enum SharedTickerType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The ticker data is calculated based on the last 24 hours
|
||||||
|
/// </summary>
|
||||||
|
Day24H,
|
||||||
|
/// <summary>
|
||||||
|
/// The ticker data is calculated based on the start of the day at 00:00 on UTC+0
|
||||||
|
/// </summary>
|
||||||
|
DayUtc0,
|
||||||
|
/// <summary>
|
||||||
|
/// Ticker data is calculated in a different way or not consistent
|
||||||
|
/// </summary>
|
||||||
|
Other
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -12,7 +12,7 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Futures get ticker request options
|
/// Futures get ticker request options
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EndpointOptions<GetTickerRequest> GetFuturesTickerOptions { get; }
|
GetTickerOptions GetFuturesTickerOptions { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get ticker info for a specific futures symbol
|
/// Get ticker info for a specific futures symbol
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -23,7 +23,7 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Futures get tickers request options
|
/// Futures get tickers request options
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EndpointOptions<GetTickersRequest> GetFuturesTickersOptions { get; }
|
GetTickersOptions GetFuturesTickersOptions { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get ticker info for all futures symbols
|
/// Get ticker info for all futures symbols
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Spot ticker request options
|
/// Spot ticker request options
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EndpointOptions<GetTickerRequest> GetSpotTickerOptions { get; }
|
GetTickerOptions GetSpotTickerOptions { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get ticker for a specific spot symbol
|
/// Get ticker for a specific spot symbol
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -22,7 +22,7 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Spot tickers request options
|
/// Spot tickers request options
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EndpointOptions<GetTickersRequest> GetSpotTickersOptions { get; }
|
GetTickersOptions GetSpotTickersOptions { get; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get tickers for all spot symbols
|
/// Get tickers for all spot symbols
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ticker subscription options
|
/// Ticker subscription options
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EndpointOptions<SubscribeTickerRequest> SubscribeTickerOptions { get; }
|
SubscribeTickerOptions SubscribeTickerOptions { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Subscribe to ticker updates for a symbol
|
/// Subscribe to ticker updates for a symbol
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tickers subscription options
|
/// Tickers subscription options
|
||||||
/// </summary>
|
/// </summary>
|
||||||
EndpointOptions<SubscribeAllTickersRequest> SubscribeAllTickersOptions { get; }
|
SubscribeTickersOptions SubscribeAllTickersOptions { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Subscribe to tickers updates for all symbols
|
/// Subscribe to tickers updates for all symbols
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
using CryptoExchange.Net.Objects;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.SharedApis
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Options for requesting ticker
|
||||||
|
/// </summary>
|
||||||
|
public class GetTickerOptions : EndpointOptions<GetTickerRequest>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Type of ticker calculation
|
||||||
|
/// </summary>
|
||||||
|
public SharedTickerType TickerType { get; set; } = SharedTickerType.Day24H;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
public GetTickerOptions(SharedTickerType? tickerCalcType = null) : base(false)
|
||||||
|
{
|
||||||
|
TickerType = tickerCalcType ?? SharedTickerType.Day24H;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override string ToString(string exchange)
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder(base.ToString(exchange));
|
||||||
|
sb.AppendLine($"Ticker time calc type: {TickerType}");
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
using CryptoExchange.Net.Objects;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.SharedApis
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Options for requesting tickers
|
||||||
|
/// </summary>
|
||||||
|
public class GetTickersOptions : EndpointOptions<GetTickersRequest>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Type of ticker calculation
|
||||||
|
/// </summary>
|
||||||
|
public SharedTickerType TickerType { get; set; } = SharedTickerType.Day24H;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
public GetTickersOptions(SharedTickerType? tickerCalcType = null) : base(false)
|
||||||
|
{
|
||||||
|
TickerType = tickerCalcType ?? SharedTickerType.Day24H;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
public override string ToString(string exchange)
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder(base.ToString(exchange));
|
||||||
|
sb.AppendLine($"Ticker time calc type: {TickerType}");
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
using CryptoExchange.Net.Objects;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.SharedApis
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Options for subscribing to ticker updates
|
||||||
|
/// </summary>
|
||||||
|
public class SubscribeTickerOptions : EndpointOptions<SubscribeTickerRequest>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Type of ticker calculation
|
||||||
|
/// </summary>
|
||||||
|
public SharedTickerType TickerType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
public SubscribeTickerOptions(SharedTickerType? tickerCalcType = null) : base(false)
|
||||||
|
{
|
||||||
|
TickerType = tickerCalcType ?? SharedTickerType.Day24H;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
using CryptoExchange.Net.Objects;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace CryptoExchange.Net.SharedApis
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Options for subscribing to ticker updates
|
||||||
|
/// </summary>
|
||||||
|
public class SubscribeTickersOptions : EndpointOptions<SubscribeAllTickersRequest>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Type of ticker calculation
|
||||||
|
/// </summary>
|
||||||
|
public SharedTickerType TickerType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ctor
|
||||||
|
/// </summary>
|
||||||
|
public SubscribeTickersOptions(SharedTickerType? tickerCalcType = null) : base(false)
|
||||||
|
{
|
||||||
|
TickerType = tickerCalcType ?? SharedTickerType.Day24H;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Mark/index price kline
|
/// Mark/index price kline
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public record SharedFuturesKline
|
public record SharedFuturesKline : SharedSymbolModel
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Open time
|
/// Open time
|
||||||
@@ -31,7 +31,8 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// ctor
|
/// ctor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public SharedFuturesKline(DateTime openTime, decimal closePrice, decimal highPrice, decimal lowPrice, decimal openPrice)
|
public SharedFuturesKline(SharedSymbol? sharedSymbol, string symbol, DateTime openTime, decimal closePrice, decimal highPrice, decimal lowPrice, decimal openPrice)
|
||||||
|
: base(sharedSymbol, symbol)
|
||||||
{
|
{
|
||||||
OpenTime = openTime;
|
OpenTime = openTime;
|
||||||
ClosePrice = closePrice;
|
ClosePrice = closePrice;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Kline info
|
/// Kline info
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public record SharedKline
|
public record SharedKline : SharedSymbolModel
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Open time
|
/// Open time
|
||||||
@@ -35,7 +35,8 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// ctor
|
/// ctor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public SharedKline(DateTime openTime, decimal closePrice, decimal highPrice, decimal lowPrice, decimal openPrice, decimal volume)
|
public SharedKline(SharedSymbol? sharedSymbol, string symbol, DateTime openTime, decimal closePrice, decimal highPrice, decimal lowPrice, decimal openPrice, decimal volume)
|
||||||
|
: base(sharedSymbol, symbol)
|
||||||
{
|
{
|
||||||
OpenTime = openTime;
|
OpenTime = openTime;
|
||||||
ClosePrice = closePrice;
|
ClosePrice = closePrice;
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Public trade info
|
/// Public trade info
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public record SharedTrade
|
public record SharedTrade : SharedSymbolModel
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Quantity of the trade
|
/// Quantity of the trade
|
||||||
@@ -27,7 +27,7 @@ namespace CryptoExchange.Net.SharedApis
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// ctor
|
/// ctor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public SharedTrade(decimal quantity, decimal price, DateTime timestamp)
|
public SharedTrade(SharedSymbol? sharedSymbol, string symbol, decimal quantity, decimal price, DateTime timestamp) : base(sharedSymbol, symbol)
|
||||||
{
|
{
|
||||||
Quantity = quantity;
|
Quantity = quantity;
|
||||||
Price = price;
|
Price = price;
|
||||||
|
|||||||
@@ -5,32 +5,32 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Binance.Net" Version="11.9.0" />
|
<PackageReference Include="Binance.Net" Version="11.10.0" />
|
||||||
<PackageReference Include="Bitfinex.Net" Version="9.9.0" />
|
<PackageReference Include="Bitfinex.Net" Version="9.10.0" />
|
||||||
<PackageReference Include="BitMart.Net" Version="2.10.0" />
|
<PackageReference Include="BitMart.Net" Version="2.11.0" />
|
||||||
<PackageReference Include="BloFin.Net" Version="1.2.0" />
|
<PackageReference Include="BloFin.Net" Version="1.3.0" />
|
||||||
<PackageReference Include="Bybit.Net" Version="5.10.1" />
|
<PackageReference Include="Bybit.Net" Version="5.12.0" />
|
||||||
<PackageReference Include="CoinEx.Net" Version="9.9.0" />
|
<PackageReference Include="CoinEx.Net" Version="9.10.0" />
|
||||||
<PackageReference Include="CoinW.Net" Version="1.6.0" />
|
<PackageReference Include="CoinW.Net" Version="1.7.0" />
|
||||||
<PackageReference Include="CryptoCom.Net" Version="2.10.0" />
|
<PackageReference Include="CryptoCom.Net" Version="2.11.0" />
|
||||||
<PackageReference Include="DeepCoin.Net" Version="2.9.0" />
|
<PackageReference Include="DeepCoin.Net" Version="2.10.0" />
|
||||||
<PackageReference Include="GateIo.Net" Version="2.11.0" />
|
<PackageReference Include="GateIo.Net" Version="2.12.0" />
|
||||||
<PackageReference Include="HyperLiquid.Net" Version="2.14.0" />
|
<PackageReference Include="HyperLiquid.Net" Version="2.16.0" />
|
||||||
<PackageReference Include="JK.BingX.Net" Version="2.9.0" />
|
<PackageReference Include="JK.BingX.Net" Version="2.10.0" />
|
||||||
<PackageReference Include="JK.Bitget.Net" Version="2.9.0" />
|
<PackageReference Include="JK.Bitget.Net" Version="2.11.0" />
|
||||||
<PackageReference Include="JK.Mexc.Net" Version="3.10.0" />
|
<PackageReference Include="JK.Mexc.Net" Version="3.11.0" />
|
||||||
<PackageReference Include="JK.OKX.Net" Version="3.9.0" />
|
<PackageReference Include="JK.OKX.Net" Version="3.10.0" />
|
||||||
<PackageReference Include="Jkorf.Aster.Net" Version="1.1.0" />
|
<PackageReference Include="Jkorf.Aster.Net" Version="1.2.0" />
|
||||||
<PackageReference Include="JKorf.BitMEX.Net" Version="2.9.0" />
|
<PackageReference Include="JKorf.BitMEX.Net" Version="2.10.0" />
|
||||||
<PackageReference Include="JKorf.Coinbase.Net" Version="2.9.0" />
|
<PackageReference Include="JKorf.Coinbase.Net" Version="2.10.0" />
|
||||||
<PackageReference Include="JKorf.HTX.Net" Version="7.9.0" />
|
<PackageReference Include="JKorf.HTX.Net" Version="7.10.0" />
|
||||||
<PackageReference Include="JKorf.Upbit.Net" Version="1.0.0" />
|
<PackageReference Include="JKorf.Upbit.Net" Version="1.1.0" />
|
||||||
<PackageReference Include="KrakenExchange.Net" Version="6.9.0" />
|
<PackageReference Include="KrakenExchange.Net" Version="6.10.0" />
|
||||||
<PackageReference Include="Kucoin.Net" Version="7.9.0" />
|
<PackageReference Include="Kucoin.Net" Version="7.10.0" />
|
||||||
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
|
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
|
||||||
<PackageReference Include="Toobit.Net" Version="1.8.0" />
|
<PackageReference Include="Toobit.Net" Version="1.9.0" />
|
||||||
<PackageReference Include="WhiteBit.Net" Version="2.10.0" />
|
<PackageReference Include="WhiteBit.Net" Version="2.11.0" />
|
||||||
<PackageReference Include="XT.Net" Version="2.9.0" />
|
<PackageReference Include="XT.Net" Version="2.10.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -139,7 +139,7 @@
|
|||||||
_prices.Add("Toobit", toobitTask.Result.Data.Single().LastPrice ?? 0);
|
_prices.Add("Toobit", toobitTask.Result.Data.Single().LastPrice ?? 0);
|
||||||
|
|
||||||
if (upbitTask.Result.Success)
|
if (upbitTask.Result.Success)
|
||||||
_prices.Add("Upbit", upbitTask.Result.Data.LastPrice);
|
_prices.Add("Upbit", upbitTask.Result.Data.LastPrice ?? 0);
|
||||||
|
|
||||||
if (whitebitTask.Result.Success){
|
if (whitebitTask.Result.Success){
|
||||||
// WhiteBit API doesn't offer an endpoint to filter for a specific ticker, so we have to filter client side
|
// WhiteBit API doesn't offer an endpoint to filter for a specific ticker, so we have to filter client side
|
||||||
|
|||||||
@@ -77,37 +77,36 @@
|
|||||||
|
|
||||||
protected override async Task OnInitializedAsync()
|
protected override async Task OnInitializedAsync()
|
||||||
{
|
{
|
||||||
var usdcSpotSymbol = new SharedSymbol(TradingMode.Spot, "BTC", "USDC");
|
var symbol = new SharedSymbol(TradingMode.Spot, "BTC", SharedSymbol.UsdOrStable);
|
||||||
var usdtSpotSymbol = new SharedSymbol(TradingMode.Spot, "BTC", "USDT");
|
var futuresSymbol = new SharedSymbol(TradingMode.PerpetualLinear, "BTC", SharedSymbol.UsdOrStable);
|
||||||
var usdtPerpLinSymbol = new SharedSymbol(TradingMode.PerpetualLinear, "BTC", "USDT");
|
|
||||||
|
|
||||||
_trackers = new List<ITradeTracker>
|
_trackers = new List<ITradeTracker>
|
||||||
{
|
{
|
||||||
{ asterFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ asterFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ binanceFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ binanceFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ bingXFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ bingXFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ bitfinexFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ bitfinexFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ bitgetFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ bitgetFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ bitmartFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ bitmartFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ bitmexFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ bitmexFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ bloFinFactory.CreateTradeTracker(usdtPerpLinSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ bloFinFactory.CreateTradeTracker(futuresSymbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ bybitFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ bybitFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ coinbaseFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ coinbaseFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ coinExFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ coinExFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ coinWFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ coinWFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ cryptocomFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ cryptocomFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ deepCoinFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ deepCoinFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ gateioFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ gateioFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ htxFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ htxFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ hyperLiquidFactory.CreateTradeTracker(usdcSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ hyperLiquidFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ krakenFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ krakenFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ kucoinFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ kucoinFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ mexcFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ mexcFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ okxFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ okxFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ toobitFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ toobitFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ upbitFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ upbitFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ whitebitFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ whitebitFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
{ xtFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
{ xtFactory.CreateTradeTracker(symbol, period: TimeSpan.FromMinutes(5)) },
|
||||||
};
|
};
|
||||||
|
|
||||||
await Task.WhenAll(_trackers.Select(b => b.StartAsync(false)));
|
await Task.WhenAll(_trackers.Select(b => b.StartAsync(false)));
|
||||||
|
|||||||
@@ -6,20 +6,20 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Binance.Net" Version="11.9.0" />
|
<PackageReference Include="Binance.Net" Version="11.10.0" />
|
||||||
<PackageReference Include="Bitfinex.Net" Version="9.9.0" />
|
<PackageReference Include="Bitfinex.Net" Version="9.10.0" />
|
||||||
<PackageReference Include="BitMart.Net" Version="2.10.0" />
|
<PackageReference Include="BitMart.Net" Version="2.11.0" />
|
||||||
<PackageReference Include="Bybit.Net" Version="5.10.1" />
|
<PackageReference Include="Bybit.Net" Version="5.12.0" />
|
||||||
<PackageReference Include="CoinEx.Net" Version="9.9.0" />
|
<PackageReference Include="CoinEx.Net" Version="9.10.0" />
|
||||||
<PackageReference Include="CryptoCom.Net" Version="2.10.0" />
|
<PackageReference Include="CryptoCom.Net" Version="2.11.0" />
|
||||||
<PackageReference Include="GateIo.Net" Version="2.11.0" />
|
<PackageReference Include="GateIo.Net" Version="2.12.0" />
|
||||||
<PackageReference Include="JK.Bitget.Net" Version="2.9.0" />
|
<PackageReference Include="JK.Bitget.Net" Version="2.11.0" />
|
||||||
<PackageReference Include="JK.Mexc.Net" Version="3.10.0" />
|
<PackageReference Include="JK.Mexc.Net" Version="3.11.0" />
|
||||||
<PackageReference Include="JK.OKX.Net" Version="3.9.0" />
|
<PackageReference Include="JK.OKX.Net" Version="3.10.0" />
|
||||||
<PackageReference Include="JKorf.Coinbase.Net" Version="2.9.0" />
|
<PackageReference Include="JKorf.Coinbase.Net" Version="2.10.0" />
|
||||||
<PackageReference Include="JKorf.HTX.Net" Version="7.9.0" />
|
<PackageReference Include="JKorf.HTX.Net" Version="7.10.0" />
|
||||||
<PackageReference Include="KrakenExchange.Net" Version="6.9.0" />
|
<PackageReference Include="KrakenExchange.Net" Version="6.10.0" />
|
||||||
<PackageReference Include="Kucoin.Net" Version="7.9.0" />
|
<PackageReference Include="Kucoin.Net" Version="7.10.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -8,9 +8,9 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Binance.Net" Version="11.9.0" />
|
<PackageReference Include="Binance.Net" Version="11.10.0" />
|
||||||
<PackageReference Include="BitMart.Net" Version="2.10.0" />
|
<PackageReference Include="BitMart.Net" Version="2.11.0" />
|
||||||
<PackageReference Include="JK.OKX.Net" Version="3.9.0" />
|
<PackageReference Include="JK.OKX.Net" Version="3.10.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -66,6 +66,12 @@ Make a one time donation in a crypto currency of your choice. If you prefer to d
|
|||||||
Alternatively, sponsor me on Github using [Github Sponsors](https://github.com/sponsors/JKorf).
|
Alternatively, sponsor me on Github using [Github Sponsors](https://github.com/sponsors/JKorf).
|
||||||
|
|
||||||
## Release notes
|
## Release notes
|
||||||
|
* Version 9.13.0 - 10 Nov 2025
|
||||||
|
* Added SharedTickerType for defining time used for ticker calculations by the API
|
||||||
|
* Added SharedSymbolModel base class to SharedFuturesKline, SharedKline, SharedTrade models
|
||||||
|
* Added IExchangeService interface
|
||||||
|
* Fixed incorrect exchange name in static logger when using multiple libraries
|
||||||
|
|
||||||
* Version 9.12.0 - 03 Nov 2025
|
* Version 9.12.0 - 03 Nov 2025
|
||||||
* Added constant for selecting a supported USD asset for use in a Shared API/SharedSymbol
|
* Added constant for selecting a supported USD asset for use in a Shared API/SharedSymbol
|
||||||
* Added AliasType to specify only one way conversion for AssetAliases
|
* Added AliasType to specify only one way conversion for AssetAliases
|
||||||
|
|||||||
Reference in New Issue
Block a user