Creating Real-Time Stock Quotes Using C#












0















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; }
}









share|improve this question


















  • 4





    This isn't really the exact kind of question SO is for. But one thing I'd like to point out is this is a real good way to flood your network with traffic and piss off the API host. You don't have any delay in between requests so you are going to be plastering this thing pretty good. Probably want to put in at least a couple second delay between requests.

    – Matti Price
    Nov 13 '18 at 19:57
















0















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; }
}









share|improve this question


















  • 4





    This isn't really the exact kind of question SO is for. But one thing I'd like to point out is this is a real good way to flood your network with traffic and piss off the API host. You don't have any delay in between requests so you are going to be plastering this thing pretty good. Probably want to put in at least a couple second delay between requests.

    – Matti Price
    Nov 13 '18 at 19:57














0












0








0








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; }
}









share|improve this question














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; }
}






c# polling stocks






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 13 '18 at 19:55









BeLEEverBeLEEver

12618




12618








  • 4





    This isn't really the exact kind of question SO is for. But one thing I'd like to point out is this is a real good way to flood your network with traffic and piss off the API host. You don't have any delay in between requests so you are going to be plastering this thing pretty good. Probably want to put in at least a couple second delay between requests.

    – Matti Price
    Nov 13 '18 at 19:57














  • 4





    This isn't really the exact kind of question SO is for. But one thing I'd like to point out is this is a real good way to flood your network with traffic and piss off the API host. You don't have any delay in between requests so you are going to be plastering this thing pretty good. Probably want to put in at least a couple second delay between requests.

    – Matti Price
    Nov 13 '18 at 19:57








4




4





This isn't really the exact kind of question SO is for. But one thing I'd like to point out is this is a real good way to flood your network with traffic and piss off the API host. You don't have any delay in between requests so you are going to be plastering this thing pretty good. Probably want to put in at least a couple second delay between requests.

– Matti Price
Nov 13 '18 at 19:57





This isn't really the exact kind of question SO is for. But one thing I'd like to point out is this is a real good way to flood your network with traffic and piss off the API host. You don't have any delay in between requests so you are going to be plastering this thing pretty good. Probably want to put in at least a couple second delay between requests.

– Matti Price
Nov 13 '18 at 19:57












1 Answer
1






active

oldest

votes


















1














You might want to see if they have a live quote feed you can just subscribe to and watch.



It's astonishingly inefficient to keep asking for quotes for specific stocks when you don't know if anything has actually changed.



You'll be asking when nothing has changed and delaying unnecessarily when things have changed.






share|improve this answer























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53288553%2fcreating-real-time-stock-quotes-using-c-sharp%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    1














    You might want to see if they have a live quote feed you can just subscribe to and watch.



    It's astonishingly inefficient to keep asking for quotes for specific stocks when you don't know if anything has actually changed.



    You'll be asking when nothing has changed and delaying unnecessarily when things have changed.






    share|improve this answer




























      1














      You might want to see if they have a live quote feed you can just subscribe to and watch.



      It's astonishingly inefficient to keep asking for quotes for specific stocks when you don't know if anything has actually changed.



      You'll be asking when nothing has changed and delaying unnecessarily when things have changed.






      share|improve this answer


























        1












        1








        1







        You might want to see if they have a live quote feed you can just subscribe to and watch.



        It's astonishingly inefficient to keep asking for quotes for specific stocks when you don't know if anything has actually changed.



        You'll be asking when nothing has changed and delaying unnecessarily when things have changed.






        share|improve this answer













        You might want to see if they have a live quote feed you can just subscribe to and watch.



        It's astonishingly inefficient to keep asking for quotes for specific stocks when you don't know if anything has actually changed.



        You'll be asking when nothing has changed and delaying unnecessarily when things have changed.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 13 '18 at 19:59









        Terry CarmenTerry Carmen

        2,5391818




        2,5391818






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53288553%2fcreating-real-time-stock-quotes-using-c-sharp%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Xamarin.iOS Cant Deploy on Iphone

            Glorious Revolution

            Dulmage-Mendelsohn matrix decomposition in Python