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 );
> >> > > > > > > > > > > >   }
> >> > > > > > > > > > > >  }
> >> > > > > > > > > > > > }
> >> > > > > > > > > > > >
> >> > > > > > > > > > > >
> >> > > > > > > > > > > >
> >> > > > > > > > > > > > ------------------------------------
>


Reply via email to