I'm creating a realtime stock quotes application that uses the IEX API (https://iextrading.com/developer/docs/) to get real time infomration. I'm wondering if there is a better way to poll this URL than what I currently have.
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));
}
}
}
}
}
What I currently have works fine, I'm just wondering if there is a better/more effecient way to do this.
My Quote Class
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; }
}