internal void Set(CandleGranularity candleGranularity, DateTime utc) { switch (candleGranularity) { case CandleGranularity.Minutes1: _minutes1 = utc; break; case CandleGranularity.Minutes5: _minutes5 = utc; break; case CandleGranularity.Minutes15: _minutes15 = utc; break; case CandleGranularity.Hour1: _hour1 = utc; break; case CandleGranularity.Hour6: _hour6 = utc; break; case CandleGranularity.Hour24: _hour24 = utc; break; default: throw new ArgumentOutOfRangeException(nameof(candleGranularity), candleGranularity, null); } }
public async Task <IList <Candle> > GetHistoricRatesAsync( ProductType productPair, DateTime start, DateTime end, CandleGranularity granularity) { const int maxPeriods = 300; var candleList = new List <Candle>(); DateTime?batchEnd = end; DateTime batchStart; var maxBatchPeriod = (int)granularity * maxPeriods; do { if (batchEnd == null) { break; } batchStart = batchEnd.Value.AddSeconds(-maxBatchPeriod); if (batchStart < start) { batchStart = start; } candleList.AddRange(await GetHistoricRatesAsync(productPair, batchStart, batchEnd.Value, (int)granularity)); batchEnd = candleList.LastOrDefault()?.Time; } while (batchStart > start); return(candleList); }
internal DateTime Get(CandleGranularity candleGranularity) { switch (candleGranularity) { case CandleGranularity.Minutes1: return(_minutes1); case CandleGranularity.Minutes5: return(_minutes5); case CandleGranularity.Minutes15: return(_minutes15); case CandleGranularity.Hour1: return(_hour1); case CandleGranularity.Hour6: return(_hour6); case CandleGranularity.Hour24: return(_hour24); default: throw new ArgumentOutOfRangeException(nameof(candleGranularity), candleGranularity, null); } }
public void EnsureMarketFeedSettings(ProductType productType, CandleGranularity granularity) { var subject = new CandleMonitorFeeds(productType, granularity, true, null); Assert.That(subject.Granularity, Is.EqualTo(granularity)); Assert.That(subject.Granularity, Is.EqualTo(subject.MarketFeedSettings.Granularity)); Assert.That(subject.ProductId, Is.EqualTo(productType)); Assert.That(subject.ProductId, Is.EqualTo(subject.MarketFeedSettings.ProductId)); }
public async Task AllOptionPricesAsyncTest(string symbol, CandleGranularity period) { var response = await _client.HistoricalData .AllOptionPricesAsync(symbol, period); Assert.AreEqual(response.Status, "Success"); Assert.IsNotNull(response.Data); Assert.GreaterOrEqual(response.Data.Count(), 1); Assert.GreaterOrEqual(response.Data.First().Volume, 1); }
public CandleMonitorFeeds(ProductType productId, CandleGranularity granularity, bool hasOverlay = true, DateTime?tradeFromUtc = null) { if (tradeFromUtc != null && tradeFromUtc.Value.Kind != DateTimeKind.Utc) { throw new ArgumentNotUtcException(nameof(tradeFromUtc), tradeFromUtc.Value); } ProductId = productId; Granularity = granularity; TradeFromUtc = tradeFromUtc; HasOverlay = hasOverlay; }
/// <summary> /// Get Candlesticks for a trading pair /// </summary> /// <param name="pair">Trading pair</param> /// <param name="stickCount">Number of sticks to return</param> /// <param name="candleGranularity">CandleGranularity enum</param> /// <returns>Candle array</returns> public async Task <Candle[]> GetCandleSticks(string pair, int stickCount, CandleGranularity candleGranularity) { //stickCount++; var start = _dtHelper.SubtractFromUTCNow(0, stickCount, 0); var end = DateTime.UtcNow; ProductType productType; Enum.TryParse(pair, out productType); var candlesticks = await gdaxClient.ProductsService.GetHistoricRatesAsync(productType, start, end, candleGranularity); return(candlesticks.ToArray()); }
public async Task <IList <Candle> > GetHistoricRatesAsync( string productPair, DateTime start, DateTime end, CandleGranularity granularity) { const int maxPeriods = 300; var candleList = new List <Candle>(); DateTime?batchEnd = end; DateTime batchStart; var maxBatchPeriod = (int)granularity * maxPeriods; var requests = 0; do { if (batchEnd == null) { break; } batchStart = batchEnd.Value.AddSeconds(-maxBatchPeriod); if (batchStart < start) { batchStart = start; } if (requests >= 3) { await Task.Delay(1000); requests = 0; } candleList.AddRange(await GetHistoricRatesAsync(productPair, batchStart, batchEnd.Value, (int)granularity)); requests++; var previousBatchEnd = batchEnd; batchEnd = candleList.LastOrDefault()?.Time; if (previousBatchEnd == batchEnd) { break; } } while (batchStart > start); return(candleList); }
public MarketFeedSettings(ProductType id, CandleGranularity granularity) { ProductId = id; Granularity = granularity; }
public virtual async Task <IList <Candle> > ListerLesTaux(DateTime debut, DateTime fin, CandleGranularity granularite) { try { var taux = await coinbaseProClient.ProductsService.GetHistoricRatesAsync(TypeProduit, debut, fin, granularite); return(taux); } catch (Exception ex) { throw ex; } }
public CandleRequest(CandleGranularity granularity) { }
public async ValueTask <OmniEqResponse <IEnumerable <QuoteResponse> > > PricesAsync(string symbol, DateTime start, DateTime end, CandleGranularity period = CandleGranularity.OneMinute) { const string urlPattern = "historical/prices"; var results = new List <QuoteResponse>(); var tempEnd = start.AddDays(31); string status; string message; do { if (tempEnd.CompareTo(end) > 0) { tempEnd = end; } var qsb = new QueryStringBuilder(); qsb.Add("start", start.ToString("yyyy-MM-dd")); qsb.Add("end", tempEnd.ToString("yyyy-MM-dd")); qsb.Add("period", period.GetDescription()); var quotes = await _executor.SymbolExecuteAsync <IEnumerable <QuoteResponse> >(urlPattern, symbol, qsb).ConfigureAwait(false); if (quotes.Status == "Success") { results.AddRange(quotes.Data); var quote = quotes.Data.FirstOrDefault(); if (quote != null && quote.Start.CompareTo(start) > 0) { start = quote.Start.AddDays(-32); } status = quotes.Status; message = quotes.Message; } else { status = quotes.Status; message = quotes.Message; results = null; break; } start = start.AddDays(32); tempEnd = start.AddDays(31); } while (tempEnd.CompareTo(end) < 0); return(new OmniEqResponse <IEnumerable <QuoteResponse> >() { Status = status, Message = message, Data = results }); }
public async ValueTask <OmniEqResponse <IEnumerable <QuoteResponse> > > AllOptionPricesAsync(string symbol, CandleGranularity period = CandleGranularity.OneMinute) { const string urlPattern = "historical/prices"; var qsb = new QueryStringBuilder(); qsb.Add("range", DataRange.All.GetDescription()); qsb.Add("period", period.GetDescription()); return(await _executor.SymbolExecuteAsync <IEnumerable <QuoteResponse> >(urlPattern, symbol, qsb).ConfigureAwait(false)); }