Excellent...That makes perfect sense...the IF and FOR should work...it's the "active ticker" that held control...I'll try that tommorrow...Thanks for the exceptional explanation.
--- In [email protected], "Mike" <sfclimb...@...> wrote: > > To the original poster; It appears that you have a few misconceptions. I > apologize in advance if I have misread you. > > 1. You are iterating through a list of symbol names. But, that does not have > any impact on the Buy and Sell arrays. The Buy and Sell arrays are still the > one and only Buy and Sell of the symbol upon which the chart is rooted (i.e. > the active symbol). > > You are calculating the same Buy/Sell values over and over again. This is > likely why you are getting all or nothing. You're always only ever referring > to the Buy/Sell of the active symbol, regardless of which item in the list > you have iterated to. > > You have not indicated where you calculated your ROC and RSI values, but they > probably are also based only on the active symbol. > > 2. When you reference Buy[i], you are not referencing the Buy array of the > i'th symbol in the list, you are referencing the i'th bar in the Buy array of > the active symbol. > > I don't have AmiBroker available to test. But, building on Tuzo's example, I > would suggest that you probably want to pass the name of the symbol to his > ShouldPlot function, then in the body of that function use SetForeign for > your calculations. The function would return an array. > > e.g. > > function ShouldPlot(symbol) { > SetForeign(symbol); > ROCt = ...; > ROCc = ...; > RSIt = ...; > RSIc = ...; > RestorePriceArrays(); > > Result = (ROCt > ROCc AND RSIt > RSIc); > return Result; > } > > Similarly, your Plot statement would use the returned result of ShouldPlot, > masking out the plot when no trigger was found. Something like this: > > for( i = 0; ( sym = StrExtract( SymbolList, i ) ) != ""; i++ ) { > ColorCode++; > > // wrap color codes if too many > if (ColorCode == colorTan) { > ColorCode = colorBrown; > } > > fc = Foreign(sym, "Close"); > Change = 100 * ( fc - fc[ fvb ] )/ fc[ fvb ]; > Plot(IIF(ShouldPlot(sym), Change, Null), sym, ColorCode, styleLine); > } > > As Tuzo indicated, the actual lines plotted would vary bar by bar. But that > appears to be what you wanted. > > Mike > > --- 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 ); > > > > > > > > > } > > > > > > > > > } > > > > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------ > > > > > > > > > > > > > > > > > > **** 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 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------ > > > > > > > > > > > > > > **** 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 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------ > > > > > > > > > > **** 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 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
