Skip to content

Commit f287962

Browse files
authored
Feature/orderbook (#22)
Updated library versions Added Create method without exchange parameters to create SymbolOrderBook instance on all supported exchanges Fixed GateIo ExchangeOrderBookFactory Perpetual Futures creation when using SharedSymbol.UsdOrStable
1 parent 7eded07 commit f287962

File tree

4 files changed

+69
-29
lines changed

4 files changed

+69
-29
lines changed

CryptoClients.Net/CryptoClients.Net.csproj

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0;net9.0;net10.0</TargetFrameworks>
44
<Nullable>enable</Nullable>
@@ -47,36 +47,36 @@
4747
</PackageReference>
4848
</ItemGroup>
4949
<ItemGroup>
50-
<PackageReference Include="Binance.Net" Version="12.0.0" />
51-
<PackageReference Include="Bitfinex.Net" Version="10.0.0" />
52-
<PackageReference Include="BitMart.Net" Version="3.0.1" />
53-
<PackageReference Include="BloFin.Net" Version="2.0.0" />
54-
<PackageReference Include="Bybit.Net" Version="6.0.0" />
55-
<PackageReference Include="CoinEx.Net" Version="10.0.1" />
56-
<PackageReference Include="CoinGecko.Net" Version="5.0.0" />
57-
<PackageReference Include="CoinW.Net" Version="2.0.1" />
50+
<PackageReference Include="Binance.Net" Version="12.2.0" />
51+
<PackageReference Include="Bitfinex.Net" Version="10.3.0" />
52+
<PackageReference Include="BitMart.Net" Version="3.2.0" />
53+
<PackageReference Include="BloFin.Net" Version="2.2.0" />
54+
<PackageReference Include="Bybit.Net" Version="6.2.0" />
55+
<PackageReference Include="CoinEx.Net" Version="10.2.0" />
56+
<PackageReference Include="CoinGecko.Net" Version="5.2.0" />
57+
<PackageReference Include="CoinW.Net" Version="2.2.0" />
5858
<PackageReference Include="ConfigureAwaitChecker.Analyzer" Version="5.0.0.1">
5959
<PrivateAssets>all</PrivateAssets>
6060
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
6161
</PackageReference>
62-
<PackageReference Include="CryptoCom.Net" Version="3.0.3" />
63-
<PackageReference Include="DeepCoin.Net" Version="3.0.2" />
64-
<PackageReference Include="GateIo.Net" Version="3.0.0" />
65-
<PackageReference Include="HyperLiquid.Net" Version="3.0.0" />
66-
<PackageReference Include="JK.BingX.Net" Version="3.0.1" />
67-
<PackageReference Include="JK.Bitget.Net" Version="3.0.0" />
68-
<PackageReference Include="JK.Mexc.Net" Version="4.0.2" />
69-
<PackageReference Include="JK.OKX.Net" Version="4.0.1" />
70-
<PackageReference Include="Jkorf.Aster.Net" Version="2.0.0" />
71-
<PackageReference Include="JKorf.BitMEX.Net" Version="3.0.1" />
72-
<PackageReference Include="JKorf.Coinbase.Net" Version="3.0.1" />
73-
<PackageReference Include="JKorf.HTX.Net" Version="8.0.1" />
74-
<PackageReference Include="JKorf.Upbit.Net" Version="2.0.0" />
75-
<PackageReference Include="KrakenExchange.Net" Version="7.0.2" />
76-
<PackageReference Include="Kucoin.Net" Version="8.0.2" />
77-
<PackageReference Include="Toobit.Net" Version="2.0.0" />
78-
<PackageReference Include="WhiteBit.Net" Version="3.0.1" />
79-
<PackageReference Include="XT.Net" Version="3.0.1" />
62+
<PackageReference Include="CryptoCom.Net" Version="3.2.0" />
63+
<PackageReference Include="DeepCoin.Net" Version="3.2.0" />
64+
<PackageReference Include="GateIo.Net" Version="3.2.0" />
65+
<PackageReference Include="HyperLiquid.Net" Version="3.4.0" />
66+
<PackageReference Include="JK.BingX.Net" Version="3.2.0" />
67+
<PackageReference Include="JK.Bitget.Net" Version="3.2.0" />
68+
<PackageReference Include="JK.Mexc.Net" Version="4.2.0" />
69+
<PackageReference Include="JK.OKX.Net" Version="4.2.0" />
70+
<PackageReference Include="Jkorf.Aster.Net" Version="2.2.0" />
71+
<PackageReference Include="JKorf.BitMEX.Net" Version="3.2.0" />
72+
<PackageReference Include="JKorf.Coinbase.Net" Version="3.2.0" />
73+
<PackageReference Include="JKorf.HTX.Net" Version="8.2.0" />
74+
<PackageReference Include="JKorf.Upbit.Net" Version="2.2.0" />
75+
<PackageReference Include="KrakenExchange.Net" Version="7.2.0" />
76+
<PackageReference Include="Kucoin.Net" Version="8.2.0" />
77+
<PackageReference Include="Toobit.Net" Version="2.2.0" />
78+
<PackageReference Include="WhiteBit.Net" Version="3.2.0" />
79+
<PackageReference Include="XT.Net" Version="3.2.0" />
8080
</ItemGroup>
8181
<PropertyGroup>
8282
<DocumentationFile>CryptoClients.Net.xml</DocumentationFile>

CryptoClients.Net/CryptoClients.Net.xml

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CryptoClients.Net/ExchangeOrderBookFactory.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using Coinbase.Net.Interfaces;
1212
using CoinEx.Net.Interfaces;
1313
using CoinW.Net.Interfaces;
14+
using CryptoClients.Net.Enums;
1415
using CryptoClients.Net.Interfaces;
1516
using CryptoCom.Net.Interfaces;
1617
using CryptoExchange.Net.Interfaces;
@@ -23,6 +24,7 @@
2324
using Kucoin.Net.Interfaces;
2425
using Mexc.Net.Interfaces;
2526
using OKX.Net.Interfaces;
27+
using System.Collections.Generic;
2628
using System.Linq;
2729
using Toobit.Net.Interfaces;
2830
using Upbit.Net.Interfaces;
@@ -142,6 +144,20 @@ public ExchangeOrderBookFactory(
142144
XT = xt;
143145
}
144146

147+
/// <inheritdoc />
148+
public ISymbolOrderBook[] Create(SharedSymbol symbol, int? minimalDepth = null, IEnumerable<string>? exchanges = null, ExchangeParameters? exchangeParameters = null)
149+
{
150+
var result = new List<ISymbolOrderBook>();
151+
foreach(var exchange in Exchange.All)
152+
{
153+
var book = Create(exchange, symbol, minimalDepth, exchangeParameters);
154+
if (book != null)
155+
result.Add(book);
156+
}
157+
158+
return result.ToArray();
159+
}
160+
145161
/// <inheritdoc />
146162
public ISymbolOrderBook? Create(string exchange, SharedSymbol symbol, int? minimalDepth = null, ExchangeParameters? exchangeParameters = null)
147163
{
@@ -181,7 +197,7 @@ public ExchangeOrderBookFactory(
181197
var bloFinLimit = GetBookDepth(minimalDepth, false, 5, 400);
182198
return BloFin.Create(symbol, opts => { opts.Limit = bloFinLimit; });
183199
case "Bybit":
184-
var bybitLimit = GetBookDepth(minimalDepth, false, 1, 50, 200);
200+
var bybitLimit = GetBookDepth(minimalDepth, false, 1, 50, 200, 1000);
185201
return Bybit.Create(symbol, opts => { opts.Limit = bybitLimit; });
186202
case "Coinbase":
187203
return Coinbase.Create(symbol);
@@ -197,7 +213,7 @@ public ExchangeOrderBookFactory(
197213
return DeepCoin.Create(symbol);
198214
case "GateIo":
199215
var gateIoLimit = GetBookDepth(minimalDepth, true, 20, 50, 100);
200-
return GateIo.Create(symbol, symbol.QuoteAsset, opts =>
216+
return GateIo.Create(symbol, symbol.QuoteAsset == SharedSymbol.UsdOrStable ? null : symbol.QuoteAsset, opts =>
201217
{
202218
opts.Limit = gateIoLimit;
203219
opts.UpdateInterval = 100;

CryptoClients.Net/Interfaces/IExchangeOrderBookFactory.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
using Kucoin.Net.Interfaces;
2222
using Mexc.Net.Interfaces;
2323
using OKX.Net.Interfaces;
24+
using System.Collections.Generic;
2425
using Toobit.Net.Interfaces;
2526
using Upbit.Net.Interfaces;
2627
using WhiteBit.Net.Interfaces;
@@ -143,5 +144,15 @@ public interface IExchangeOrderBookFactory
143144
/// <param name="exchangeParameters">Exchange specific parameters</param>
144145
/// <returns>ISymbolOrderBook implementation</returns>
145146
ISymbolOrderBook? Create(string exchange, SharedSymbol symbol, int? minimalDepth = null, ExchangeParameters? exchangeParameters = null);
147+
148+
/// <summary>
149+
/// Create a ISymbolOrderBook instances for the provided symbol on the all or specific exchanges
150+
/// </summary>
151+
/// <param name="symbol">Symbol</param>
152+
/// <param name="minimalDepth">Minimal depth of the order book. Order book might be larger depending on what the API supports. Might be smaller if the requested depth is above what the API can support.</param>
153+
/// <param name="exchangeParameters">Exchange specific parameters</param>
154+
/// <param name="exchanges">Exchanges to create the books for, if not specified create for all</param>
155+
/// <returns>ISymbolOrderBook implementations</returns>
156+
ISymbolOrderBook[] Create(SharedSymbol symbol, int? minimalDepth = null, IEnumerable<string>? exchanges = null, ExchangeParameters ? exchangeParameters = null);
146157
}
147158
}

0 commit comments

Comments
 (0)