Skip to content

Commit

Permalink
Added SpotApi.Account.GetCommissionRatesAsync
Browse files Browse the repository at this point in the history
  • Loading branch information
JKorf committed Jul 23, 2024
1 parent 3237214 commit c58f0aa
Show file tree
Hide file tree
Showing 8 changed files with 236 additions and 0 deletions.
1 change: 1 addition & 0 deletions Binance.Net.UnitTests/BinanceRestIntegrationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ public async Task TestSpotAccount()
await RunAndCheckResult(client => client.SpotApi.Account.GetIsolatedMarginFeeDataAsync(default, default, default, default), true);
await RunAndCheckResult(client => client.SpotApi.Account.GetTradeFeeAsync(default, default, default), true);
await RunAndCheckResult(client => client.SpotApi.Account.GetAccountVipLevelAndStatusAsync(default, default), true);
await RunAndCheckResult(client => client.SpotApi.Account.GetCommissionRatesAsync("ETHUSDT", default, default), true);

// Not available without margin account
//await RunAndCheckResult(client => client.SpotApi.Account.GetMarginTransferHistoryAsync(Enums.TransferDirection.RollOut, default, default, default, default, default, default, default), true);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
GET
/sapi/v1/account/info
true
{
"vipLevel": 0,
"isMarginEnabled": true,
"isFutureEnabled": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
GET
/api/v3/account/commission
true
{
"symbol": "BTCUSDT",
"standardCommission": {
"maker": "0.00000010",
"taker": "0.00000020",
"buyer": "0.00000030",
"seller": "0.00000040"
},
"taxCommission": {
"maker": "0.00000112",
"taker": "0.00000114",
"buyer": "0.00000118",
"seller": "0.00000116"
},
"discount": {
"enabledForAccount": true,
"enabledForSymbol": true,
"discountAsset": "BNB",
"discount": "0.75000000"
}
}
2 changes: 2 additions & 0 deletions Binance.Net.UnitTests/RestRequestTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ public async Task ValidateSpotAccountCalls()
await tester.ValidateAsync(client => client.SpotApi.Account.CrossMarginSmallLiabilityExchangeAsync(new[] { "ETH" }), "CrossMarginSmallLiabilityExchange");
await tester.ValidateAsync(client => client.SpotApi.Account.GetCrossMarginSmallLiabilityExchangeHistoryAsync(), "GetCrossMarginSmallLiabilityExchangeHistory");
await tester.ValidateAsync(client => client.SpotApi.Account.GetTradeFeeAsync(), "GetTradeFee");
await tester.ValidateAsync(client => client.SpotApi.Account.GetAccountVipLevelAndStatusAsync(), "GetAccountVipLevelAndStatus");
await tester.ValidateAsync(client => client.SpotApi.Account.GetCommissionRatesAsync("ETHUSDT"), "GetCommissionRates");
}

[Test]
Expand Down
88 changes: 88 additions & 0 deletions Binance.Net/Binance.Net.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1316,6 +1316,9 @@
<member name="M:Binance.Net.Clients.SpotApi.BinanceRestClientSpotApiAccount.GetAccountVipLevelAndStatusAsync(System.Nullable{System.Int32},System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="M:Binance.Net.Clients.SpotApi.BinanceRestClientSpotApiAccount.GetCommissionRatesAsync(System.String,System.Nullable{System.Int32},System.Threading.CancellationToken)">
<inheritdoc />
</member>
<member name="T:Binance.Net.Clients.SpotApi.BinanceRestClientSpotApiExchangeData">
<inheritdoc />
</member>
Expand Down Expand Up @@ -8785,6 +8788,16 @@
<param name="ct">Cancellation token</param>
<returns></returns>
</member>
<member name="M:Binance.Net.Interfaces.Clients.SpotApi.IBinanceRestClientSpotApiAccount.GetCommissionRatesAsync(System.String,System.Nullable{System.Int32},System.Threading.CancellationToken)">
<summary>
Get current account commission rates.
<para><a href="https://binance-docs.github.io/apidocs/spot/en/#query-commission-rates-user_data" /></para>
</summary>
<param name="symbol">Symbol</param>
<param name="receiveWindow">The receive window for which this request is active. When the request takes longer than this to complete the server will reject the request</param>
<param name="ct">Cancellation token</param>
<returns></returns>
</member>
<member name="T:Binance.Net.Interfaces.Clients.SpotApi.IBinanceRestClientSpotApiExchangeData">
<summary>
Binance Spot exchange data endpoints. Exchange data includes market data (tickers, order books, etc) and system status.
Expand Down Expand Up @@ -14505,6 +14518,81 @@
Status
</summary>
</member>
<member name="T:Binance.Net.Objects.Models.Spot.BinanceCommissions">
<summary>
Binance commissions
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceCommissions.Symbol">
<summary>
Symbol name
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceCommissions.StandardCommissions">
<summary>
Standard commission rates on trades from the order.
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceCommissions.TaxCommissions">
<summary>
Tax commission rates for trades from the order.
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceCommissions.Discount">
<summary>
Discount commission when paying in BNB
</summary>
</member>
<member name="T:Binance.Net.Objects.Models.Spot.BinanceDiscountInfo">
<summary>
Commission info
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceDiscountInfo.Discount">
<summary>
Standard commission is reduced by this rate when paying commission in BNB.
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceDiscountInfo.EnabledForAccount">
<summary>
Enabled for account
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceDiscountInfo.EnabledForSymbol">
<summary>
Enabled for symbol
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceDiscountInfo.DiscountAsset">
<summary>
Discount asset
</summary>
</member>
<member name="T:Binance.Net.Objects.Models.Spot.BinanceCommissionInfo">
<summary>
Commission info
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceCommissionInfo.Maker">
<summary>
Maker fee
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceCommissionInfo.Taker">
<summary>
Taker fee
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceCommissionInfo.Buyer">
<summary>
Buyer fee
</summary>
</member>
<member name="P:Binance.Net.Objects.Models.Spot.BinanceCommissionInfo.Sell">
<summary>
Seller fee
</summary>
</member>
<member name="T:Binance.Net.Objects.Models.Spot.BinanceDelistSchedule">
<summary>
Spot symbol delist info
Expand Down
15 changes: 15 additions & 0 deletions Binance.Net/Clients/SpotApi/BinanceRestClientSpotApiAccount.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1324,5 +1324,20 @@ public async Task<WebCallResult<BinanceVipLevelAndStatus>> GetAccountVipLevelAnd
}

