From 40fac2f613884f8ef89ef6d61cd1d7286f248586 Mon Sep 17 00:00:00 2001 From: BZ-CO <30245815+BZ-CO@users.noreply.github.com> Date: Wed, 3 Jul 2024 01:27:04 +0300 Subject: [PATCH] Change volume data type in MarketCandle (#837) Change volume data type in MarketCandle from double to decimal. --- .../API/Exchanges/BitBank/ExchangeBitBankAPI.cs | 2 +- .../API/Exchanges/Digifinex/ExchangeDigifinexAPI.cs | 2 +- src/ExchangeSharp/API/Exchanges/GateIo/ExchangeGateIoAPI.cs | 2 +- src/ExchangeSharp/API/Exchanges/KuCoin/ExchangeKuCoinAPI.cs | 6 +++--- src/ExchangeSharp/API/Exchanges/LBank/ExchangeLBankAPI.cs | 2 +- src/ExchangeSharp/API/Exchanges/NDAX/ExchangeNDAXAPI.cs | 2 +- .../API/Exchanges/_Base/ExchangeAPIExtensions.cs | 4 ++-- src/ExchangeSharp/Model/MarketCandle.cs | 4 ++-- src/ExchangeSharpConsole/Options/TestOption.cs | 6 +++--- tests/ExchangeSharpTests/ExchangeBitBankTests.cs | 2 +- 10 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/ExchangeSharp/API/Exchanges/BitBank/ExchangeBitBankAPI.cs b/src/ExchangeSharp/API/Exchanges/BitBank/ExchangeBitBankAPI.cs index 8f187c47..eaf966ed 100644 --- a/src/ExchangeSharp/API/Exchanges/BitBank/ExchangeBitBankAPI.cs +++ b/src/ExchangeSharp/API/Exchanges/BitBank/ExchangeBitBankAPI.cs @@ -121,7 +121,7 @@ protected override async Task> OnGetCandlesAsync( HighPrice = data[1].ConvertInvariant(), LowPrice = data[2].ConvertInvariant(), ClosePrice = data[3].ConvertInvariant(), - BaseCurrencyVolume = data[4].ConvertInvariant(), + BaseCurrencyVolume = data[4].ConvertInvariant(), Timestamp = timestamp, }; result.Add(candle); diff --git a/src/ExchangeSharp/API/Exchanges/Digifinex/ExchangeDigifinexAPI.cs b/src/ExchangeSharp/API/Exchanges/Digifinex/ExchangeDigifinexAPI.cs index 08d79a54..98460c83 100644 --- a/src/ExchangeSharp/API/Exchanges/Digifinex/ExchangeDigifinexAPI.cs +++ b/src/ExchangeSharp/API/Exchanges/Digifinex/ExchangeDigifinexAPI.cs @@ -330,7 +330,7 @@ protected override async Task> OnGetCandlesAsync( Timestamp = CryptoUtility.UnixTimeStampToDateTimeSeconds( x[0].ConvertInvariant() ), - BaseCurrencyVolume = x[1].ConvertInvariant(), + BaseCurrencyVolume = x[1].ConvertInvariant(), ClosePrice = x[2].ConvertInvariant(), HighPrice = x[3].ConvertInvariant(), LowPrice = x[4].ConvertInvariant(), diff --git a/src/ExchangeSharp/API/Exchanges/GateIo/ExchangeGateIoAPI.cs b/src/ExchangeSharp/API/Exchanges/GateIo/ExchangeGateIoAPI.cs index 85de88ab..c8c59d7f 100644 --- a/src/ExchangeSharp/API/Exchanges/GateIo/ExchangeGateIoAPI.cs +++ b/src/ExchangeSharp/API/Exchanges/GateIo/ExchangeGateIoAPI.cs @@ -305,7 +305,7 @@ protected override async Task> OnGetCandlesAsync( candleToken[0], TimestampType.UnixSeconds ), - BaseCurrencyVolume = candleToken[1].ConvertInvariant(), + BaseCurrencyVolume = candleToken[1].ConvertInvariant(), ClosePrice = candleToken[2].ConvertInvariant(), ExchangeName = Name, HighPrice = candleToken[3].ConvertInvariant(), diff --git a/src/ExchangeSharp/API/Exchanges/KuCoin/ExchangeKuCoinAPI.cs b/src/ExchangeSharp/API/Exchanges/KuCoin/ExchangeKuCoinAPI.cs index 21be87e6..477d1667 100644 --- a/src/ExchangeSharp/API/Exchanges/KuCoin/ExchangeKuCoinAPI.cs +++ b/src/ExchangeSharp/API/Exchanges/KuCoin/ExchangeKuCoinAPI.cs @@ -371,7 +371,7 @@ protected override async Task> OnGetCandlesAsync( { "symbol", marketSymbol }, { "type", periodString } }; - + if (startDate != null) { payload.Add("startAt", (long)startDate.Value.UnixTimestampFromDateTimeSeconds()); @@ -406,8 +406,8 @@ protected override async Task> OnGetCandlesAsync( ClosePrice = token[i][2].ConvertInvariant(), HighPrice = token[i][3].ConvertInvariant(), LowPrice = token[i][4].ConvertInvariant(), - BaseCurrencyVolume = token[i][5].ConvertInvariant(), - QuoteCurrencyVolume = token[i][6].ConvertInvariant() + BaseCurrencyVolume = token[i][5].ConvertInvariant(), + QuoteCurrencyVolume = token[i][6].ConvertInvariant() } ); } diff --git a/src/ExchangeSharp/API/Exchanges/LBank/ExchangeLBankAPI.cs b/src/ExchangeSharp/API/Exchanges/LBank/ExchangeLBankAPI.cs index 01426867..1155ad24 100644 --- a/src/ExchangeSharp/API/Exchanges/LBank/ExchangeLBankAPI.cs +++ b/src/ExchangeSharp/API/Exchanges/LBank/ExchangeLBankAPI.cs @@ -305,7 +305,7 @@ private List ParseMarketCandle(JToken array) HighPrice = item[2].ConvertInvariant(), LowPrice = item[3].ConvertInvariant(), ClosePrice = item[4].ConvertInvariant(), - BaseCurrencyVolume = item[5].ConvertInvariant() + BaseCurrencyVolume = item[5].ConvertInvariant() }; candles.Add(candle); diff --git a/src/ExchangeSharp/API/Exchanges/NDAX/ExchangeNDAXAPI.cs b/src/ExchangeSharp/API/Exchanges/NDAX/ExchangeNDAXAPI.cs index 915e296a..07405cff 100644 --- a/src/ExchangeSharp/API/Exchanges/NDAX/ExchangeNDAXAPI.cs +++ b/src/ExchangeSharp/API/Exchanges/NDAX/ExchangeNDAXAPI.cs @@ -399,7 +399,7 @@ protected override async Task> OnGetCandlesAsync( LowPrice = enumerable.ElementAt(2).Value(), OpenPrice = enumerable.ElementAt(3).Value(), ClosePrice = enumerable.ElementAt(4).Value(), - BaseCurrencyVolume = enumerable.ElementAt(5).Value(), + BaseCurrencyVolume = enumerable.ElementAt(5).Value(), } ) .Where(candle => !endDate.HasValue || candle.Timestamp <= endDate); diff --git a/src/ExchangeSharp/API/Exchanges/_Base/ExchangeAPIExtensions.cs b/src/ExchangeSharp/API/Exchanges/_Base/ExchangeAPIExtensions.cs index a3914101..e6c21711 100644 --- a/src/ExchangeSharp/API/Exchanges/_Base/ExchangeAPIExtensions.cs +++ b/src/ExchangeSharp/API/Exchanges/_Base/ExchangeAPIExtensions.cs @@ -1096,8 +1096,8 @@ internal static MarketCandle ParseCandle( out decimal baseVolume, out decimal convertVolume ); - candle.BaseCurrencyVolume = (double)baseVolume; - candle.QuoteCurrencyVolume = (double)convertVolume; + candle.BaseCurrencyVolume = baseVolume; + candle.QuoteCurrencyVolume = convertVolume; if (weightedAverageKey != null) { candle.WeightedAverage = token[weightedAverageKey].ConvertInvariant(); diff --git a/src/ExchangeSharp/Model/MarketCandle.cs b/src/ExchangeSharp/Model/MarketCandle.cs index 415ab724..9562b818 100644 --- a/src/ExchangeSharp/Model/MarketCandle.cs +++ b/src/ExchangeSharp/Model/MarketCandle.cs @@ -66,12 +66,12 @@ public class MarketCandle /// /// Base currency volume (i.e. in BTC-USD, this would be BTC volume) /// - public double BaseCurrencyVolume { get; set; } + public decimal BaseCurrencyVolume { get; set; } /// /// Quote currency volume (i.e. in BTC-USD, this would be USD volume) /// - public double QuoteCurrencyVolume { get; set; } + public decimal QuoteCurrencyVolume { get; set; } /// /// The weighted average price if provided diff --git a/src/ExchangeSharpConsole/Options/TestOption.cs b/src/ExchangeSharpConsole/Options/TestOption.cs index 5247cf91..c038abd2 100644 --- a/src/ExchangeSharpConsole/Options/TestOption.cs +++ b/src/ExchangeSharpConsole/Options/TestOption.cs @@ -224,9 +224,9 @@ await api.GetCandlesAsync( && !string.IsNullOrWhiteSpace(candles[0].Name) && candles[0].ExchangeName == api.Name && candles[0].PeriodSeconds == 86400 - && candles[0].BaseCurrencyVolume > 0.0 - && candles[0].QuoteCurrencyVolume > 0.0 - && candles[0].WeightedAverage >= 0m + && candles[0].BaseCurrencyVolume > 0 + && candles[0].QuoteCurrencyVolume > 0 + && candles[0].WeightedAverage >= 0 ); Console.WriteLine($"OK ({candles.Length})"); diff --git a/tests/ExchangeSharpTests/ExchangeBitBankTests.cs b/tests/ExchangeSharpTests/ExchangeBitBankTests.cs index 3d7e3c00..1ee4ca0e 100644 --- a/tests/ExchangeSharpTests/ExchangeBitBankTests.cs +++ b/tests/ExchangeSharpTests/ExchangeBitBankTests.cs @@ -131,7 +131,7 @@ public async Task ShouldGetCandleStick() candle.HighPrice.Should().Be(1665719m); candle.LowPrice.Should().Be(1612861m); candle.ClosePrice.Should().Be(1629941); - candle.BaseCurrencyVolume.Should().Be(5.8362); + candle.BaseCurrencyVolume.Should().Be(5.8362m); candle.Timestamp .Should() .Be(DateTimeOffset.FromUnixTimeMilliseconds(1514160000000).DateTime);