Kurasake --
I don't use IQ feed, but IB instead. IB has a limit on 100tickers at a time. I can shut down the AB/IB connection. Then run an explore on the entire data base. Then run my program with Filter = InWatchList(WLnum), where there are less than 100 stocks in WLnum. It takes quite a while to backfill all in the watchlist. But once that is done, I can shut down AB/IB connection and do another explore including the newly downloaded stocks.

You might try the same with IQfeed.
-- Keith

On 5/18/2010 15:39, kurasake wrote:



Hi Tomasz

Thank you for your response. I sincerely appreciate the time you take to monitor these forums and answer questions.

What I'm paying IQFeed for is real time data for 500 _Simultaneous_ symbol access. I am allowed to view as many symbols as I want so long as I don't view more than 500 at the same time. (I've confirmed this with IQFeed support). So, if I were to add 500 symbols to the Realtime Quote window, I wouldn't expect anything more. But when I run an Exploration, I'm not asking for more than 500 _simultaneous_ symbol updates at a time.

As I understand it, an Exploration and Automatic Scan in AB is not _continually_ requesting data for 500 symbols simultaneously even after it's done with the exploration. Rather, (again, as I understand it), an Exploration and Automatic Scan goes through the list of symbols sequentially, requests data from IQFeed one at a time, and then goes on to the next symbol.

So, once an Exploration is done backfilling a symbol, it's no longer requesting or getting data for that symbol. That means the whole _simultaneous_ and _realtime_ part that I'm paying for is being wasted since I'm _not_ actually updating data for 500 symbols with an Exploration. In effect, an Exploration takes a "snapshot" of the symbol's data and that's it. As far as AB is concerned, until another Exploration is run or the user selects another symbol or the Realtime Quote window is used to monitor symbols etc it really has no need for IQFeed except for the currently selected symbol.

Clearly the IQFeed client provides the means for users to "look" at as many symbols as they want as long as it's not 500 symbols viewed _simultaneously_. And as IQFeed support personnel confirms, I'm well within my rights to view as many symbols as I want so long as it's not more than 500 at the same time. So, whether or not I exceed my 500 symbol subscription limit depends entirely on the stock investment programs to release each slot/ resource when it's done using it.

If I open up the IQFeed Client, it will display how many symbols are currently being tracked/monitored by IQFeed. And if I go into QuoteTracker and remove symbols from the list of symbols I want to monitor, the IQFeed Client will reflect that change and show that I've freed up those slots and that I'm now able to replace those symbols with new ones. However in AB, once I select a symbol, it holds on to an IQFeed "slot" even if I _delete_ the symbol from the AB database. So in this case, AB is still holding on to the IQFeed resource even though it can not possibly have any use for that resource. ( Or it may not "technically" be AB that's holding on to the resource but it clearly hasn't told IQFeed to free up that resource, so the end result is the same.)

Using another example, let's say I run an exploration on 500 symbols in AB. After the Exploration runs, that means all 500 "slots" that I'm contracted for are filled up but are _NOT_ actually being used for simultaneous realtime updates. All 500 slots are in effect, used but dormant. Now, lets say in this state, I decide to run QuoteTracker on the same machine using the same IQFeed data source. Since AB is still holding on to the 500 slots, QuoteTracker would be unable to get any data, _EVEN THOUGH_ AB is not actually actively getting real time data for any symbol (except the currently selected).

I've confirmed with IQFeed support that I'm allowed to connect as many programs to the IQFeed client as I want. This makes each "slot" in IQFeed is a limited and _shared_ resource. If an Exploration in AB ran through 500 symbols but didn't release those IQFeed slots, this would be analogous to a program using up all the memory and disk drive space so other programs are unable to run even though it's not really using any of it . So, if AB no longer uses a "slot", why not release it after each use? I think this is reasonable?

I can appreciate that AB is too fast for IQFeed to handle. I think it's fantastic that you've made AB so fast. But with the backfill option in an Exploration turned on, I would think it would be better if there were a level of flow-control/handshaking between AB and IQFeed so that they "play nicely" with each other.

If one of the main functions of any stock analysis/monitoring program is to provide accurate data to the user then I would think that AB should wait for IQFeed to "catch up" instead of continuing on and leaving IQFeed "behind" since we know that if AB keeps going for a large number of symbols, there's going to be corrupt data appearing in AB. The two programs must work nicely together in order to produce the desired result. The role of IQFeed is to service requests for data and to provide that data. The role of AB is to make requests for data from IQFeed and display and analyze that data accurately. In this case, IQFeed is clearly the bottleneck but as you mention, the data provider is always going to be the bottleneck, even if I switched to a faster provider. And clearly corrupt data has a major effect on things like buy/sell triggers and is an undesired problem. IQFeed, however slow, is still the data provider and AB is reliant on data from the d ata provider. Everything should work fine if there's proper communication/flow control between the two.

This would be somewhat analogous to a computer with a near infinitely fast CPU working with a very, very slow disk drive and a very, very slow system bus and very, very slow memory etc. No matter how fast the CPU is, it must still wait for all the other components in order for it to produce the correct result. It's unfortunate that everything else isn't fast enough for the CPU but the CPU can not just go off and keep going on it's own just because everything else is too slow. I think this is a reasonable point as well?

I think it would be fair if... :

- AB released each IQFeed slot/resource as soon as it's done using it, since each IQFeed slot is a shared resource. - an Exploration waited for IQFeed (or any data provider) to "catch up" so that data corruption doesn't occur. Or perhaps have a switch that let's the user choose between having AB wait for the data provider or to just keep going. - or perhaps as another option, an ability for the user to release unused IQFeed resources via AFL/OLE etc... Though I would think that to ensure that the correct data is always displayed, AB should wait for the data provider to catch up.

Otherwise, the user would need to change stock trading behavior to suit the limitations of the program. Constant symbol maintenance and tracking in AB would be a nightmare. This is especially true if for example I'm using up a lot of IQFeed slots in QuoteTracker and the available "free" slots left for Amibroker is far less then 500. What if I'm already tracking 499 symbols in QuoteTracker? Should this condition cause AB to start displaying corrupt data on Explorations on 10, 20, 50 symbols?

Clearly these are limitations that don't need to exist (ie: there's nothing technically preventing AB from working well with IQFeed). Nor would I think that this is the type of behavior you would want in your program.

