Ejemplo n.º 1
0
        public async ValueTask <OmniEqResponse <IEnumerable <OptionQuoteResponse> > > OptionChainsAsync(string symbol, DateTime expiry)
        {
            const string urlPattern = "latest/chains";
            var          qsb        = new QueryStringBuilder();

            qsb.Add("expiry", expiry.ToString("yyyy-MM-dd"));
            return(await _executor.SymbolExecuteAsync <IEnumerable <OptionQuoteResponse> >(urlPattern, symbol, qsb).ConfigureAwait(false));
        }
Ejemplo n.º 2
0
        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 <SymbolSummaryResponse> > > SummaryAsync(string symbol)
        {
            const string urlPattern = "symbols/summary";

            return(await _executor.SymbolExecuteAsync <IEnumerable <SymbolSummaryResponse> >(urlPattern, symbol).ConfigureAwait(false));
        }