Thanks Graham - I just started a new topic with the working code in place. I will review all of this.
--- In [email protected], Graham <kavemanpe...@...> wrote: > > These comments assume I am correct in my interpretation of the questions > > When using array bar identifiers like [barcount-1] you would normally > need to turn off the fastAFL in the chart, using setbarsrequired > function > > In your original code you had Buy[i] where i was defined as the list > number of a string of symbols. This is not correct usage because > buy[i] would automatically refer to the bar i of the array. > > Another small item is that Buy would either have values of 0 or 1, so > Buy>=0 would always be true > > for this type of situation would probably be better using this type of > method, although I am not sure what exactly you want plotted > Plot( iif( buy, 100 * ( fc - fc[ fvb ] )/ fc[ fvb ], null ), symbol, > colorLightOrange + ( (2*i) % 15 ), styleLine ); > > I am not clear on where you have defined the variables ROCt ROCc RSIt > RSIc. If these are not using foreign functions to calculate them, > then they will all be based on the underlying selected symbol > > -- > Cheers > Graham Kav > AFL Writing Service > http://www.aflwriting.com > > > > 2009/5/9 Mike <sfclimb...@...>: > > I see no reason why your function should be taking an argument named R14. > > You never use that value, but rather immediately clobber it. > > > > Also, there is no need for an IIF here. Any non zero value is true. And > > your expression evaluates to a boolean already (1 vs. 0). Just return the > > last element as is: > > > > function MyPlot(fc) { > > R14 = (RSIa(fc, 14) > 50); > > return R14[BarCount - 1]; > > } > > > > Mike > > > > --- In [email protected], "gmorlosky" <gmorlosky@> wrote: > >> > >> I got it. I was not using RSIa...here is what I replaced your ShouldPlot > >> with, and it works: > >> > >> function MyPlot(fc,R14) > >> { > >> R14 = IIf(RSIa(fc,14) > 50,1,-1); > >> return (R14[BarCount -1] >= 1 ); > >> } > >> > >> function ShouldPlot(price, fvb) > >> { > >> return (fc[fvb] >= 35); > >> } > >> > >> --- In [email protected], "gmorlosky" <gmorlosky@> wrote: > >> > > >> > I spoke a little too soon. It does work well with anything associated > >> > with the last bar (i.e. close, open, etc.), BUT what I need is reference > >> > to something like RSI(14) > 50, which it isn't working (error 6, error > >> > 4, etc.) no matter how I try to code it. Any thoughts ??? > >> > > >> > > >> > --- In [email protected], "tuzo_wilson" <j.tuzo.wilson@> wrote: > >> > > > >> > > --- In [email protected], "gmorlosky" <gmorlosky@> wrote: > >> > > > > >> > > > Thanks Tuzo (and Mike), but I can't get it to work yet. I used fc >= > >> > > > 500; as my logic to represent the ShouldPlot. I get all plots, even > >> > > > though each stock is under $500. I tried various combination of > >> > > > price to get a partial group of plots, but it's always all of them. > >> > > > > >> > > > Any other ideas on how to make each "foreign" the "active" for each > >> > > > plotting ??? > >> > > > >> > > ShouldPlot is hardcoded to return true right now. Change it to only > >> > > return true when your condition is true. > >> > > > >> > > In this case it will only display the symbol if the closing price of > >> > > the first bar visible is greater than 500. Note that you will also > >> > > have to also change the call to ShouldPlot to pass in the first > >> > > visible bar i.e. if (ShouldPlot(fc,fvb)) > >> > > > >> > > function ShouldPlot(price, fvb) > >> > > { > >> > > return (fc[fvb] >= 30); > >> > > } > >> > > > >> > > > >> > > Tuzo > >> > > > >> > > > _SECTION_BEGIN("RelativePerformance"); > >> > > > fc = ""; > >> > > > function ShouldPlot(price, fvb) > >> > > > { > >> > > > return (fc[fvb] >= 30); > >> > > > } > >> > > > function GetWatchListSymbols(watchListName) > >> > > > { > >> > > > wlNumber = CategoryFind(watchListName, categoryWatchlist ); > >> > > > return CategoryGetSymbols(categoryWatchlist, wlNumber ); > >> > > > } > >> > > > SetChartOptions(0,chartShowArrows|chartShowDates); > >> > > > WatchListName = ParamStr("Watch List Name","RelStrength"); // > >> > > > replace with a valid watchlist > >> > > > SymbolList = GetWatchListSymbols(WatchListName); > >> > > > fvb = Status("firstvisiblebar"); > >> > > > ColorCode = colorBrown; > >> > > > for( i = 0; ( sym = StrExtract( SymbolList, i ) ) != ""; i++ ) > >> > > > { > >> > > > fc = Foreign(sym, "Close"); > >> > > > if (ShouldPlot(fc,fvb)) > >> > > > { > >> > > > ColorCode++; > >> > > > // wrap color codes if too many > >> > > > if (ColorCode == colorTan) > >> > > > { > >> > > > ColorCode = colorBrown; > >> > > > } > >> > > > Plot( 100 * ( fc - fc[ fvb ] )/ fc[ fvb ], sym, ColorCode, > >> > > > styleLine); > >> > > > } > >> > > > } > >> > > > _N( Title = "{{NAME}} {{DATE}} - Relative Performance [%]: > >> > > > {{VALUES}}" ); > >> > > > _SECTION_END(); > >> > > > > >> > > > > >> > > > > >> > > > --- In [email protected], "tuzo_wilson" <j.tuzo.wilson@> > >> > > > wrote: > >> > > > > > >> > > > > > >> > > > > --- In [email protected], "gmorlosky" <gmorlosky@> wrote: > >> > > > > > > >> > > > > > Okay - I have gone over the array info and I think I'm doing this > >> > > > > right, But here it is step by step; > >> > > > > > >> > > > > That's a bit more organized. :) > >> > > > > > >> > > > > The only question I have is around step 4. How do you know if a > >> > > > > ticker > >> > > > > is a "Buy". Is it if it meets some conditions for the visible > >> > > > > bars or > >> > > > > is it for all time or some other date/time range or something > >> > > > > else? If > >> > > > > it is on visible bars, the behavior might be a bit odd because as > >> > > > > you > >> > > > > scroll symbols could be appearing and disappearing. > >> > > > > > >> > > > > Here's something that will take a watch list as a parameter and > >> > > > > plot the > >> > > > > relative performance of all symbols in the watch list if it meets a > >> > > > > criteria. Just modify ShouldPlot to return true or false > >> > > > > depending on > >> > > > > your specific logic. > >> > > > > > >> > > > > > >> > > > > > >> > > > > _SECTION_BEGIN("RelativePerformance"); > >> > > > > > >> > > > > > >> > > > > > >> > > > > function ShouldPlot(price) > >> > > > > > >> > > > > { > >> > > > > > >> > > > > //TODO: Implement logic > >> > > > > > >> > > > > return True; > >> > > > > > >> > > > > } > >> > > > > > >> > > > > > >> > > > > > >> > > > > function GetWatchListSymbols(watchListName) > >> > > > > > >> > > > > { > >> > > > > > >> > > > > wlNumber = CategoryFind(watchListName, categoryWatchlist ); > >> > > > > > >> > > > > return CategoryGetSymbols(categoryWatchlist, wlNumber ); > >> > > > > > >> > > > > } > >> > > > > > >> > > > > > >> > > > > > >> > > > > SetChartOptions(0,chartShowArrows|chartShowDates); > >> > > > > > >> > > > > > >> > > > > > >> > > > > WatchListName = ParamStr("Watch List Name","RelStrength"); > >> > > > > > >> > > > > > >> > > > > > >> > > > > SymbolList = GetWatchListSymbols(WatchListName); > >> > > > > > >> > > > > > >> > > > > > >> > > > > fvb = Status("firstvisiblebar"); > >> > > > > > >> > > > > > >> > > > > > >> > > > > ColorCode = colorBrown; > >> > > > > > >> > > > > > >> > > > > > >> > > > > for( i = 0; ( sym = StrExtract( SymbolList, i ) ) != ""; i++ ) > >> > > > > > >> > > > > { > >> > > > > > >> > > > > fc = Foreign(sym, "Close"); > >> > > > > > >> > > > > > >> > > > > > >> > > > > if (ShouldPlot(fc)) > >> > > > > > >> > > > > { > >> > > > > > >> > > > > ColorCode++; > >> > > > > > >> > > > > > >> > > > > > >> > > > > // wrap color codes if too many > >> > > > > > >> > > > > if (ColorCode == colorTan) > >> > > > > > >> > > > > { > >> > > > > > >> > > > > ColorCode = colorBrown; > >> > > > > > >> > > > > } > >> > > > > > >> > > > > > >> > > > > > >> > > > > Plot( 100 * ( fc - fc[ fvb ] )/ fc[ fvb ], sym, ColorCode, > >> > > > > styleLine); > >> > > > > > >> > > > > } > >> > > > > > >> > > > > } > >> > > > > > >> > > > > > >> > > > > > >> > > > > _N( Title = "{{NAME}} {{DATE}} - Relative Performance [%]: > >> > > > > {{VALUES}}" > >> > > > > ); > >> > > > > > >> > > > > > >> > > > > > >> > > > > _SECTION_END(); > >> > > > > > >> > > > > > >> > > > > Tuzo > >> > > > > > >> > > > > > 1. Deteremine BUY based on criteria and assign value of 1 else 0. > >> > > > > (works fine) > >> > > > > > 2. Determeine SELL based on criteria and assign value of -1 else > >> > > > > 0.(works fine - these values are now stored in the array) > >> > > > > > 3. From a given list (example: IndustryID() == 4) (the StrExtract > >> > > > > works fine). > >> > > > > > 4. PLOT only those tickers that meet BUY. (I get all or none) > >> > > > > > 5. Plot each ticker in a different color, in the same pane, > >> > > > > > hence the > >> > > > > inner loop. (the colors plot fine) > >> > > > > > > >> > > > > > Basically it is the Relative Performance indicator, with a BUY > >> > > > > criteria and StrExtract from any given list (sector, Industry, > >> > > > > watch, > >> > > > > etc.), because of the multiple plots, Foreign is used. > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > --- In [email protected], dingo waledingo@ wrote: > >> > > > > > > > >> > > > > > > write it out step by step in English. I'm not uderstanding > >> > > > > > > what you > >> > > > > want to > >> > > > > > > do. > >> > > > > > > > >> > > > > > > d > >> > > > > > > > >> > > > > > > On Thu, May 7, 2009 at 4:37 PM, gmorlosky gmorlosky@ wrote: > >> > > > > > > > >> > > > > > > > Thanks - clearly I got something backwards - while I study > >> > > > > > > > arrays, > >> > > > > do you > >> > > > > > > > have an example of code similar to this that works, to help > >> > > > > > > > me > >> > > > > understand ? > >> > > > > > > > I just want to loop through certain tickers that pass some > >> > > > > > > > formula > >> > > > > first. > >> > > > > > > > Basically a loop inside a loop. > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > --- In [email protected], dingo <waledingo@> wrote: > >> > > > > > > > > > >> > > > > > > > > You've got a basic misunderstanding of loops and arrays. > >> > > > > > > > > In AFL > >> > > > > You > >> > > > > > > > > shouldn't have arrary operators like IIF inside a loop. > >> > > > > > > > > > >> > > > > > > > > You need to go back an reread the help file on arrays. > >> > > > > > > > > > >> > > > > > > > > d > >> > > > > > > > > > >> > > > > > > > > > >> > > > > > > > > On Thu, May 7, 2009 at 3:32 PM, gmorlosky <gmorlosky@> > >> > > > > > > > wrote: > >> > > > > > > > > > >> > > > > > > > > > Seriously - it works nicely, except for that one line of > >> > > > > > > > > > code. > >> > > > > > > > > > > >> > > > > > > > > > Any other thoughts > >> > > > > > > > > > > >> > > > > > > > > > --- In [email protected], Aron <aron.groups@> > >> > > > > > > > > > wrote: > >> > > > > > > > > > > > >> > > > > > > > > > > everything.. > >> > > > > > > > > > > > >> > > > > > > > > > > gmorlosky wrote: > >> > > > > > > > > > > > In the line ~9 "if(Buy[i] >= 0", if I change that to > >> > > > > > > > > > > > 1, > >> > > > > which is > >> > > > > > > > equal > >> > > > > > > > > > to a Buy, I get no Plots, even though the Explore shows > >> > > > > > > > > > 1s for > >> > > > > half the > >> > > > > > > > > > tickers, else with 0, I get all plots. What is wrong ? > >> > > > > > > > > > > > > >> > > > > > > > > > > > NumBars = 20; > >> > > > > > > > > > > > fvb = Status("firstvisiblebar"); > >> > > > > > > > > > > > for( i = 0; ( symbol = StrExtract( TickerList, i ) ) > >> > > > > > > > > > > > != > >> > > > > ""; i++ ) > >> > > > > > > > > > > > { > >> > > > > > > > > > > > Buy = IIf(ROCt > ROCc AND RSIt > RSIc, 1,0); > >> > > > > > > > > > > > Sell = IIf(ROCt < ROCc AND RSIt < RSIc, -1,0); > >> > > > > > > > > > > > > >> > > > > > > > > > > > fc = Foreign( symbol, "C" ); > >> > > > > > > > > > > > if (Buy[i] >= 0) // something not right here ??? > >> > > > > > > > > > > > { > >> > > > > > > > > > > > if( ! IsNull( fc[ 0 ] ) ) > >> > > > > > > > > > > > { > >> > > > > > > > > > > > Plot( 100 * ( fc - fc[ fvb ] )/ fc[ fvb ], > >> > > > > > > > > > > > symbol, > >> > > > > > > > colorLightOrange > >> > > > > > > > > > + ( (2*i) % 15 ), styleLine ); > >> > > > > > > > > > > > } > >> > > > > > > > > > > > } > >> > > > > > > > > > > > } > >> > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > > >> > > > > > > > > > > > ------------------------------------ >