#endregion

#region Get Trade Fee

/// <inheritdoc />
public async Task<WebCallResult<BinanceCommissions>> GetCommissionRatesAsync(string symbol, int? receiveWindow = null, CancellationToken ct = default)
{
var parameters = new ParameterCollection();
parameters.Add("symbol", symbol);
parameters.AddOptionalParameter("recvWindow", receiveWindow?.ToString(CultureInfo.InvariantCulture) ?? _baseClient.ClientOptions.ReceiveWindow.TotalMilliseconds.ToString(CultureInfo.InvariantCulture));

var request = _definitions.GetOrCreate(HttpMethod.Get, "api/v3/account/commission", BinanceExchange.RateLimiter.SpotRestIp, 20, true);
return await _baseClient.SendAsync<BinanceCommissions>(request, parameters, ct).ConfigureAwait(false);
}

#endregion
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -863,5 +863,15 @@ Task<WebCallResult<CreateIsolatedMarginAccountResult>> DisableIsolatedMarginAcco
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<WebCallResult<BinanceVipLevelAndStatus>> GetAccountVipLevelAndStatusAsync(int? receiveWindow = null, CancellationToken ct = default);

/// <summary>
/// Get current account commission rates.
/// <para><a href="https://binance-docs.github.io/apidocs/spot/en/#query-commission-rates-user_data" /></para>
/// </summary>
/// <param name="symbol">Symbol</param>
/// <param name="receiveWindow">The receive window for which this request is active. When the request takes longer than this to complete the server will reject the request</param>
/// <param name="ct">Cancellation token</param>
/// <returns></returns>
Task<WebCallResult<BinanceCommissions>> GetCommissionRatesAsync(string symbol, int? receiveWindow = null, CancellationToken ct = default);
}
}
88 changes: 88 additions & 0 deletions Binance.Net/Objects/Models/Spot/BinanceCommissions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace Binance.Net.Objects.Models.Spot
{
/// <summary>
/// Binance commissions
/// </summary>
public record BinanceCommissions
{
/// <summary>
/// Symbol name
/// </summary>
[JsonPropertyName("symbol")]
public string Symbol { get; set; } = string.Empty;
/// <summary>
/// Standard commission rates on trades from the order.
/// </summary>
[JsonPropertyName("standardCommission")]
public BinanceCommissionInfo StandardCommissions { get; set; } = null!;
/// <summary>
/// Tax commission rates for trades from the order.
/// </summary>
[JsonPropertyName("taxCommission")]
public BinanceCommissionInfo TaxCommissions { get; set; } = null!;
/// <summary>
/// Discount commission when paying in BNB
/// </summary>
[JsonPropertyName("discount")]
public BinanceDiscountInfo Discount { get; set; } = null!;

}

/// <summary>
/// Commission info
/// </summary>
public record BinanceDiscountInfo
{
/// <summary>
/// Standard commission is reduced by this rate when paying commission in BNB.
/// </summary>
[JsonPropertyName("discount")]
public decimal Discount { get; set; }
/// <summary>
/// Enabled for account
/// </summary>
[JsonPropertyName("enabledForAccount")]
public bool EnabledForAccount { get; set; }
/// <summary>
/// Enabled for symbol
/// </summary>
[JsonPropertyName("enabledForSymbol")]
public bool EnabledForSymbol { get; set; }
/// <summary>
/// Discount asset
/// </summary>
[JsonPropertyName("discountAsset")]
public string DiscountAsset { get; set; } = string.Empty;
}

/// <summary>
/// Commission info
/// </summary>
public record BinanceCommissionInfo
{
/// <summary>
/// Maker fee
/// </summary>
[JsonPropertyName("maker")]
public decimal Maker { get; set; }
/// <summary>
/// Taker fee
/// </summary>
[JsonPropertyName("taker")]
public decimal Taker { get; set; }
/// <summary>
/// Buyer fee
/// </summary>
[JsonPropertyName("buyer")]
public decimal Buyer { get; set; }
/// <summary>
/// Seller fee
/// </summary>
[JsonPropertyName("seller")]
public decimal Sell { get; set; }
}
}

0 comments on commit c58f0aa

Please sign in to comment.