Announcement

Collapse
No announcement yet.

Can I prevent a Watchlist from receiving bars upon symbol reload/refresh?

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

  • Can I prevent a Watchlist from receiving bars upon symbol reload/refresh?

    Hello,
    Can I prevent a Watchlist which uses an EFS from reloading and sending all the bar data to the EFS whenever a symbol on the Watchlist is reloaded?
    Here's the scenario:
    - Let's say I have a Watchlist with a large number of symbols and a column with an associated EFS.
    - Let's say this EFS requires 1000 bars of data and uses a non-trivial computation to derive it's result which is displayed in the column associated with the symbol.
    - The EFS computation is relatively intensive in both time and resources.
    - Each time I scroll a symbol on and off the Watchlist the associated EFS is reloaded/recalculated.
    - What I'd like to do is the first time the EFS is executed to calculate the result for the symbol and store it using SetGlobalValue(theSymbol, theValue)
    - Then each subsequent time the EFS is executed I'd GetGlobalValue(theSymbol) and display it in the designated column.
    - The part I've described above I can do, and am doing, but it would be nice if I could signal the platform to not load and resend the data for a refresh thereby eliminating the associated overhead.

    This won't work with intraday data but I'm not concerned with that.
    So, is there a mechanism to tell the platform to not reload/resend bars upon a Watchlist refresh? I think probably not.

  • #2
    I'm also running into similar issues with this. One thing I've noticed (and verified via File logging within an efs study used within watchlists) is that watchlists continually reload and recalculate efs studies over and over and over even if one isn't looking at a given watchlist.

    I have efs studies in watchlists on entirely different pages logging that they're doing something and this is with setComputeOnClose() in use as well.

    eSignal, there's no need for a watchlist to continually recalculate something if nothing has changed so why does this happen? That to me seems like a bug in it's own right. Aside from that, there needs to be some kind of configurable caching so that people can scroll watchlists without underlying efs studies being triggered all the time.

    Comment


    • #3
      Okay, so per this document:



      Which states:

      Watch Lists create an EFS instance for each symbol in window. These instances can be created and deleted several times. In Watch Lists there are some unique behaviors for EFS execution:

      · Reloading EFS causes deletion and creation of each EFS instance for each symbol.
      · In Watch Lists, a new instance will be created for each hibernated symbol to populate initial values for columns and then it will be deleted.
      · When symbols fall into hibernation mode, the Watch List deletes each EFS instance while leaving the last calculated value displayed in the EFS columns.
      · An EFS instance will be created to recalculate columns values and then deleted after that every 5 minutes for hibernated symbol.
      The last one is a big problem. For one, if a watchlist doesn't have any change to the input series (meaning there was no price change, bid/ask/etc), there's zero reason to recalculate it because nothing will change. Secondly, for those of us with 1000s of entries on watchlists (some of which have entries which change infrequently [i.e. spreads]), this results in eSignal just burning cycles the entire time it's open - continuously calculating things in the background that aren't even being looked at. I get the idea that it does this so that data is still somewhat "fresh" by the time one does actually look at a given set of watchlist entries, but this is highly inefficient. Why not simply update only the rows for which new data has arrived and affected them or give the user a knob to change "every 5 minutes" to "every <n> minutes" instead? Another useful option would be "don't update unless reloaded" - meaning just show the last value computed until the user forces a reload.

      Comment


      • #4
        I'd like to see the EFS engine provide a callback to the Watchlist when it's about to send data and recalculate to give me a way of saying no. Something like if I've defined a method called, for example, AllowRecalculate(symbol) then it gets called by the EFS engine and if it doesn't return false then the EFS engine goes ahead and sends data allowing recalculation. If it returns false the I take responsibility for setting the displayed Watchlist value to what I want. For non-intraday charts I think this would be great. I have hundreds of symbols in a Watchlist with daily values and it just grinds and grinds recalculating values that will never change.

        Comment

        Working...
        X