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,5591818




        2,5591818





























            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

            Use pre created SQLite database for Android project in kotlin

            Darth Vader #20

            Ondo