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

[amibroker] InWatchListName Help (was Re: InWatchList help)



PureBytes Links

Trading Reference Links

Here's a variation of the same idea.  The way that results are being
reported in the chart window and in AA is not reassuring.  I must be
missing something obvious.

I have watchlists named "NDX_2002" and "NDX_2003" etc.

The year of the current bar is to identify the proper watchlist.  If
today is 19970102, NDX_1997 is the correct watchlist to check.  If
today is 19961231, NDX_1996 is the correct watchlist to check.

Vector_Desired:  If symbol is in year-selected watchlist, a trade can
be taken; else no trade.  I need inwl to be Vector_Desired.

The plot of inwl (from code below) is either all 1's or all 0's from
the left of the chart window to the right, depending on where the bar
pointer is.

For example, suppose the current symbol is in NDX_1997 and not in
NDX_1996.  The last bar of 1996 is 19961231.  The first bar of 1997 is
19970102.  When the bar pointer is on 19961231, the histogram is at
zero from the leftmost bar to the rightmost bar of the chart window. 
When I move the bar pointer one bar to the right with the
right-arrow key, to 19970102, the histogram displays 1 on every bar
visible in the chart window (not correct).

What am I missing?

/////////////////
fint  = 1.0;
yyyy = Year();
yearstr = StrReplace( NumToStr( yyyy, fint ), ",", "" );
watchlistname = "NDX_" + yearstr;
inwl = iif( InWatchListName( watchlistname ), 1, 0 );
Plot( inwl, "inwl", colorDefault, styleHistogram + styleOwnScale, 0, 2);
/////////////////

