Announcement

Collapse
No announcement yet.

Retrieving EOD data for 6,000 symbols

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Retrieving EOD data for 6,000 symbols

    Hi, I'm new to the desktop API and I thought that before I throw myself into my project, I'd ask around to see if anybody has done what I'm trying to do, or if anybody can offer any advice.

    I have the EOD subscription. Once a day, I would like to download the EOD data for the lest day ONLY of 6,000 symbols. I appreciate that I need to wait quite a while after each exchange closes.

    Given that my symbol limit is 200, does anybody have any advice as to the best way to go about this?

    I'll be using the lates version of the API and C#.Net

    BTW - I have trawled 20 pages from the forum and also had a look at the sample code, but there doesn't appear to be a definitive answer to this specific issue.

    Many thanks in advance

    Arold

  • #2
    Hi Arold,

    Use esignal.XMLGetBasicQuote(sSymbol). Should take just a few seconds to get your EOD quotes. Do your search in the forum for XMLGetBasicQuote for more info.

    Good luck.

    Best,

    Larry Carhartt

    Comment


    • #3
      Hi masterdata, thanks for the reply, it's much appreciated.

      I'd sure love to use XMLGetBasicQuote but I can't get the darn thing to work! Maybe this function is only for people with the real-time subscription?

      I can get get_RequestHistory(), OnBarsReceived() and get_GetBar() to work (on the limited number of symbold that I've tried so far) but XMLGetBasicQuote appears to be out of my reach.

      I've tried calling it inside OnQuoteChanged() after calling RequestSymbol(). I've also tried calling it on its own but the resulting string is always empty.

      I should add that the symbols that I'm trying ARE working with get_RequestHistory()?

      Does anybody have any ideas?

      Thanks
      Arold

      Comment


      • #4
        I've just had a thought that this MAY be because the EOD data isn't ready yet. I remember reading somewhere that the XML requests use a seperate XML server to supply the data.

        It's interesting that I CAN get XMLGetBasicQuote() to work with $INDU. But, it doesn't return anything (apart from the XML placeholders) for "GOOG" and returns even less for "BOOT-LON" (Boots LTD in London).

        I'll give this a try after midnight (here in the UK) and see if that makes any difference.

        Cheers
        Arold

        Comment


        • #5
          Hi, maybe somebody from eSignal could give me definitive answer on this before I waste too much time trying to get XMLGetBasicQuote() to work. I'm just thinking that maybe as an EOD-only subscriber, I don't have access to this function?

          It's now 23:37 in the UK. The London markets closed 7 hours ago, the Australian markets closed god knows how many hours ago and the US markets closed about 2 hours ago.

          I've alwats been able to get the XML back for "$INDU". But, I'm not getting anything back for either "GOOG", "AGZ-ASX", or "BOOT-LON"

          Can anyone help?

          Arold



          Here's my code:

          Code:
          // A USA Stock
          string a = _eSignal.XMLGetBasicQuote("GOOG");
          
          // US Indices
          string b = _eSignal.XMLGetBasicQuote("$INDU");
          
          // An Australian Stock
          string c = _eSignal.XMLGetBasicQuote("AGZ-ASX");
          
          // A UK Stock
          string d = _eSignal.XMLGetBasicQuote("BOOT-LON");
          Here's the results that I'm getting:

          Code:
          ?a
          "<Quote>\n<Bid>0</Bid>\n<Ask>0</Ask>\n<Last>0</Last>\n<Open>0</Open>\n<High>0</High>\n<Low>0</Low>\n<Change>0</Change>\n<PrevClose>2.6311145030505e-308</PrevClose>\n<Volume>0</Volume>\n<TradeSize>-1</TradeSize>\n<AskSize>0</AskSize>\n<BidSize>0</BidSize>\n<DateTime>1132785287</DateTime>\n</Quote>\n"
          
          ?b
          "<Quote>\n<Bid>0</Bid>\n<Ask>0</Ask>\n<Last>10916.09</Last>\n<Open>10871.43</Open>\n<High>10950.75</High>\n<Low>10855.34</Low>\n<Change>44.66</Change>\n<PrevClose>10871.43</PrevClose>\n<Volume>236733920</Volume>\n<TradeSize>-1</TradeSize>\n<AskSize>0</AskSize>\n<BidSize>0</BidSize>\n<DateTime>1132782172</DateTime>\n</Quote>\n"
          
          
          ?c
          "<Quote>\n</Quote>\n"
          
          ?d
          "<Quote>\n</Quote>\n"
          Last edited by arold_ite; 11-23-2005, 04:41 PM.

          Comment


          • #6
            The plot thickens!

            I just did IsValidSymbol() on "AGZ-ASX" and "BOOT-LON" and they both return false!

            That's very weird because these are definitley valid symbols as can be verified because the eSignal GUI is showing me EOD quotes for both symbols.

            eSignal... HELP !!!

            Arold

            Comment


            • #7
              Make sure you use all CAPs for the symbol when you use
              IsValidSymbol.

              For AGZ-ASX and BOOT-LON, I was able to get IsValidSymbol
              return true and get the following results:

              <Quote>
              <Bid>606.5</Bid>
              <Ask>608</Ask>
              <Last>606.5</Last>
              <Open>615.5</Open>
              <High>615.5</High>
              <Low>606</Low>
              <Change>-4.5</Change>
              <PrevClose>611</PrevClose>
              <Volume>1827812</Volume>
              <TradeSize>6576</TradeSize>
              <AskSize>26000</AskSize>
              <BidSize>12302</BidSize>
              <DateTime>1132940940</DateTime>
              </Quote>

              <Quote>
              <Bid>0.26</Bid>
              <Ask>0.28</Ask>
              <Last>0.28</Last>
              <Open>0.28</Open>
              <High>0.28</High>
              <Low>0.28</Low>
              <Change>-0.005</Change>
              <PrevClose>0.285</PrevClose>
              <Volume>22854</Volume>
              <TradeSize>12854</TradeSize>
              <AskSize>479</AskSize>
              <BidSize>50000</BidSize>
              <DateTime>1132942390</DateTime>
              </Quote>

              What is your eSignal username?

              Comment


              • #8
                thanks for your reply AChan, it's much appreciated.

                My user name is: markmayes

                I still can't get any data back, and I was altready using all CAPS for the symbol when using IsValidSymbol()

                As I mentioned before, my subscription is EOD only, and I wouldn't mind betting that XMLGetBasicQuote() required a real-time subscription.

                Maybe you could confirm this and/or confirm why I can't get these functions to work.

                For what it's worth, I can see EOD data for these symbols in the eSignal GUI

                Thanks
                Arold

                Comment


                • #9
                  Yes, you are correct. Real time subscription is required to make this work.

                  Anthony

                  Comment


                  • #10
                    Thanks for clearing that up, at least I won't waste any more time trying to get that to work.

                    So, back to my original question...

                    Does anybody have any advice as to how I should go about getting 6,000 EOD symbols. Maybe you've tried this before and come across some 'gotchas' that I should avoid?

                    What I THINK I will do is call get_RequestHistory() in order to get 100-200 symbols at a time. Then, once I've retrieved all of these symbols (or I've timed out waiting for all of them), then I'll call releaseAllHistory() and then start on the next 100-200

                    Can anybody see anything wrong with this approach or maybe you can see something important that I'm missing?

                    Thanks
                    Arold

                    Comment


                    • #11
                      Hi Arold,

                      I have exactly the same problem. I am trying to get 10-day history
                      data for 2000 symbols. But I can only get 200 max per each run.

                      Did you try to use releaseAllHistory() after getting 200 (wait till it times out).

                      Please let me know your solution.

                      Thanks - Umit

                      Comment


                      • #12
                        I did more or less as I posted below.

                        My solution was to batch-up my requests into batches of 50. Then, when each batch of 50 has completed, I release all history and also clear the cache (can't remember the function name as I'm away from PC but it's a pretty obvious name).

                        One 'gotcha', which I believe is a bug in the API is that if I request the history for a ticker that isn't valid (for whatever reason, it may be an invalid ticker or it may be that no history is avaialble for that ticker), this ticker remains in the list of tickers that you are requesting even after you release the request history and clear the cache. Thankfully, my current list of invalid tickers is less than 200 so it hasn't stopped my app from running yet.

                        Hope that helps

                        Arold

                        Comment

                        Working...
                        X