Announcement

Collapse
No announcement yet.

I am out of ideas

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

  • I am out of ideas

    I have an application that should be able to track around 200 - 300 historical symbols at a tme. I tried just doing a request history for each of the symbols and then dealing with the data as it arrives. However, the amount of data received with just 20 open symbols is overwhelming and my application can't process it before more arrives thus crashing the API.
    So I took another approach and called for the history on a timed event, once the data was received, I released the symbol, processed the data and waited for my timer to kick in again. This time my application crashes the api when I release the symbol. Reading through your forum here, that is a known bug as well. As is the fact that even if this worked, I would eventually run out of my allocated symbols because of another bug.

    What do I do now?

    I want the user to be able to pick a list of symbols that the application will scan in the background and alert the user if a set a criteria are met in any of them. It seems that this isn't possible with the current API.
    There are a lot of bugs in the list and a lot of acknowlgement that they are there, is there any list of bugs and their approximate fix date that I could review?

    Thanks in advance

    Simon

  • #2
    I did the same thing but it works.

    I'm not saying the active x is great but what you describe can be done.

    In order to do it, I had to totally isolate each history call and when you release your history you should make an application.processmessages.

    The active x might continue to send you some messages for the symbol you just released. Calling application.processmessages (I don't know the name of the function in VB), you can make sure everything is clean before going on to the next symbol.

    Nick.

    Comment


    • #3
      Nick,
      Thanks for replying, it is good to know that it can be done, I thought I was fighting a losing battle!!. I assume you used the timer method that I mentioned ?

      Do you mean that you do a history request, wait for the data in the onreceived, event process it and then release the handle?


      I will get back on the case and try again.


      Thanks again.

      Simon

      Comment


      • #4
        I have been able to release a symbol without the application crashing with VB application in the SDK. SimonWoodfield, it seems like you are having trouble with the asynchronous nature of the DataManager. If you are retrieving historical data, time should not be an issue, so slow your application down to handle the requests one and a time.

        It sounds like what you want your user to may be accomplished by our Alerts and/or PowerScans.


        As I mentioned in a previous thread, I am spending more time attempting to recreate problems to give to our engineers than I am working on a resolution. Even though many people have issues, I have not received a single application that consistantly demonstrates the problem people complain about. There are many feature requests and mistakenly identified defects in this forum, but not many outstanding, certifiable defects that require a new release. Again, the easier it is to identify an issue, the easier it is to resolve, so your cooperation is necessary for progress to be made.

        There will be release notes with the new release documenting the problems that have been resolved.

        Comment


        • #5
          Robi,
          I am using history scans for intraday data so that I have a constant feed of data for each symbol. The idea is that when the symbol completes a bar, that I then analyse the data with our own techniques.

          What I am trying to do is allow the user to have many symbols and time frames selected (up to their maximum symbol count). These will feed the programme constantly and as soon as a bar is complete on any symbol, the programme will analyse that data and indicate whether the symbol is worth looking at in more detail.

          It may be that using the request history is not the best way to do it. I am only interested in the completed bar so if there was a way to just recieve data when a bar completes then that would be ideal. I don't believe this is possible so I have tried the technique that your demo programme uses and each time I recieve data, I check to see if there are more bars than the last time. However if there are more than 10 symbols being processed at once, the amount of data to process is greater than the application can handle. I then switched to calling for history on a timed basis and releasing the handle as soon as I have received the data. This causes the API to crash (and a crash report has been sent but no comment yet)

          Can you suggest a way that I can achieve what I am trying to do using your API?
          Is requesthistory the way to go?
          Can you suggest what may be causing the API to crash when I release the handle?
          If I am doing something wrong that is causing the API to crash then I will gladly fix that but I need some direction on what that may be.

          Thanks


          Simon

          Comment


          • #6
            What is the interval set for your bar? You may want to set a minimum interval of 5 minutes or so.

            If ReleaseSymbol(symbol) is causing a crash, use ClearSymbolCache() and ReleaseHistory (even ReleaseAllHistory)to clear all symbols, if you are processing one at a time.

            RequestHistory is the right call, and you should be waiting for an OnBarsChanged event to process new bars.

            There will be another sample of how to do something like this posted on the File Share soon.

            Comment


            • #7
              I found another thread that should help you out:

              http://forum.esignalcentral.com/show...ived#post14708

              You can use IsHistoryReady() to "control" your code, meaning, wait for it to return TRUE to determine when to process data.

              Comment


              • #8
                Robi,
                Thanks for the additional comments, I am now even more confused! and am greatly looking forward to a working example on the file share.
                I have tried the clearsymbolcache which doesn't appear on the list of available properties of the esignal api in .net. When I put it in the onbarsreceived, the programme stopped crashing but slowed down so much as to become unusable. When I put it in the timer event before calling for any symbol histories, my app fell over telling me there was no such thing as clearsymbolcache.
                Have you got any ideas what I could be doing wrong as my confusion and frustration are getting deeper by the day.


                Thanks

                Simon

                Comment


                • #9
                  Sounds like you are out of date

                  Simon,

                  I posted an updated winsig.tlb file on the File Sharing site:

                  here

                  This will have the new functions you are missing. Make sure you re-reference the API in your project after updating.

                  Keep me posted if this helps.

                  Comment


                  • #10
                    Robi,
                    I downloaded the tlb as suggested and using a timed version of the programme, tried again.
                    I have 9 symbols in a list, once every 20 seconds, I call for history for each of them. Once the history is received, in the onbarsreceived event, I now clearsymbolcache and then releasehistoryhandle. I am not doing any processing yet, just receiving the data and releasing the handle. The effect is that the esignal desktop stops responding and my application grinds to a halt.
                    Should the API be able to cope with this? again I am stuck as to what to try next. Any help appreciated

                    Simon

                    Comment


                    • #11
                      Robi,
                      I have now created a cut down version of my app with just the request history and the receive history functions running on a timed basis.
                      The timer when fired, clears any existing history handles
                      Then it goes through the list of symbols and does a history request against each.
                      The receivebars simulates the populating of a table but actually just loop through the received bars.
                      The timer 20 seconds later repeats the process.
                      The first time it runs, I recieve the required number of bars. But I get no more after this.
                      As I said the timer is clearing existing history request so the new call should be for new handles? and therefore should fire the receive bars again? Am I understanding this correctly? I have used the received bars specifically because I will only receive the bars once per call rather than in a constant stream.
                      I can send you the application if it would help.


                      Thanks


                      Simon

                      Comment

                      Working...
                      X