diff --git a/Binance.API.Csharp.Client.Domain/Interfaces/IBinanceClient.cs b/Binance.API.Csharp.Client.Domain/Interfaces/IBinanceClient.cs index 7a9deff..5312215 100644 --- a/Binance.API.Csharp.Client.Domain/Interfaces/IBinanceClient.cs +++ b/Binance.API.Csharp.Client.Domain/Interfaces/IBinanceClient.cs @@ -51,14 +51,14 @@ public interface IBinanceClient /// Time interval to retreive. /// Limit of records to retrieve. /// - Task> GetCandleSticks(string symbol, TimeInterval interval, int limit = 500); + Task> GetCandleSticks(string symbol, TimeInterval interval, DateTime? startTime = null, DateTime? endTime = null, int limit = 500); /// /// 24 hour price change statistics. /// /// Ticker symbol. /// - Task GetPriceChange24H(string symbol); + Task> GetPriceChange24H(string symbol); /// /// Latest price for all symbols. diff --git a/Binance.API.Csharp.Client.Models/Market/PriceChangeInfo.cs b/Binance.API.Csharp.Client.Models/Market/PriceChangeInfo.cs index 015bb60..e21713b 100644 --- a/Binance.API.Csharp.Client.Models/Market/PriceChangeInfo.cs +++ b/Binance.API.Csharp.Client.Models/Market/PriceChangeInfo.cs @@ -4,6 +4,8 @@ namespace Binance.API.Csharp.Client.Models.Market { public class PriceChangeInfo { + [JsonProperty("symbol")] + public string Symbol { get; set; } [JsonProperty("priceChange")] public decimal PriceChange { get; set; } [JsonProperty("priceChangePercent")] diff --git a/Binance.API.Csharp.Client.Test/BinanceTest.cs b/Binance.API.Csharp.Client.Test/BinanceTest.cs index 3e79dcf..4dce8bd 100644 --- a/Binance.API.Csharp.Client.Test/BinanceTest.cs +++ b/Binance.API.Csharp.Client.Test/BinanceTest.cs @@ -9,7 +9,7 @@ namespace Binance.API.Csharp.Client.Test public class BinanceTest { private static ApiClient apiClient = new ApiClient("@YourApiKey", "@YourApiSecret"); - private static BinanceClient binanceClient = new BinanceClient(apiClient); + private static BinanceClient binanceClient = new BinanceClient(apiClient,false); #region General [TestMethod] @@ -35,7 +35,7 @@ public void GetOrderBook() [TestMethod] public void GetCandleSticks() { - var candlestick = binanceClient.GetCandleSticks("ethbtc", TimeInterval.Minutes_15).Result; + var candlestick = binanceClient.GetCandleSticks("ethbtc", TimeInterval.Minutes_15, new System.DateTime(2017,11,24), new System.DateTime(2017, 11, 26)).Result; } [TestMethod] @@ -47,7 +47,7 @@ public void GetAggregateTrades() [TestMethod] public void GetPriceChange24H() { - var priceChangeInfo = binanceClient.GetPriceChange24H("ethbtc").Result; + var priceChangeInfo = binanceClient.GetPriceChange24H().Result; } [TestMethod] diff --git a/Binance.API.Csharp.Client/Binance.API.Csharp.Client.nuspec b/Binance.API.Csharp.Client/Binance.API.Csharp.Client.nuspec index fd7bd51..a16388b 100644 --- a/Binance.API.Csharp.Client/Binance.API.Csharp.Client.nuspec +++ b/Binance.API.Csharp.Client/Binance.API.Csharp.Client.nuspec @@ -2,7 +2,7 @@ Binance.API.Csharp.Client - 1.2.0 + 1.2.1 Binance.API.Csharp.Client Jose Mejia Jose Mejia @@ -10,7 +10,7 @@ https://github.com/morpheums/Binance.API.Csharp.Client/blob/master/Binance.API.Csharp.Client/BinanceLogo.png?raw=true false C#.NET client for Binance Exchange API. - Fixing issue when calling "LoadTradingRules" method. + Fixing issue including dependencies dlls. Copyright 2017 Criptocurrency Binance API dotnet csharp wrapper diff --git a/Binance.API.Csharp.Client/BinanceClient.cs b/Binance.API.Csharp.Client/BinanceClient.cs index 9e704cd..fd65700 100644 --- a/Binance.API.Csharp.Client/BinanceClient.cs +++ b/Binance.API.Csharp.Client/BinanceClient.cs @@ -22,9 +22,9 @@ public class BinanceClient : BinanceClientAbstract, IBinanceClient /// /// API client to be used for API calls. /// Optional parameter to skip loading trading rules. - public BinanceClient(IApiClient apiClient, bool loadTradingRules = true) : base(apiClient) + public BinanceClient(IApiClient apiClient, bool loadTradingRules = false) : base(apiClient) { - if(loadTradingRules) + if (loadTradingRules) { LoadTradingRules(); } @@ -164,14 +164,19 @@ public async Task> GetAggregateTrades(string symbol, /// Time interval to retreive. /// Limit of records to retrieve. /// - public async Task> GetCandleSticks(string symbol, TimeInterval interval, int limit = 500) + public async Task> GetCandleSticks(string symbol, TimeInterval interval, DateTime? startTime = null, DateTime? endTime = null, int limit = 500) { if (string.IsNullOrWhiteSpace(symbol)) { throw new ArgumentException("symbol cannot be empty. ", "symbol"); } - var result = await _apiClient.CallAsync(ApiMethod.GET, EndPoints.Candlesticks, false, $"symbol={symbol.ToUpper()}&interval={interval.GetDescription()}&limit={limit}"); + var args = $"symbol={symbol.ToUpper()}&interval={interval.GetDescription()}" + + (startTime .HasValue ? $"&startTime={startTime.Value.GetUnixTimeStamp()}" : "") + + (endTime.HasValue ? $"&endTime={endTime.Value.GetUnixTimeStamp()}" : "") + + $"&limit={limit}"; + + var result = await _apiClient.CallAsync(ApiMethod.GET, EndPoints.Candlesticks, false, args); var parser = new CustomParser(); var parsedResult = parser.GetParsedCandlestick(result); @@ -184,14 +189,11 @@ public async Task> GetCandleSticks(string symbol, TimeI /// /// Ticker symbol. /// - public async Task GetPriceChange24H(string symbol) + public async Task> GetPriceChange24H(string symbol = "") { - if (string.IsNullOrWhiteSpace(symbol)) - { - throw new ArgumentException("symbol cannot be empty. ", "symbol"); - } + var args = string.IsNullOrWhiteSpace(symbol) ? "" : $"symbol={symbol.ToUpper()}"; - var result = await _apiClient.CallAsync(ApiMethod.GET, EndPoints.TickerPriceChange24H, false, $"symbol={symbol.ToUpper()}"); + var result = await _apiClient.CallAsync>(ApiMethod.GET, EndPoints.TickerPriceChange24H, false, args); return result; } @@ -461,8 +463,8 @@ public async Task GetDepositHistory(string asset, DepositStatus? var args = $"asset={asset.ToUpper()}" + (status.HasValue ? $"&status={(int)status}" : "") - + (startTime.HasValue ? $"&startTime={Utilities.GenerateTimeStamp(startTime.Value)}" : "") - + (endTime.HasValue ? $"&endTime={Utilities.GenerateTimeStamp(endTime.Value)}" : "") + + (startTime.HasValue ? $"&startTime={startTime.Value.GetUnixTimeStamp()}" : "") + + (endTime.HasValue ? $"&endTime={endTime.Value.GetUnixTimeStamp()}" : "") + $"&recvWindow={recvWindow}"; var result = await _apiClient.CallAsync(ApiMethod.POST, EndPoints.DepositHistory, true, args); diff --git a/Binance.API.Csharp.Client/Utils/ExtensionMethods.cs b/Binance.API.Csharp.Client/Utils/ExtensionMethods.cs index 3d102a2..9168a97 100644 --- a/Binance.API.Csharp.Client/Utils/ExtensionMethods.cs +++ b/Binance.API.Csharp.Client/Utils/ExtensionMethods.cs @@ -22,5 +22,15 @@ public static string GetDescription(this Enum value) .Single(x => x.GetValue(null).Equals(value)), typeof(DescriptionAttribute)))?.Description ?? value.ToString(); } + + /// + /// Gets a timestamp in milliseconds. + /// + /// Timestamp in milliseconds. + public static string GetUnixTimeStamp(this DateTime baseDateTime) + { + var dtOffset = new DateTimeOffset(baseDateTime); + return dtOffset.ToUnixTimeMilliseconds().ToString(); + } } }