使用C#创建实时股票报价

时间:2018-11-13 19:55:19

标签: c# polling stocks

我正在创建一个使用IEX API(https://iextrading.com/developer/docs/)来获取实时信息的实时股票报价应用程序。我想知道是否有比我目前更好的方法来轮询此URL。

string[] Symbols = { "AAPL", "AMD" };

var Url = string.Format("https://api.iextrading.com/1.0/stock/market/batch?symbols={0}&types=quote", string.Join(",", Symbols));

        using (var client = new HttpClient())
        {
            while (true)
            {
                using (var request = new HttpRequestMessage(HttpMethod.Get, Url))
                {

                    using (var response = await client.SendAsync(request))
                    {
                        var stream = await response.Content.ReadAsStringAsync();

                        if (response.IsSuccessStatusCode)
                        {
                            var r = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, Quote>>>(stream);
                            Console.WriteLine(JsonConvert.SerializeObject(r[Symbols[0]]["quote"].latestPrice));

                        }
                    }
                }
            }
        }

我目前所拥有的一切都很好,我只是想知道是否有更好/更有效的方式来做到这一点。

我的报价类别

public class Quote
{
    public string symbol { get; set; }
    public string companyName { get; set; }
    public string primaryExchange { get; set; }
    public string sector { get; set; }
    public string calculationPrice { get; set; }
    public decimal? open { get; set; }
    public decimal? openTime { get; set; }
    public decimal? close { get; set; }
    public decimal? closeTime { get; set; }
    public decimal? high { get; set; }
    public decimal? low { get; set; }
    public decimal? latestPrice { get; set; }
    public string latestSource { get; set; }
    public string latestTime { get; set; }
    public decimal? latestUpdate { get; set; }
    public decimal? latestVolume { get; set; }
    public decimal? iexRealtimePrice { get; set; }
    public decimal? iexRealtimeSize { get; set; }
    public decimal? iexLastUpdated { get; set; }
    public decimal? delayedPrice { get; set; }
    public decimal? delayedPriceTime { get; set; }
    public decimal? extendedPrice { get; set; }
    public decimal? extendedChange { get; set; }
    public decimal? extendedChangePercent { get; set; }
    public decimal? extendedPriceTime { get; set; }
    public decimal? previousClose { get; set; }
    public decimal? change { get; set; }
    public decimal? changePercent { get; set; }
    public decimal? iexMarketPercent { get; set; }
    public decimal? iexVolume { get; set; }
    public decimal? avgTotalVolume { get; set; }
    public decimal? iexBidPrice { get; set; }
    public decimal? iexBidSize { get; set; }
    public decimal? iexAskPrice { get; set; }
    public decimal? iexAskSize { get; set; }
    public decimal? marketCap { get; set; }
    public decimal? peRatio { get; set; }
    public decimal? week52High { get; set; }
    public decimal? week52Low { get; set; }
    public decimal? ytdChange { get; set; }
}

1 个答案:

答案 0 :(得分:1)

您可能想看看他们是否有实时报价供稿,您可以订阅并观看。

在您不知道实际是否有任何变化的情况下,不断询问特定股票的报价效率非常低。

您将要询问什么都没有改变,而当事情改变时不必要地延迟。