public async Task <DividendHistory> GetDividendHistory(DateTime startDate) { var toReturn = new DividendHistory { Total = 0, Rows = new List <Dividend>() }; while (true) { if (startDate > DateTime.Today) { break; } DateTime endDate = startDate.AddDays(10); var parameters = $"recvWindow=60000&startTime={startDate.ToUnixDateTime()}&endTime={endDate.ToUnixDateTime()}"; parameters = _restClient.AddTimestampAndSign(parameters); var result = await _restClient.CallAsync(HttpMethod.Get, "/sapi/v1/asset/assetDividend", parameters); var resultTyped = JsonConvert.DeserializeObject <DividendHistory>(result); if (resultTyped.Total == 20) { throw new Exception("Binance bug is returning 20 rows only, we might miss entries."); } toReturn.Rows.AddRange(resultTyped.Rows ?? Enumerable.Empty <Dividend>()); toReturn.Total += resultTyped.Rows?.Count ?? 0; startDate = endDate; } return(toReturn); }
public void SaveDividends(DividendHistory dividendHistory) { var lines = dividendHistory.Rows.OrderBy(t => t.DivTime).Select(JsonConvert.SerializeObject); File.WriteAllLines(GetFileName(_dividendsFileName), lines); }