Skip to content

Commit

Permalink
Added parameter on futures stream trades stream for ignoring non trad…
Browse files Browse the repository at this point in the history
…e updates
  • Loading branch information
JKorf committed Mar 6, 2024
1 parent 73b6aa2 commit 7978da7
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 10 deletions.
15 changes: 11 additions & 4 deletions Binance.Net/Binance.Net.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2156,10 +2156,10 @@
<member name="M:Binance.Net.Clients.UsdFuturesApi.BinanceSocketClientUsdFuturesApi.SubscribeToAggregatedTradeUpdatesAsync(System.Collections.Generic.IEnumerable{System.String},System.Action{CryptoExchange.Net.Objects.Sockets.DataEvent{Binance.Net.Objects.Models.Spot.Socket.BinanceStreamAggregatedTrade}},System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:Binance.Net.Clients.UsdFuturesApi.BinanceSocketClientUsdFuturesApi.SubscribeToTradeUpdatesAsync(System.String,System.Action{CryptoExchange.Net.Objects.Sockets.DataEvent{Binance.Net.Objects.Models.Spot.Socket.BinanceStreamTrade}},System.Threading.CancellationToken)">
<member name="M:Binance.Net.Clients.UsdFuturesApi.BinanceSocketClientUsdFuturesApi.SubscribeToTradeUpdatesAsync(System.String,System.Action{CryptoExchange.Net.Objects.Sockets.DataEvent{Binance.Net.Objects.Models.Spot.Socket.BinanceStreamTrade}},System.Boolean,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:Binance.Net.Clients.UsdFuturesApi.BinanceSocketClientUsdFuturesApi.SubscribeToTradeUpdatesAsync(System.Collections.Generic.IEnumerable{System.String},System.Action{CryptoExchange.Net.Objects.Sockets.DataEvent{Binance.Net.Objects.Models.Spot.Socket.BinanceStreamTrade}},System.Threading.CancellationToken)">
<member name="M:Binance.Net.Clients.UsdFuturesApi.BinanceSocketClientUsdFuturesApi.SubscribeToTradeUpdatesAsync(System.Collections.Generic.IEnumerable{System.String},System.Action{CryptoExchange.Net.Objects.Sockets.DataEvent{Binance.Net.Objects.Models.Spot.Socket.BinanceStreamTrade}},System.Boolean,System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:Binance.Net.Clients.UsdFuturesApi.BinanceSocketClientUsdFuturesApi.SubscribeToBookTickerUpdatesAsync(System.String,System.Action{CryptoExchange.Net.Objects.Sockets.DataEvent{Binance.Net.Objects.Models.Futures.Socket.BinanceFuturesStreamBookPrice}},System.Threading.CancellationToken)">
Expand Down Expand Up @@ -11482,21 +11482,23 @@
<param name="ct">Cancellation token for closing this subscription</param>
<returns>A stream subscription. This stream subscription can be used to be notified when the socket is disconnected/reconnected</returns>
</member>
<member name="M:Binance.Net.Interfaces.Clients.UsdFuturesApi.IBinanceSocketClientUsdFuturesApi.SubscribeToTradeUpdatesAsync(System.String,System.Action{CryptoExchange.Net.Objects.Sockets.DataEvent{Binance.Net.Objects.Models.Spot.Socket.BinanceStreamTrade}},System.Threading.CancellationToken)">
<member name="M:Binance.Net.Interfaces.Clients.UsdFuturesApi.IBinanceSocketClientUsdFuturesApi.SubscribeToTradeUpdatesAsync(System.String,System.Action{CryptoExchange.Net.Objects.Sockets.DataEvent{Binance.Net.Objects.Models.Spot.Socket.BinanceStreamTrade}},System.Boolean,System.Threading.CancellationToken)">
<summary>
Subscribe to individual trade update. NOTE: This endpoint stream isn't document and therefor might be changed or removed without prior notice
</summary>
<param name="symbol">Symbol to subscribe</param>
<param name="onMessage">The event handler for the received data</param>
<param name="filterOutNonTradeUpdates">Filter out any update which isn't a trade. Occasionally different updates (like INSURANCE_FUND updates) will occur on this stream. By default these are ignored</param>
<param name="ct">Cancellation token for closing this subscription</param>
<returns></returns>
</member>
<member name="M:Binance.Net.Interfaces.Clients.UsdFuturesApi.IBinanceSocketClientUsdFuturesApi.SubscribeToTradeUpdatesAsync(System.Collections.Generic.IEnumerable{System.String},System.Action{CryptoExchange.Net.Objects.Sockets.DataEvent{Binance.Net.Objects.Models.Spot.Socket.BinanceStreamTrade}},System.Threading.CancellationToken)">
<member name="M:Binance.Net.Interfaces.Clients.UsdFuturesApi.IBinanceSocketClientUsdFuturesApi.SubscribeToTradeUpdatesAsync(System.Collections.Generic.IEnumerable{System.String},System.Action{CryptoExchange.Net.Objects.Sockets.DataEvent{Binance.Net.Objects.Models.Spot.Socket.BinanceStreamTrade}},System.Boolean,System.Threading.CancellationToken)">
<summary>
Subscribe to individual trade update. NOTE: This endpoint stream isn't document and therefor might be changed or removed without prior notice
</summary>
<param name="symbols">Symbols to subscribe</param>
<param name="onMessage">The event handler for the received data</param>
<param name="filterOutNonTradeUpdates">Filter out any update which isn't a trade. Occasionally different updates (like INSURANCE_FUND updates) will occur on this stream. By default these are ignored</param>
<param name="ct">Cancellation token for closing this subscription</param>
<returns></returns>
</member>
Expand Down Expand Up @@ -13825,6 +13827,11 @@
Unused
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.Socket.BinanceStreamTrade.Type">
<summary>
Update type
</summary>
</member>
<member name="T:Binance.Net.Objects.Models.Spot.Binance24HPrice">
<summary>
Price statistics of the last 24 hours
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -234,18 +234,24 @@ public async Task<CallResult<UpdateSubscription>> SubscribeToAggregatedTradeUpda

