mirror of
https://github.com/JKorf/CryptoExchange.Net
synced 2025-10-27 16:37:24 +00:00
Compare commits
4 Commits
CryptoExch
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd60067684 | ||
|
|
04e4ddf525 | ||
|
|
99bf6d7c75 | ||
|
|
99a203933c |
@ -6,10 +6,10 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.14.1"></PackageReference>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.0.0"></PackageReference>
|
||||
<PackageReference Include="Moq" Version="4.20.72" />
|
||||
<PackageReference Include="NUnit" Version="4.3.2"></PackageReference>
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="5.0.0"></PackageReference>
|
||||
<PackageReference Include="NUnit" Version="4.4.0"></PackageReference>
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="5.2.0"></PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0;net9.0</TargetFrameworks>
|
||||
</PropertyGroup>
|
||||
@ -51,11 +51,11 @@
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.6" />
|
||||
<PackageReference Include="System.Text.Json" Version="9.0.6" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging" Version="9.0.10" />
|
||||
<PackageReference Include="System.Text.Json" Version="9.0.10" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Label="Transitive Client Packages">
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.6" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="9.0.6" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.10" />
|
||||
<PackageReference Include="Microsoft.Extensions.Http" Version="9.0.10" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@ -325,9 +325,12 @@ namespace CryptoExchange.Net.Trackers.Trades
|
||||
if (Period != null)
|
||||
items = items.Where(e => e.Timestamp >= DateTime.UtcNow.Add(-Period.Value));
|
||||
|
||||
_snapshotId = data.Max(d => d.Timestamp.Ticks);
|
||||
foreach (var item in items.OrderBy(d => d.Timestamp))
|
||||
_data.Add(item);
|
||||
if (items.Any())
|
||||
{
|
||||
_snapshotId = data.Max(d => d.Timestamp.Ticks);
|
||||
foreach (var item in items.OrderBy(d => d.Timestamp))
|
||||
_data.Add(item);
|
||||
}
|
||||
|
||||
_snapshotSet = true;
|
||||
_changed = true;
|
||||
|
||||
@ -5,31 +5,32 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Binance.Net" Version="11.8.0" />
|
||||
<PackageReference Include="Bitfinex.Net" Version="9.8.0" />
|
||||
<PackageReference Include="BitMart.Net" Version="2.9.0" />
|
||||
<PackageReference Include="BloFin.Net" Version="1.1.0" />
|
||||
<PackageReference Include="Bybit.Net" Version="5.9.0" />
|
||||
<PackageReference Include="CoinEx.Net" Version="9.8.0" />
|
||||
<PackageReference Include="CoinW.Net" Version="1.5.0" />
|
||||
<PackageReference Include="CryptoCom.Net" Version="2.9.0" />
|
||||
<PackageReference Include="DeepCoin.Net" Version="2.8.0" />
|
||||
<PackageReference Include="GateIo.Net" Version="2.9.1" />
|
||||
<PackageReference Include="HyperLiquid.Net" Version="2.13.0" />
|
||||
<PackageReference Include="JK.BingX.Net" Version="2.8.0" />
|
||||
<PackageReference Include="JK.Bitget.Net" Version="2.8.0" />
|
||||
<PackageReference Include="JK.Mexc.Net" Version="3.9.0" />
|
||||
<PackageReference Include="JK.OKX.Net" Version="3.8.0" />
|
||||
<PackageReference Include="Jkorf.Aster.Net" Version="1.0.0" />
|
||||
<PackageReference Include="JKorf.BitMEX.Net" Version="2.8.0" />
|
||||
<PackageReference Include="JKorf.Coinbase.Net" Version="2.8.0" />
|
||||
<PackageReference Include="JKorf.HTX.Net" Version="7.8.0" />
|
||||
<PackageReference Include="KrakenExchange.Net" Version="6.8.0" />
|
||||
<PackageReference Include="Kucoin.Net" Version="7.8.0" />
|
||||
<PackageReference Include="Binance.Net" Version="11.9.0" />
|
||||
<PackageReference Include="Bitfinex.Net" Version="9.9.0" />
|
||||
<PackageReference Include="BitMart.Net" Version="2.10.0" />
|
||||
<PackageReference Include="BloFin.Net" Version="1.2.0" />
|
||||
<PackageReference Include="Bybit.Net" Version="5.10.1" />
|
||||
<PackageReference Include="CoinEx.Net" Version="9.9.0" />
|
||||
<PackageReference Include="CoinW.Net" Version="1.6.0" />
|
||||
<PackageReference Include="CryptoCom.Net" Version="2.10.0" />
|
||||
<PackageReference Include="DeepCoin.Net" Version="2.9.0" />
|
||||
<PackageReference Include="GateIo.Net" Version="2.11.0" />
|
||||
<PackageReference Include="HyperLiquid.Net" Version="2.14.0" />
|
||||
<PackageReference Include="JK.BingX.Net" Version="2.9.0" />
|
||||
<PackageReference Include="JK.Bitget.Net" Version="2.9.0" />
|
||||
<PackageReference Include="JK.Mexc.Net" Version="3.10.0" />
|
||||
<PackageReference Include="JK.OKX.Net" Version="3.9.0" />
|
||||
<PackageReference Include="Jkorf.Aster.Net" Version="1.1.0" />
|
||||
<PackageReference Include="JKorf.BitMEX.Net" Version="2.9.0" />
|
||||
<PackageReference Include="JKorf.Coinbase.Net" Version="2.9.0" />
|
||||
<PackageReference Include="JKorf.HTX.Net" Version="7.9.0" />
|
||||
<PackageReference Include="JKorf.Upbit.Net" Version="1.0.0" />
|
||||
<PackageReference Include="KrakenExchange.Net" Version="6.9.0" />
|
||||
<PackageReference Include="Kucoin.Net" Version="7.9.0" />
|
||||
<PackageReference Include="Serilog.AspNetCore" Version="9.0.0" />
|
||||
<PackageReference Include="Toobit.Net" Version="1.7.0" />
|
||||
<PackageReference Include="WhiteBit.Net" Version="2.9.0" />
|
||||
<PackageReference Include="XT.Net" Version="2.8.0" />
|
||||
<PackageReference Include="Toobit.Net" Version="1.8.0" />
|
||||
<PackageReference Include="WhiteBit.Net" Version="2.10.0" />
|
||||
<PackageReference Include="XT.Net" Version="2.9.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
@inject IMexcRestClient mexcClient
|
||||
@inject IOKXRestClient okxClient
|
||||
@inject IToobitRestClient toobitClient
|
||||
@inject IUpbitRestClient upbitClient
|
||||
@inject IWhiteBitRestClient whitebitClient
|
||||
@inject IXTRestClient xtClient
|
||||
|
||||
@ -57,6 +58,7 @@
|
||||
var mexcTask = mexcClient.SpotApi.ExchangeData.GetTickerAsync("BTCUSDT");
|
||||
var okxTask = okxClient.UnifiedApi.ExchangeData.GetTickerAsync("BTC-USDT");
|
||||
var toobitTask = toobitClient.SpotApi.ExchangeData.GetTickersAsync("BTCUSDT");
|
||||
var upbitTask = upbitClient.SpotApi.ExchangeData.GetTickerAsync("USDT-BTC");
|
||||
var whitebitTask = whitebitClient.V4Api.ExchangeData.GetTickersAsync();
|
||||
var xtTask = xtClient.SpotApi.ExchangeData.GetTickersAsync("btc_usdt");
|
||||
|
||||
@ -136,6 +138,9 @@
|
||||
if (toobitTask.Result.Success)
|
||||
_prices.Add("Toobit", toobitTask.Result.Data.Single().LastPrice ?? 0);
|
||||
|
||||
if (upbitTask.Result.Success)
|
||||
_prices.Add("Upbit", upbitTask.Result.Data.LastPrice);
|
||||
|
||||
if (whitebitTask.Result.Success){
|
||||
// WhiteBit API doesn't offer an endpoint to filter for a specific ticker, so we have to filter client side
|
||||
var tickers = whitebitTask.Result.Data;
|
||||
|
||||
@ -21,6 +21,7 @@
|
||||
@inject IMexcSocketClient mexcSocketClient
|
||||
@inject IOKXSocketClient okxSocketClient
|
||||
@inject IToobitSocketClient toobitSocketClient
|
||||
@inject IUpbitSocketClient upbitSocketClient
|
||||
@inject IWhiteBitSocketClient whitebitSocketClient
|
||||
@inject IXTSocketClient xtSocketClient
|
||||
@using System.Collections.Concurrent
|
||||
@ -72,6 +73,7 @@
|
||||
okxSocketClient.UnifiedApi.ExchangeData.SubscribeToTickerUpdatesAsync("ETH-BTC", data => UpdateData("OKX", data.Data.LastPrice ?? 0)),
|
||||
// Toobit doesn't support the ETH/BTC pair
|
||||
//toobitSocketClient.SpotApi.SubscribeToTickerUpdatesAsync("ETHBTC", data => UpdateData("Toobit", data.Data.LastPrice ?? 0)),
|
||||
upbitSocketClient.SpotApi.SubscribeToTickerUpdatesAsync("BTC-ETH", data => UpdateData("Upbit", data.Data.LastPrice)),
|
||||
whitebitSocketClient.V4Api.SubscribeToTickerUpdatesAsync("ETH_BTC", data => UpdateData("WhiteBit", data.Data.Ticker.LastPrice)),
|
||||
};
|
||||
|
||||
|
||||
@ -25,6 +25,7 @@
|
||||
@using Kucoin.Net.Interfaces
|
||||
@using Mexc.Net.Interfaces
|
||||
@using OKX.Net.Interfaces;
|
||||
@using Upbit.Net.Interfaces;
|
||||
@using Toobit.Net.Interfaces;
|
||||
@using WhiteBit.Net.Interfaces
|
||||
@using XT.Net.Interfaces
|
||||
@ -50,6 +51,7 @@
|
||||
@inject IMexcOrderBookFactory mexcFactory
|
||||
@inject IOKXOrderBookFactory okxFactory
|
||||
@inject IToobitOrderBookFactory toobitFactory
|
||||
@inject IUpbitOrderBookFactory upbitFactory
|
||||
@inject IWhiteBitOrderBookFactory whitebitFactory
|
||||
@inject IXTOrderBookFactory xtFactory
|
||||
@implements IDisposable
|
||||
@ -107,6 +109,7 @@
|
||||
{ "Mexc", mexcFactory.CreateSpot("ETHBTC") },
|
||||
{ "OKX", okxFactory.Create("ETH-BTC") },
|
||||
{ "Toobit", toobitFactory.CreateSpot("ETHUSDT") },
|
||||
{ "Upbit", upbitFactory.CreateSpot("BTC-ETH") },
|
||||
{ "WhiteBit", whitebitFactory.CreateV4("ETH_BTC") },
|
||||
{ "XT", xtFactory.CreateSpot("eth_btc") },
|
||||
};
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
@using Kucoin.Net.Interfaces
|
||||
@using Mexc.Net.Interfaces
|
||||
@using OKX.Net.Interfaces;
|
||||
@using Upbit.Net.Interfaces;
|
||||
@using Toobit.Net.Interfaces;
|
||||
@using WhiteBit.Net.Interfaces
|
||||
@using XT.Net.Interfaces
|
||||
@ -51,11 +52,12 @@
|
||||
@inject IMexcTrackerFactory mexcFactory
|
||||
@inject IOKXTrackerFactory okxFactory
|
||||
@inject IToobitTrackerFactory toobitFactory
|
||||
@inject IUpbitTrackerFactory upbitFactory
|
||||
@inject IWhiteBitTrackerFactory whitebitFactory
|
||||
@inject IXTTrackerFactory xtFactory
|
||||
@implements IDisposable
|
||||
|
||||
<h3>ETH-BTC trade Trackers, live updates:</h3>
|
||||
<h3>Trade Trackers, live updates:</h3>
|
||||
<div style="display:flex; flex-wrap: wrap;">
|
||||
@foreach (var tracker in _trackers.OrderBy(p => p.Exchange))
|
||||
{
|
||||
@ -103,11 +105,12 @@
|
||||
{ mexcFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
||||
{ okxFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
||||
{ toobitFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
||||
{ upbitFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
||||
{ whitebitFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
||||
{ xtFactory.CreateTradeTracker(usdtSpotSymbol, period: TimeSpan.FromMinutes(5)) },
|
||||
};
|
||||
|
||||
await Task.WhenAll(_trackers.Select(b => b.StartAsync()));
|
||||
await Task.WhenAll(_trackers.Select(b => b.StartAsync(false)));
|
||||
|
||||
// Use a manual update timer so the page isn't refreshed too often
|
||||
_timer = new Timer(500);
|
||||
|
||||
@ -54,6 +54,7 @@ namespace BlazorClient
|
||||
services.AddMexc();
|
||||
services.AddOKX();
|
||||
services.AddToobit();
|
||||
services.AddUpbit();
|
||||
services.AddWhiteBit();
|
||||
services.AddXT();
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@
|
||||
@using Kucoin.Net.Interfaces.Clients;
|
||||
@using Mexc.Net.Interfaces.Clients;
|
||||
@using OKX.Net.Interfaces.Clients;
|
||||
@using Upbit.Net.Interfaces.Clients;
|
||||
@using Toobit.Net.Interfaces.Clients;
|
||||
@using WhiteBit.Net.Interfaces.Clients
|
||||
@using XT.Net.Interfaces.Clients
|
||||
|
||||
@ -6,20 +6,20 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Binance.Net" Version="11.1.0" />
|
||||
<PackageReference Include="Bitfinex.Net" Version="9.1.0" />
|
||||
<PackageReference Include="BitMart.Net" Version="2.1.0" />
|
||||
<PackageReference Include="Bybit.Net" Version="5.1.0" />
|
||||
<PackageReference Include="CoinEx.Net" Version="9.1.0" />
|
||||
<PackageReference Include="CryptoCom.Net" Version="2.1.0" />
|
||||
<PackageReference Include="GateIo.Net" Version="2.1.0" />
|
||||
<PackageReference Include="JK.Bitget.Net" Version="2.1.0" />
|
||||
<PackageReference Include="JK.Mexc.Net" Version="3.1.0" />
|
||||
<PackageReference Include="JK.OKX.Net" Version="3.1.0" />
|
||||
<PackageReference Include="JKorf.Coinbase.Net" Version="2.1.0" />
|
||||
<PackageReference Include="JKorf.HTX.Net" Version="7.1.0" />
|
||||
<PackageReference Include="KrakenExchange.Net" Version="6.1.0" />
|
||||
<PackageReference Include="Kucoin.Net" Version="7.1.0" />
|
||||
<PackageReference Include="Binance.Net" Version="11.9.0" />
|
||||
<PackageReference Include="Bitfinex.Net" Version="9.9.0" />
|
||||
<PackageReference Include="BitMart.Net" Version="2.10.0" />
|
||||
<PackageReference Include="Bybit.Net" Version="5.10.1" />
|
||||
<PackageReference Include="CoinEx.Net" Version="9.9.0" />
|
||||
<PackageReference Include="CryptoCom.Net" Version="2.10.0" />
|
||||
<PackageReference Include="GateIo.Net" Version="2.11.0" />
|
||||
<PackageReference Include="JK.Bitget.Net" Version="2.9.0" />
|
||||
<PackageReference Include="JK.Mexc.Net" Version="3.10.0" />
|
||||
<PackageReference Include="JK.OKX.Net" Version="3.9.0" />
|
||||
<PackageReference Include="JKorf.Coinbase.Net" Version="2.9.0" />
|
||||
<PackageReference Include="JKorf.HTX.Net" Version="7.9.0" />
|
||||
<PackageReference Include="KrakenExchange.Net" Version="6.9.0" />
|
||||
<PackageReference Include="Kucoin.Net" Version="7.9.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -8,9 +8,9 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Binance.Net" Version="11.1.0" />
|
||||
<PackageReference Include="BitMart.Net" Version="2.1.0" />
|
||||
<PackageReference Include="JK.OKX.Net" Version="3.1.0" />
|
||||
<PackageReference Include="Binance.Net" Version="11.9.0" />
|
||||
<PackageReference Include="BitMart.Net" Version="2.10.0" />
|
||||
<PackageReference Include="JK.OKX.Net" Version="3.9.0" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -35,6 +35,7 @@ Full list of all libraries part of the CryptoExchange.Net ecosystem. Consider us
|
||||
||Mexc|CEX|[JKorf/Mexc.Net](https://github.com/JKorf/Mexc.Net)|[](https://www.nuget.org/packages/JK.Mexc.Net)|-|-|
|
||||
||OKX|CEX|[JKorf/OKX.Net](https://github.com/JKorf/OKX.Net)|[](https://www.nuget.org/packages/JK.OKX.Net)|[Link](https://www.okx.com/join/14592495)|20%|
|
||||
||Toobit|CEX|[JKorf/Toobit.Net](https://github.com/JKorf/Toobit.Net)|[](https://www.nuget.org/packages/Toobit.Net)|[Link](https://www.toobit.com/en-US/register?invite_code=zsV19h)|-|
|
||||
||Upbit|CEX|[JKorf/Upbit.Net](https://github.com/JKorf/Upbit.Net)|[](https://www.nuget.org/packages/JKorf.Upbit.Net)|-|-|
|
||||
||WhiteBit|CEX|[JKorf/WhiteBit.Net](https://github.com/JKorf/WhiteBit.Net)|[](https://www.nuget.org/packages/WhiteBit.Net)|[Link](https://whitebit.com/referral/a8e59b59-186c-4662-824c-3095248e0edf)|-|
|
||||
||XT|CEX|[JKorf/XT.Net](https://github.com/JKorf/XT.Net)|[](https://www.nuget.org/packages/XT.Net)|[Link](https://www.xt.com/ru/accounts/register?ref=CZG39C)|25%|
|
||||
|
||||
@ -66,9 +67,11 @@ Alternatively, sponsor me on Github using [Github Sponsors](https://github.com/s
|
||||
|
||||
## Release notes
|
||||
* Version 9.10.0 - 15 Oct 2025
|
||||
* Added ITransferRestClient Shared interface
|
||||
* Added ITransferRestClient Shared interface
|
||||
* Added ClientOrderId property to SharedUserTrade model
|
||||
* Updated IBalanceRestClient, GetBalancesRequest now mainly works with SharedAccountType type, allowing more options
|
||||
* Updated IBalanceRestClient, GetBalanceOptions now specifies supported account types
|
||||
* Updated DateTimeConverter to work primarily with decimal instead of double to prevent some floating point issues
|
||||
|
||||
* Version 9.9.0 - 06 Oct 2025
|
||||
* Updated socket Subscription status handling
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user