From 0fab39deec139a0e4bbb3838d616f2024a2ec385 Mon Sep 17 00:00:00 2001 From: sigged Date: Sat, 11 Dec 2021 17:46:59 +0100 Subject: [PATCH 1/2] Implement OnGetFeesAsync for Coinbase --- .../Exchanges/Coinbase/ExchangeCoinbaseAPI.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/ExchangeSharp/API/Exchanges/Coinbase/ExchangeCoinbaseAPI.cs b/src/ExchangeSharp/API/Exchanges/Coinbase/ExchangeCoinbaseAPI.cs index 8f255eb5..96f30f7a 100644 --- a/src/ExchangeSharp/API/Exchanges/Coinbase/ExchangeCoinbaseAPI.cs +++ b/src/ExchangeSharp/API/Exchanges/Coinbase/ExchangeCoinbaseAPI.cs @@ -652,6 +652,27 @@ protected override async Task> OnGetAmountsAvailable return amounts; } + protected override async Task> OnGetFeesAsync() + { + var symbols = await OnGetMarketSymbolsAsync(); + + Dictionary fees = new Dictionary(StringComparer.OrdinalIgnoreCase); + + JObject token = await MakeJsonRequestAsync("/fees", null, await GetNoncePayloadAsync(), "GET"); + /* + * We can chose between maker and taker fee... + * currently ExchangeSharp only supports 1 fee rate per symbol. + * Here, we choose Maker fee and not taker_fee_rate + */ + decimal makerRate = token["maker_fee_rate"].Value(); + + fees = symbols + .Select(symbol => new KeyValuePair(symbol, makerRate)) + .ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + + return fees; + } + protected override async Task OnWithdrawAsync(ExchangeWithdrawalRequest request) { var nonce = await GenerateNonceAsync(); From 32b9c4829866c789a9621e6830e4e4d5bf9b517c Mon Sep 17 00:00:00 2001 From: sigged Date: Sat, 11 Dec 2021 18:45:20 +0100 Subject: [PATCH 2/2] Get taker fee in favor or maker fee --- .../API/Exchanges/Coinbase/ExchangeCoinbaseAPI.cs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/ExchangeSharp/API/Exchanges/Coinbase/ExchangeCoinbaseAPI.cs b/src/ExchangeSharp/API/Exchanges/Coinbase/ExchangeCoinbaseAPI.cs index 96f30f7a..3e7c660a 100644 --- a/src/ExchangeSharp/API/Exchanges/Coinbase/ExchangeCoinbaseAPI.cs +++ b/src/ExchangeSharp/API/Exchanges/Coinbase/ExchangeCoinbaseAPI.cs @@ -660,11 +660,10 @@ protected override async Task> OnGetFeesAsync() JObject token = await MakeJsonRequestAsync("/fees", null, await GetNoncePayloadAsync(), "GET"); /* - * We can chose between maker and taker fee... - * currently ExchangeSharp only supports 1 fee rate per symbol. - * Here, we choose Maker fee and not taker_fee_rate + * We can chose between maker and taker fee, but currently ExchangeSharp only supports 1 fee rate per symbol. + * Here, we choose taker fee, which are usually higher */ - decimal makerRate = token["maker_fee_rate"].Value(); + decimal makerRate = token["taker_fee_rate"].Value(); //percentage between 0 and 1 fees = symbols .Select(symbol => new KeyValuePair(symbol, makerRate))