Announcement

Collapse
No announcement yet.

Duplicate quotes using OnQuoteChanged/GetBasicQuote

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

  • Duplicate quotes using OnQuoteChanged/GetBasicQuote

    Hello,

    I am using the OnQuoteChanged event handler and calling eSignal to get the quote using GetBasicQuote. I have noticed that quite frequently I am reading the same quote more than once, meaning that when eSignal sends an event update to my OnQuoteChanged handler, and I read the quote, it doesn't appear to be different from the last quote.

    Here is a snippet of trace data for ES H6:

    [13:14:48.875]last=1272, bid=1272, ask=1272.25, lastSize=1, bidSize=390, askSize=439
    [13:14:49.031]last=1272, bid=1272, ask=1272.25, lastSize=1, bidSize=390, askSize=440
    [13:14:49.046]Duplicate QuoteRecord for symbol=ES H6
    [13:14:49.046]last=1272, bid=1272, ask=1272.25, lastSize=1, bidSize=388, askSize=440
    [13:14:49.062]last=1272, bid=1272, ask=1272.25, lastSize=1, bidSize=388, askSize=437
    [13:14:49.078]Duplicate QuoteRecord for symbol=ES H6
    [13:14:49.234]last=1272, bid=1272, ask=1272.25, lastSize=1, bidSize=408, askSize=423
    [13:14:49.250]last=1272.25, bid=1272, ask=1272.25, lastSize=1, bidSize=408, askSize=423
    [13:14:49.250]last=1272.25, bid=1272, ask=1272.25, lastSize=1, bidSize=408, askSize=422
    [13:14:49.265]last=1272, bid=1272, ask=1272.25, lastSize=2, bidSize=410, askSize=422
    [13:14:49.281]Duplicate QuoteRecord for symbol=ES H6


    Notice how I have three duplicate quotes in only 25 hundredths of a second. I am NOT calling GetBasicQuote multiple times per event. I am simply calling GetBasicQuote when an update event comes in from eSignal.

    It appears that eSignal is sending events via OnQuoteChanged even when the quote hasn't actually changed. This is worrisome as the eSignal ActiveX COM component has stress limitations [it fails when overaccessed], so it would be more efficient if it didn't send these phantom events through OnQuoteChanged.

    I can trap the duplicate quotes (as shown in my trace above), but I'm still required to call eSignal to get the quote, just to see if it's a new quote or a duplicate.

    Is there a way around this? Is eSignal operations/programming staff aware of this issue?

    Any help/feedback is appreciated.

  • #2
    Additional note:

    This problem appears not only with futures but with stocks as well. I have a basket of stocks I'm looking at, and I noticed that the more active stocks have more multiple successive duplicate quotes. Here's a snippet of one second today:

    [13:52:25.109] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.140] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.140] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.140] Duplicate QuoteRecord for symbol=ES H6
    [13:52:25.171] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.187] Duplicate QuoteRecord for symbol=EBAY
    [13:52:25.187] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.203] Duplicate QuoteRecord for symbol=S
    [13:52:25.218] Duplicate QuoteRecord for symbol=QCOM
    [13:52:25.234] Duplicate QuoteRecord for symbol=PG
    [13:52:25.359] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.359] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.421] Duplicate QuoteRecord for symbol=INTC
    [13:52:25.421] Duplicate QuoteRecord for symbol=EBAY
    [13:52:25.468] Duplicate QuoteRecord for symbol=YHOO
    [13:52:25.500] Duplicate QuoteRecord for symbol=INTC
    [13:52:25.515] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.515] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.531] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.531] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.531] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.562] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.578] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.640] Duplicate QuoteRecord for symbol=INTC
    [13:52:25.781] Duplicate QuoteRecord for symbol=QCOM
    [13:52:25.796] Duplicate QuoteRecord for symbol=INTC
    [13:52:25.812] Duplicate QuoteRecord for symbol=MSFT
    [13:52:25.828] Duplicate QuoteRecord for symbol=DELL
    [13:52:25.859] Duplicate QuoteRecord for symbol=AAPL
    [13:52:25.890] Duplicate QuoteRecord for symbol=MSFT
    [13:52:25.921] Duplicate QuoteRecord for symbol=YHOO
    [13:52:25.921] Duplicate QuoteRecord for symbol=YHOO
    [13:52:25.921] Duplicate QuoteRecord for symbol=QCOM
    [13:52:25.984] Duplicate QuoteRecord for symbol=YHOO
    [13:52:25.984] Duplicate QuoteRecord for symbol=AAPL


    Immediately I see that AAPL has a lot of successive quotes, and it makes me consider a possible cause of the problem:

    Perhaps eSignal fires OnQuoteChanged when the full market depth quote changes, not just the inside market or a trades occurs. For example, perhaps it fires the event if a bid below the best bid (or an ask above the best ask) changes size.

    Since GetBasicQuote only returns the inside market and last trade price & size, we can't see that the outside market has changed, and it appears as a duplicate quote.

    For most API users' purposes, we're only interested in the inside market and the last trade price & size. It's inefficient to have to call GetBasicQuote in such cases.

    eSignal: is this hypothesis true?

    If this is truly why OnQuoteChange is firing in such cases, then is there a way to programmatically tell the API that we're only interested in the inside market? If not, then is there another solution?

    Comment


    • #3
      I noticed the same thing

      I noticed the same thing (fake double prints) in both my real time quote and Time And Sale quote. Not always, but it comes and goes.

      I sometimes have Time and Sale windows open in esignal application. I saw that happened too. One symbol I can remember is STJ. I went to another computer, brought up Time and Sale window for STJ, and it did NOT happen in that computer.

      Hope this help to solve the problem.

      Comment


      • #4
        eSignal,

        It's been four days since I posted this issue. (I also sent an email to [email protected] on 2/13.) Please let me know that you have acknowledged this issue by either posting a response here or replying to my email.

        Thanks

        Comment


        • #5
          Hi axiswest1,

          I looked at the sample you submitted side by side with a time & sales window in eSignal for the same date and time. It looks like these are not duplicate records, but in fact trades which executed at the same bid/ask and related sizes as the previous quote update. See the image attached for further explanation.

          Using a getBasicQuote, there is no way to differentiate between a bid, ask or last update. You can, however, do this with a time & sales request. If you are only interested in seeing quotes (or if you want to flag that an update is a trade, rather than a bid/ask change), recode to use the Time & Sales Filter detailed on page 4-7 of the Desktop API documentation. You can then use DataType flag to determine what kind of update you are getting.

          If you are still having difficulties, please email the Developer Support Team.

          Thanks,
          Starr
          eSignal Developer Support
          Attached Files

          Comment

          Working...
          X