[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: Help on why IIF statement isn't working ?



PureBytes Links

Trading Reference Links



Hi,

It appears that you are trying to traverse a list of symbols and return a subset of those that are found to also be in a reference symbol list.

That being the case, a couple of observations that might be helpful:

- It would be better if your function did not rely on variable declarations that were defined somewhere else (e.g. TickerCategory, TickerListNum, NumTickers, etc.). Consider having your function take arguments instead.

- Are you sure that NumTickers is the correct number of symbols found in SymbolList? Given that you just fetched SymbolList, how did you know how many symbols were in the list? Looks like a possible indexing error here.

- No need to repeatedly fetch the symbols for your reference list (i.e. CategoryGetSymbols( categoryWatchlist, 9 )), unless the list is being updated by another process behind your back, the value will not change between iterations of the loop.

- No need to use IFF. Just use IF without the "==" operator. Any non zero value is considered to be true.

- No need to include a check for (SP1500N100 == 1 AND Found == 1). Your function never changes SP1500N100, so don't bother checking for it over and over again. Either check the value before ever calling your function in the first place, else check the value once at the very start of your function and just return an empty string if it is false.

- Your return value will have an extra "," at the end, which would be different than any other list of symbols fetched using AmiBroker functions. Better to use the same format as AmiBroker so that you can pass your result list to any function that takes an AmiBroker list.

Keeping all the rest of your logic, your function might look something like this (untested):

function GetSymbols2(TickerCategory, TickerListNum, ReferenceList) {
   
local
InList;
   
local
TickerList;
   
local
SymbolList;

   InList =
"," + ReferenceList + ","
;
   TickerList =
""
;
   SymbolList =
CategoryGetSymbols
( TickerCategory, TickerListNum );

   
for (i = 0; (Ticker = StrExtract(SymbolList, i)) != ""
; i++) {
      
if (StrFind(InList, "," + Ticker + ","
)) {
         
if (i > 0
) {
            TickerList +=
","
;
         }

         TickerList += Ticker;
      }
   }

   
return
TickerList;
}

Sample usage becomes:

if (SP1500N100) {
   WL_SP1500N100 =
CategoryGetSymbols(categoryWatchlist, 9
);
   Duplicates = GetSymbols2(
categoryWatchList, 1
, WL_SP1500N100);
}

Mike

--- In amibroker@xxxxxxxxxxxxxxx, "gmorlosky" <gmorlosky@xxx> wrote:
>
> Use this, which will locate the string in the watchlist:
>
> function GetSymbols()
> {
> TickerList = "";
> SymbolList = CategoryGetSymbols(TickerCategory, TickerListNum);
>
> for(n = 0; n < NumTickers; n++)
> {
> Ticker = StrExtract(SymbolList,n);
> WL_SP1500N100 = CategoryGetSymbols(categoryWatchlist, 9);
> Found = 0;
> Found = IIf(StrFind(","+WL_SP1500N100+",",","+Ticker+",") > 0, 1, 0);
> if (SP1500N100 == 1 AND Found == 1 )
> TickerList = TickerList + Ticker + ",";
> }
> return TickerList;
> }
>
>
> --- In amibroker@xxxxxxxxxxxxxxx, "gmorlosky" gmorlosky@ wrote:
> >
> > I have this code and the middle line of the "IIF" statement keeps telling me it's the wrong argument ?
> >
> > function GetSymbols()
> > {
> > TickerList = "";
> > SymbolList = CategoryGetSymbols(TickerCategory, TickerListNum);
> >
> > for(n = 0; n < NumTickers; n++)
> > {
> > Ticker = StrExtract(SymbolList,n);
> > IIf (InWatchListName( "1_S&P 1500 N100" ), Ticker = Ticker, Ticker = "");
> > TickerList = TickerList + Ticker + ",";
> > }
> > return TickerList;
> > }
> >
>



__._,_.___


**** 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/





Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___