Graham / Mike - I'd like to briefly offer a couple of suggestions about your comments regarding watchlists. But, first the bottom line. Adding the symbol to your watchlists in a two step (preferrably automated process) is the best way to save yourself some grief. There are several different ways to do this.
Mike - you were moving toward something I've used for a while but have never shown because of the special cases. I'd call it dynamic watchlsits. There is an easier way, though. You were modifying the watchlist as it was being processed. The easiest way to do this is simply detect the watchlist that is used in the filter and use CategoryWatchlist(). Because the entries are cached, the change is reflected in the AA Filter loop. BUT, the issue is this. The Filter loop processes issues in alpha order. SO, the one(s) that you add need to be after stocknum 0 in the collating sequence. I have used the technique in the past for app's that need to process dynamic watchlists. Now, I just use a two step process, as it is more straightforward. But since you went down that path, here's some test code to show the technique - OAB = CreateObject( "Broker.Application" ); OAA = OAB.Analysis; incwl = OAA.Filter( 0, "watchlist" ); ; The symbol added must be after the first symbol in alpha order CategoryAddSymbol( "SPY", categoryWatchlist, incwl ); Filter = Status( "lastbarinrange" ); AddColumn( C, "C", 8.2 ); Graham - I totally agree with your conclusion about keeping it simple. I think that the issue with your second suggestion about using a sector or industry is that the long-known issue with the Filter interface is the lack of an "OR" operation. If I understand what you were suggesting correctly, you'll find that multiple selections on the Include tab are an "AND" operation. The Exclude tab effectively implements an "AND NOT" operation. A simple "OR" interface has been long needed. P.S. This usage pattern of running a two step (AFL) job is so common, that I'd really like to see Tomasz add a RunNext() command for newer users that would execute a subsequent AFL after the current one completes. -- BruceR --- In [email protected], Graham <kavemanpe...@...> wrote: > > The simplest way is to just add the index symbol to your watchlist. > You will just tie yourself up into knots otherwise > If you use this watchlist for other items like trade system then just > include a condition eg. Buy = BuyConditions AND Name() != "^GSPC"; > > Another simple method would be to have the index symbol in its own > group, eg an unused sector/industry. Then in exploring your watchlist > you can add this sector to your analysis window filter. > > -- > Cheers > Graham Kav > AFL Writing Service > http://www.aflwriting.com > > > > 2009/6/9 Mike sfclimb...@...: > > You can cheat, explicitly doing what you are not supposed to do, by writing code to use the OLE interface to add your symbol to the watchlist as it is being iterated through, then use the API to remove your symbol at the end of the exploration. > > > > In my quick try, adding the symbol seemed to work e.g. assuming symbol AA and watchlist #2, add to watchlist on processing of first symbol. > > > > EnableScript("jscript"); > > > > if ( Status( "stocknum" ) == 0 ) > > { > > <% > > AB = new ActiveXObject("Broker.Application"); > > Stocks = AB.Stocks; > > Symbol = Stocks.Item("AA"); > > Symbol.WatchListBits |= 1 << 2; > > %> > > } > > > > I used JScript because AFL did not seem to natively support the << operator used in the example found in the user guide > > > > http://www.amibroker.com/guide/objects.html > > > > Trying to remove it afterwards was not quite working in my quick test. > > > > Seems like a lot of fuss. What about writing a script to drive the OLE interface to include the symbol in all the watchlists that you want before running your exploration. Then run your explorations. Then run a cleaning script to remove the symbol from the watchlists after you're done? > > > > Moving the code I provided above to an "add to watchlist" script would probably do the job. Repeat the line Symbol.WatchListBits |= 1 << ??? for each watchlist you want it to appear in. > > > > To remove from the watchlist try something along the lines of: > > > > <% > > AB = new ActiveXObject("Broker.Application"); > > Stocks = AB.Stocks; > > Symbol = Stocks.Item("AA"); > > Symbol.WatchListBits &= ~(1 << 2); > > %> > > > > None of the above is tested. And I have not spent the time to verify its validity or even the wisdom of the approach. But if you're determined to go down this road, it might help. > > > > Mike > > > > --- In [email protected], "gmorlosky" gmorlosky@ wrote: > >> > >> Understood... bummer..we really access to the Apply To: function. > >> > >> --- In [email protected], dingo <waledingo@> wrote: > >> > > >> > I already explained that to you in my msg above. Read it again. > >> > > >> > d > >> > > >> > > >> > On Mon, Jun 8, 2009 at 6:18 PM, gmorlosky <gmorlosky@> wrote: > >> > > >> > > If I do an _TRACE (Tickerlist) the addon ticker is there. > >> > > I don't understand why it shows up in the indicator, but not in an Explore > >> > > ??? > >> > > > >> > > > >> > > > >> > > --- In [email protected], dingo <waledingo@> wrote: > >> > > > > >> > > > by using the filter = 1 you're only going to get the tickers that are in > >> > > the > >> > > > watchlist - AB will only read from that list. > >> > > > > >> > > > Option 1. Use the watchlist and after the last ticker use the foreign on > >> > > a > >> > > > line by its self. I don't know if this will actually work. You'll have > >> > > to > >> > > > figure out a way to detect that the last ticker in the watch list had > >> > > been > >> > > > read by using the "Status" function. > >> > > > > >> > > > Option 2. Process the updated ticker list in a loop like you've done > >> > > > before. When doing this don't use the filter and watchlist - just > >> > > current > >> > > > ticker. > >> > > > > >> > > > d > >> > > > > >> > > > On Mon, Jun 8, 2009 at 5:13 PM, gmorlosky <gmorlosky@> wrote: > >> > > > > >> > > > > My test is simply to set my Filter = 1; (at the bottom of the code to > >> > > > > include all tickers in the output). I get all the watchlist tickers, > >> > > but, > >> > > > > not the additional ^GSPC ticker.... > >> > > > > Tried: > >> > > > > > >> > > > > Tickerlist = Tickerlist + ",^GSPC"; // no results (included comma) > >> > > > > tickerlist=tickerlist AND Foreign("^GSPC","C"); // AND errors > >> > > > > tickerlist=tickerlist + Foreign("^GSPC","C"); // no results > >> > > > > > >> > > > > Any more ideas and what is a skew ? > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > > >> > > > > --- In [email protected], "Anthony Faragasso" <ajf1111@> > >> > > wrote: > >> > > > > > > >> > > > > > TRY: > >> > > > > > > >> > > > > > tickerlist=tickerlist and foreign("^GSPC","C"); > >> > > > > > > >> > > > > > > >> > > > > > ----- Original Message ----- > >> > > > > > From: gmorlosky > >> > > > > > To: [email protected] > >> > > > > > Sent: Monday, June 08, 2009 3:40 PM > >> > > > > > Subject: [amibroker] Re: Code needed to always include a certain > >> > > ticker > >> > > > > in Explore ??? > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > I have used Foreign for plotting, but I don't want to manually add > >> > > it > >> > > > > for each column. > >> > > > > > I like the idea of an addon to the ticker list. I tried: > >> > > > > > Tickerlist = CategoryGetSymbols( Tickercategory, ListNum );// > >> > > existing > >> > > > > code > >> > > > > > Tickerlist = Tickerlist + "^GSPC"; // new code > >> > > > > > > >> > > > > > but still not picking up on the extra ticker of ^GSPC (S&P500). > >> > > > > > > >> > > > > > Any other ideas on properly concatenating a ticker to a list of > >> > > tickers > >> > > > > ??? > >> > > > > > > >> > > > > > --- In [email protected], "Anthony Faragasso" <ajf1111@> > >> > > > > wrote: > >> > > > > > > > >> > > > > > > you probably do something like: > >> > > > > > > > >> > > > > > > InWatchList( listno ) and "your ticker here"; > >> > > > > > > > >> > > > > > > Anthony > >> > > > > > > ----- Original Message ----- > >> > > > > > > From: gmorlosky > >> > > > > > > To: [email protected] > >> > > > > > > Sent: Monday, June 08, 2009 3:08 PM > >> > > > > > > Subject: [amibroker] Code needed to always include a certain > >> > > ticker > >> > > > > in Explore ??? > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > I would like to have a certain ticker (S&P500) always included as > >> > > one > >> > > > > of the tickers in the Explore. For example, I choose my watchlist that > >> > > has > >> > > > > ETFs only, BUT I want the explore to also have the S&P500 ticker info, > >> > > for > >> > > > > relevance. > >> > > > > > > I want to have the reference in the code, not include the S&P500 > >> > > > > ticker in the watchlist. > >> > > > > > > Thanks. >
