private async Task <Account> GetAccount() { //Whacky stuff... //No idea why any of this is necessary, but code was pieces together from Binance.NET var startTime = DateTime.Now; var binanceTimeModel = await RESTClient.GetAsync <BinanceTime>("/api/v1/time"); var binanceTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(binanceTimeModel.serverTime); var timeTaken = DateTime.Now - startTime; var timeOffset = ((binanceTime - DateTime.Now).TotalMilliseconds) - timeTaken.TotalMilliseconds / 2; var timestamp = APIHelpers.GetUnixTimestamp(DateTime.UtcNow.AddMilliseconds(timeOffset)).ToString(); var queryString = $"api/v3/account?recvWindow=10000000000×tamp={timestamp}"; var uri = new Uri($"{RESTClient.BaseUri}{queryString}"); var hmacAsBytes = APIHelpers.GetHashAsBytes(uri.Query.Replace("?", ""), ApiSecret, APIHelpers.HashAlgorithmType.HMACEightBit, Encoding.UTF8); queryString += $"&signature={hmacAsBytes.ToHexString()}"; RESTClient.Headers.Clear(); RESTClient.Headers.Add("X-MBX-APIKEY", ApiKey); return(await RESTClient.GetAsync <Account>(queryString)); }