Thanks Progster, Your impression is correct: unfortunately interactive brokers does not supply historical advance decline data. Interestingly, I can plot the AD line no problem with Ninjatrader, but want to run tests and alerts using Amibroker.
--- In [email protected], "progster01" <progs...@...> wrote: > > Here is a bit of code to illustrate, using the IQFeed symbols for NYSE ADV > and DECL: > > > adv = Foreign( "IINA.Z", "Close" ); > dec = Foreign( "IIND.Z", "Close" ); > > ad = adv - dec ; > > Plot(ad,"adv", colorRed, styleLine ); > > > > --- In [email protected], "progster01" <progster@> wrote: > > > > Kevin, > > > > In general, if you want the intraday advance-decline line, you need to > > start with a) the intraday advance line, and b) the intraday decline line. > > > > As mentioned, GetRTDataForeign() returns a number (not a line), and does so > > in realtime (not historically). > > > > Probably your data provider offers symbols for ADV and DECL which will have > > the historical intraday quotes. > > > > I recommend you find those symbols, make sure you can plot them, and then > > work forward from there. Assuming those symbols are available, this > > approach will work, guaranteed. > > > > I get the impression that you are perhaps trying to capture realtime data > > and save it into a ticker array yourself, one "capture" per chart bar. > > I've never implemented this approach, and I don't even know if it can be > > done. Possibly one of the highly realtime-oriented members can comment on > > this. > > > > > > > > --- In [email protected], "kevinoversby" <kevinoversby@> wrote: > > > > > > OK, thanks. > > > > > > Today I tried storing the values in an array but still only get the last > > > number: > > > > > > adv = GetRTDataForeign("bid","AD-NYSE-NYSE-IND"); > > > dec = GetRTDataForeign("ask","AD-NYSE-NYSE-IND"); > > > > > > array[ BarCount -1 ] = adv-dec; > > > Plot(array,"array",1); > > > > > > AddToComposite( array, "~ADD2","C", atcFlagDefaults | > > > atcFlagEnableInIndicator ); > > > Plot(Foreign("~ADD2","C",1),"ADD2",1); > > > > > > Can anyone see the problem? > > > > > > Thanks > > > > > > Kevin > > > > > > > > > --- In [email protected], "progster01" <progster@> wrote: > > > > > > > > Hi. > > > > > > > > GetRTDataForeign() returns a number, not an array: > > > > > > > > SYNTAX GetRTDataForeign( ''fieldname'' , ''symbol'' ) > > > > RETURNS NUMBER > > > > > > > > hence the code is storing and plotting a number (a single value) rather > > > > than an array of differing values. > > > > > > > > > > > > > > > > --- In [email protected], "kevinoversby" <kevinoversby@> wrote: > > > > > > > > > > Has anyone managed to store intraday advance-decline data in a > > > > > composite? The code below only plots the last value. > > > > > > > > > > --- In [email protected], "kevinoversby" <kevinoversby@> > > > > > wrote: > > > > > > > > > > > > adv = GetRTDataForeign("bid","AD-NYSE-NYSE-IND"); > > > > > > dec = GetRTDataForeign("ask","AD-NYSE-NYSE-IND"); > > > > > > > > > > > > AddToComposite( adv-dec, "~ADD","C", atcFlagDefaults | > > > > > > atcFlagEnableInIndicator ); > > > > > > > > > > > > Plot(Foreign("~ADD","C",1),"AD",1); > > > > > > > > > > > > > > > > > > The above code plots the ONLY last value of AD-NYSE. However, I > > > > > > wanted to accumulate values in real-time in the composite - any > > > > > > hints on how to do it? > > > > > > > > > > > > Thanks > > > > > > > > > > > > Kevin > > > > > > > > > > > > > > > > > > > > >