I've talked over the 500 symbol limit issue with IQFeed Support and confirmed that I'm not asking for anything out of bounds . I'm not sure if my explanation were clear (I hope they were) but I think what I'm asking for is very reasonable and expected behavior for a stock monitoring/investing/trading program.

Thank you for your time.

With respect and best regards.

--- In [email protected] <mailto:amibroker%40yahoogroups.com>, Tomasz Janeczko <gro...@...> wrote:
>
> Hello,
>
> Simply speaking: you paid for 500 symbols and you receive 500 symbols.
> It is that simple.
> If you buy Fiat do not expect it to be Bugatti Veyron.
>
> a) you are not allowed to exceed your subscription limits with IQFeed.
> IQFeed simply won't allow you to get data for more symbols at the same time > (subscription to any more symbols will simply fail and you won't get data)
>
> b) if you exceed the subscription limit AmiBroker will unsubscribe
> oldest symbol
> (the one that was accessed first) and subscribe new and will request
> backfill,
> BUT .... because the backfill from IQFeed is SLOW, IQFeed is literally
> unable to
> keep up with exploration or any automatic scan.
> IQFeed (and many other RT sources) takes many seconds to backfill ONE symbol
> (as IQFeed was designed to display CHARTS, not to perform whole market
> scans)
> and is designed with "manual", i.e. *SLOW* operation in mind (so you
> manually select the chart
> and watch it) - the way how QuoteTracker works - MANUALLY (slowly)
> adding/removing symbols
> instead of running automated scans on huge portfolios.
> AmiBroker on the other hand is able to scan thousands of symbols in one
> second, therefore
> IQFeed is not able to deliver data fast enough (via backfill) if you exceed > subscription limits. Becuase of the time IQFeed needs to do the backfill
> (if you exceed subscription counts),
> you may end up with data holes (if you exceed the subscription limit).
>
> Why do you expect receiving more data that you paid for ?
>
> Best regards,
> Tomasz Janeczko
> amibroker.com
>
> On 2010-05-14 22:12, kurasake wrote:
> > I'm running AB 5.30pro using IQFeed as my RT data feed on a Core i7 w/4gig ram.
> >
> > In a different post, I'd been describing a problem I've been having when performing an exploration on a large number of symbols. The problem was that if I scanned too many symbols, I would start to get bad data appearing in AB.
> >
> > After some feedback, it appears that this problem occurs when I've scanned more symbols then what my contract with IQFeed allows. In other words, my contract with IQFeed allows me to monitor 500 symbols simultaneously at a time and if I exceed that 500 symbol limit, I would start getting bad data in AB. I haven't confirmed this "scientifically" yet but the problem does seem to happen after I've scanned somewhere in the neighborhood over 500 symbols.
> >
> > The question I have though is if I've only "looked" at a symbol in AB and I'm not actively monitoring it, like say in the Realtime Quote window, should AB still be holding on to an IQFeed "slot"/resource/token? I would think that if I'm not actively collecting data on a symbol and I've only "looked" at it for a brief moment, that AB should release this slot back to IQFeed. Or is AB still collecting data on that symbol even if it's not in the Realtime Quote window?
> >
> > If I open up the IQFeed Connection Manager, I can see how many symbols IQFeed is "tracking" for me. Every time I click on a symbol in AB and it backfills that symbol with data, the Number of Symbols counter in the IQFeed Connection Manager goes up. The counter however, never appers to go down unless I either break the connection from AB to the IQFeed client or I exit from AB.
> >
> > This puts a rather strong restriction on how I use AB as I can only scan/explore/look at 500 symbols in a single AB session and IQFeed thinks I'm using up my entire allotment when I'm not.
> >
> > Incidentally, if I run QuoteTracker on the same machine and have it connect to the same IQFeed client, it will "release" an IQFeed slot for every symbol I remove from the active QT portfolio. So it should be possible to do this in AB as well.
> >
> > If I perform a Reconnect or Shutdown from AB by right clicking in the status bar where it displays the client connection status, the IQFeed symbol count drops back down to what it was before I started AB. Does anyone know if there's any way to do this "reset"/release using COM objects or other programming means? Maybe I can write a vb script or something that keeps calling this obj method? Or is this a feature request that I need to place with AB?
> >
> > Many thanks.
> >
> >
> >
> > ------------------------------------
> >
> > **** IMPORTANT PLEASE READ ****
> > This group is for the discussion between users only.
> > This is *NOT* technical support channel.
> >
> > TO GET TECHNICAL SUPPORT send an e-mail directly to
> > SUPPORT {at} amibroker.com
> >
> > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> > http://www.amibroker.com/feedback/
> > (submissions sent via other channels won't be considered)
> >
> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> >
> > Yahoo! Groups Links
> >
> >
> >
> >
> >
>


Reply via email to