--- In amibroker@xxxxxxxxxxxxxxx, "HB" <hmab@xxx> wrote:
>
> MessageThanks Graham.  That was it !
> 
> I ended up using the following code:
> 
> //////////////////////////////
> 
> // Date conditions
> ZeroKH1 = IIf(today>=1000101 AND today <=1000630, 7,0);
> ZeroKH2 = IIf(today>=1000701 AND today <=1001231, 9,0);
> OneKH1 = IIf(today>=1010101 AND today <=1010630, 11,0);
> OneKH2 = IIf(today>=1010701 AND today <=1011231, 13,0);
> TwoKH1 = IIf(today>=1020101 AND today <=1020630, 15,0);
> TwoKH2 = IIf(today>=1020701 AND today <=1021231, 17,0);
> 
> // Watchlist membership
> wl7 = InWatchList(7);
> wl9 = InWatchList(9);
> wl11 = InWatchList(11);
> wl13 = InWatchList(13);
> wl15 = InWatchList(15);
> wl17 = InWatchList(17);
> 
> // Ticker is in right date range and is a member of the right watchlist
> rightWL = (ZeroKH1 AND wl7) OR (ZeroKH2 AND wl9) OR (OneKH1 AND
wl11) OR (OneKH2 AND wl13) OR (TwoKH1 AND wl15) OR (TwoKH2 AND wl17);
> 
> //////////////////////////////
> 
> I know the two sets of conditions be combined but I spell it out for
my own benefit/understanding.
> 
> HB
>   ----- Original Message ----- 
>   From: Graham 
>   To: amibroker@xxxxxxxxxxxxxxx 
>   Sent: Tuesday, December 16, 2003 9:32 PM
>   Subject: RE: [amibroker] InWatchList help
> 
> 
>   you could just use the watchlist numbers and have added
conditional statements
> 
>   cond1 = datenum()>1000101 and datenum()<1000701;
>   cond2 = inwatchlist(7);
>   cond3 = inwatchlist(9);
>   Buy = Buyconditions AND ( ( cond1 and cond2 ) or cond3 );//have
added or etc as variety
> 
>   or if you only have a single watchlist
> 
>   cond1 = datenum()>1000101 and datenum()<1000701;
>   Buy = Buyconditions AND InWatchList(7) and cond1; 
>   Cheers,
>   Graham
>   http://groups.msn.com/asxsharetrading
>   http://groups.msn.com/fmsaustralia 
> 
>     -----Original Message-----
>     From: HB [mailto:hmab@...] 
>     Sent: Wednesday, 17 December 2003 10:13 AM
>     To: amibroker@xxxxxxxxxxxxxxx
>     Subject: Re: [amibroker] InWatchList help
> 
> 
>     Jayson, Graham, & Andrew,
> 
>     Thanks for your tips.
> 
>     Let me give me more details as to how I want to use this.  When
backtesting, I need to determine, for each bar, if this ticker is part
of a certain watch list.  If so, then I will accept the buy signal,
otherwise on.
> 
>     In my code sample, if the current bar is in the first half of
year 2000, then tickers need to be in watchlist 7 in order to accept
buy signals.  If the current bar is in the second half of year 2000,
then tickers need to be in watchlist 9 in order to accept buy signals.  
> 
>     I was hoping to do something like:
> 
>     Buy = Buyconditions AND InWatchList(wlnum);
> 
>     So, in this case, is the solution to use Andrew's first code
snippet ?  Or is there a simpler way to do this ?
> 
>     Thanks,
>     HB
> 
>       ----- Original Message ----- 
>       From: Andrew Perrin 
>       To: amibroker@xxxxxxxxxxxxxxx 
>       Sent: Tuesday, December 16, 2003 8:34 PM
>       Subject: Re: [amibroker] InWatchList help
> 
> 
>       HB
>       I believe the problem is that the function InWatchlist( ) does
not accept an array as arguments.  A solution is to specify array
elements.
> 
>      
///////////////////////////////////////////////////////////////////// 
>       // returns 1 if Ticker in Given watchlist on specified date //
>      
//////////////////////////////////////////////////////////////////// 
>       StartBar = LastValue( ValueWhen( Status("firstbarinrange"),
BarIndex() ) );
>       FinishBar = LastValue( ValueWhen( Status("lastbarinrange"),
BarIndex() ) ); 
>       today = DateNum();
>       i = StartBar;
>       while (i <= FinishBar)
>       {
>       ZeroKH1[i] = IIf(today[i]>=1000101 AND today[i] <=1000630, 7,0);
>       ZeroKH2[i] = IIf(today[i] >=1000701 AND today[i] <=1001231, 9,0);
>       wlnum[i] = ZeroKH1[i] + ZeroKH2[i];
>       inWL[i] = InWatchList(wlnum[i]);
>       i = i + 1;
>       }
>       Filter = 1;
>       AddColumn(InWL,"inWL",1.0);
> 
>       This will work,  it will however compare ticker to watchlist
num 1 outside of the dates specified and will give a true result if
Watchlist 1 does contain ticker.
>       Another solution that may overcome this is to use nested IIf
statements.
> 
>      
///////////////////////////////////////////////////////////////////// 
>       // returns 1 if Ticker in Given watchlist on specified date //
>      
//////////////////////////////////////////////////////////////////// 
>       StartBar = LastValue( ValueWhen( Status("firstbarinrange"),
BarIndex() ) );
>       FinishBar = LastValue( ValueWhen( Status("lastbarinrange"),
BarIndex() ) ); 
>       today = DateNum();
>       WL1 = 1; // first period watchlist 
>       WL2 = 2; // second period watchlist
>       WLempty = 56; // specify an empty watchlist
>       i = StartBar;
>       while (i <= FinishBar)
>       {
>           wlnum[i] =     IIf(today[i] >=1000101 AND today[i]
<=1000630, WL1,
>                               IIf(today[i] >=1000701 AND today[i]
<=1001231, WL2, WLempty));
>           inWL[i] = InWatchList(wlnum[i]);
>           i = i + 1;
>       }
>       Filter = 1;
>       AddColumn(InWL,"inWL",1.0);
> 
>       If you are doing something more complex in this area, perhaps
the following AFL might help.  Watchlist were set up to reflect the
composition of certain indexes at 6 mth intervals. Tickers were
selected that were part of the index at the start of each six month
period.
> 
>       Hope this helps, watch those line returns,
> 
>       Andrew
> 
> 
>      
////////////////////////////////////////////////////////////////////////////////////////////////
>       // ASX300/ASX200 returns 1 if Ticker in ASX300/ASX200 in given
month. (Range 2000 on). //
>      
////////////////////////////////////////////////////////////////////////////////////////////////
>       StartBar = LastValue( ValueWhen( Status("firstbarinrange"),
BarIndex() ) );
>       FinishBar = LastValue( ValueWhen( Status("lastbarinrange"),
BarIndex() ) ); 
>       Yr = Year();
>       Mth = Month();
>       Ticker = Name();
>       i = StartBar;
>       while (i <= FinishBar)
>       {
>       WatchlistNum[i] =     IIf(Yr[i] ==2000, IIf(Mth[i] <7, 30,31),
>                                       IIf(Yr[i] ==2001, IIf(Mth[i]
<7, 32,33),
>                                       IIf(Yr[i] ==2002, IIf(Mth[i]
<7, 34,35),
>                                       IIf(Yr[i] ==2003, IIf(Mth[i]
<7, 36,37),39))));
>           InASX300[i] = InWatchList( WatchlistNum[i] );
>       WatchlistNum[i] =     IIf(Yr[i] ==2000, IIf(Mth[i] <7, 40,41),
>                                       IIf(Yr[i] ==2001, IIf(Mth[i]
<7, 42,43),
>                                       IIf(Yr[i] ==2002, IIf(Mth[i]
<7, 44,45),
>                                       IIf(Yr[i] ==2003, IIf(Mth[i]
<7, 46,47),49))));
>           InASX200[i] = InWatchList( WatchlistNum[i] );
>       i = i + 1;
>       }
>       Filter = InASX300;
>       AddColumn(InASX300,"in ASX300");
>       AddColumn(InASX200,"on ASX200");
> 
> 
>       ----- Original Message ----- 
>         From: HB 
>         To: amibroker@xxxxxxxxxxxxxxx 
>         Sent: Wednesday, December 17, 2003 6:21 AM
>         Subject: [amibroker] InWatchList help
> 
> 
>         Hello,
> 
>         I'm getting an error with the last line of following code. 
Something about a bad argument.  Can someone please help.
> 
>         //////////////////////////////////////
> 
>         today = DateNum();
> 
>         ZeroKH1 = IIf(today>=1000101 AND today <=1000630, 7,0);
>         ZeroKH2 = IIf(today>=1000701 AND today <=1001231, 9,0);
> 
>         wlnum = ZeroKH1 + ZeroKH2;
> 
>         Filter = 1;
> 
>         AddColumn(InWatchList(wlnum),"inWL",1.0);
> 
>         //////////////////////////////////////
> 
>         Thanks,
>         HB
> 
> 
>         Send BUG REPORTS to bugs@xxx
>         Send SUGGESTIONS to suggest@xxx
>         -----------------------------------------
>         Post AmiQuote-related messages ONLY to:
amiquote@xxxxxxxxxxxxxxx 
>         (Web page: http://groups.yahoo.com/group/amiquote/messages/)
>         --------------------------------------------
>         Check group FAQ at:
http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> 
> 
> 
> 
> ------------------------------------------------------------------------
>         Yahoo! Groups Links
> 
>           a.. To visit your group on the web, go to:
>           http://groups.yahoo.com/group/amibroker/
>             
>           b.. To unsubscribe from this group, send an email to:
>           amibroker-unsubscribe@xxxxxxxxxxxxxxx
>             
>           c.. Your use of Yahoo! Groups is subject to the Yahoo!
Terms of Service. 
> 
> 
> 
> 
>       Send BUG REPORTS to bugs@xxx
>       Send SUGGESTIONS to suggest@xxx
>       -----------------------------------------
>       Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
>       (Web page: http://groups.yahoo.com/group/amiquote/messages/)
>       --------------------------------------------
>       Check group FAQ at:
http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> 
> 
> 
>
--------------------------------------------------------------------------
>       Yahoo! Groups Links
> 
>         a.. To visit your group on the web, go to:
>         http://groups.yahoo.com/group/amibroker/
>           
>         b.. To unsubscribe from this group, send an email to:
>         amibroker-unsubscribe@xxxxxxxxxxxxxxx
>           
>         c.. Your use of Yahoo! Groups is subject to the Yahoo! Terms
of Service. 
> 
> 
> 
> 
>     Send BUG REPORTS to bugs@xxx
>     Send SUGGESTIONS to suggest@xxx
>     -----------------------------------------
>     Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
>     (Web page: http://groups.yahoo.com/group/amiquote/messages/)
>     --------------------------------------------
>     Check group FAQ at:
http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> 
> 
> 
>
----------------------------------------------------------------------------
>     Yahoo! Groups Links
> 
>       a.. To visit your group on the web, go to:
>       http://groups.yahoo.com/group/amibroker/
>         
>       b.. To unsubscribe from this group, send an email to:
>       amibroker-unsubscribe@xxxxxxxxxxxxxxx
>         
>       c.. Your use of Yahoo! Groups is subject to the Yahoo! Terms
of Service. 
> 
> 
> 
> 
>   Send BUG REPORTS to bugs@xxx
>   Send SUGGESTIONS to suggest@xxx
>   -----------------------------------------
>   Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
>   (Web page: http://groups.yahoo.com/group/amiquote/messages/)
>   --------------------------------------------
>   Check group FAQ at:
http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> 
> 
> 
>
------------------------------------------------------------------------------
>   Yahoo! Groups Links
> 
>     a.. To visit your group on the web, go to:
>     http://groups.yahoo.com/group/amibroker/
>       
>     b.. To unsubscribe from this group, send an email to:
>     amibroker-unsubscribe@xxxxxxxxxxxxxxx
>       
>     c.. Your use of Yahoo! Groups is subject to the Yahoo! Terms of
Service.
>



------------------------------------

Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/