/// <inheritdoc />
public async Task<CallResult<UpdateSubscription>> SubscribeToTradeUpdatesAsync(string symbol,
Action<DataEvent<BinanceStreamTrade>> onMessage, CancellationToken ct = default) =>
await SubscribeToTradeUpdatesAsync(new[] { symbol }, onMessage, ct).ConfigureAwait(false);
Action<DataEvent<BinanceStreamTrade>> onMessage, bool filterOutNonTradeUpdates = true, CancellationToken ct = default) =>
await SubscribeToTradeUpdatesAsync(new[] { symbol }, onMessage, filterOutNonTradeUpdates, ct).ConfigureAwait(false);

/// <inheritdoc />
public async Task<CallResult<UpdateSubscription>> SubscribeToTradeUpdatesAsync(IEnumerable<string> symbols,
Action<DataEvent<BinanceStreamTrade>> onMessage, CancellationToken ct = default)
Action<DataEvent<BinanceStreamTrade>> onMessage, bool filterOutNonTradeUpdates = true, CancellationToken ct = default)
{
symbols.ValidateNotNull(nameof(symbols));
foreach (var symbol in symbols)
symbol.ValidateBinanceSymbol();

var handler = new Action<DataEvent<BinanceCombinedStream<BinanceStreamTrade>>>(data => onMessage(data.As(data.Data.Data, data.Data.Data.Symbol)));
var handler = new Action<DataEvent<BinanceCombinedStream<BinanceStreamTrade>>>(data =>
{
if (filterOutNonTradeUpdates && data.Data.Data.Type != "MARKET")
return;

onMessage(data.As(data.Data.Data, data.Data.Data.Symbol));
});
symbols = symbols.Select(a => a.ToLower(CultureInfo.InvariantCulture) + _tradesStreamEndpoint).ToArray();
return await SubscribeAsync(BaseAddress, symbols, handler, ct).ConfigureAwait(false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,22 @@ public interface IBinanceSocketClientUsdFuturesApi : ISocketApiClient, IDisposab
/// </summary>
/// <param name="symbol">Symbol to subscribe</param>
/// <param name="onMessage">The event handler for the received data</param>
/// <param name="filterOutNonTradeUpdates">Filter out any update which isn't a trade. Occasionally different updates (like INSURANCE_FUND updates) will occur on this stream. By default these are ignored</param>
/// <param name="ct">Cancellation token for closing this subscription</param>
/// <returns></returns>
Task<CallResult<UpdateSubscription>> SubscribeToTradeUpdatesAsync(string symbol,
Action<DataEvent<BinanceStreamTrade>> onMessage, CancellationToken ct = default);
Action<DataEvent<BinanceStreamTrade>> onMessage, bool filterOutNonTradeUpdates = true, CancellationToken ct = default);

/// <summary>
/// Subscribe to individual trade update. NOTE: This endpoint stream isn't document and therefor might be changed or removed without prior notice
/// </summary>
/// <param name="symbols">Symbols to subscribe</param>
/// <param name="onMessage">The event handler for the received data</param>
/// <param name="filterOutNonTradeUpdates">Filter out any update which isn't a trade. Occasionally different updates (like INSURANCE_FUND updates) will occur on this stream. By default these are ignored</param>
/// <param name="ct">Cancellation token for closing this subscription</param>
/// <returns></returns>
Task<CallResult<UpdateSubscription>> SubscribeToTradeUpdatesAsync(IEnumerable<string> symbols,
Action<DataEvent<BinanceStreamTrade>> onMessage, CancellationToken ct = default);
Action<DataEvent<BinanceStreamTrade>> onMessage, bool filterOutNonTradeUpdates = true, CancellationToken ct = default);

/// <summary>
/// Subscribes to the aggregated trades update stream for the provided symbols
Expand Down
6 changes: 6 additions & 0 deletions Binance.Net/Objects/Models/Spot/Socket/BinanceStreamTrade.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,11 @@ public class BinanceStreamTrade: BinanceStreamEvent, IBinanceTrade
/// </summary>
[JsonProperty("M")]
public bool IsBestMatch { get; set; }

/// <summary>
/// Update type
/// </summary>
[JsonProperty("X")]
public string? Type { get; set; }
}
}

0 comments on commit 7978da7

Please sign in to comment.