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

[amibroker] Re: functions in AFL, a question



PureBytes Links

Trading Reference Links

Ed,

I think instead of "barcount" you might try:

lastBar= lastvalue(valuewhen(datenum()==yourLastDateNum,barindex());

which will return the barnumber at the "yourLastDateNum" point.

                      Walt

--- In amibroker@xxxxxxxxxxxxxxx, "ed2000nl" <empottasch@xxxx> wrote:
> Using the new option of writing functions in AFL, I wrote a simple 
> function ( see code (1) ) to track high volumes in the last ndays 
of 
> an array. This function I execute in inside the "automatic analysis 
> window" using code (2). 
> 
> If I want to look for buy signals at some point in the past (e.g. 
> 6/6/2002) I scan for buy signals for all stocks from 6/6/2002 to 
> 6/6/2002. This does not work. It seems to only be able to scan for 
> buy signals at the last point in the database.
> 
> This is due to "BarCount" in my opinion. How should I rewrite code 
> (1) to be able to scan for signals at some date in the past?
> 
> thanks in advance, Ed
>  
> 
> code (1)
> ///////////////////////////////////////////////////////
> // Edward Pottasch, July 2003
> // high_volume.afl returns a 1 if an area if high volume is found
> 
> // volume: volume array
> // tdays: number of days over which the average volume is calculated
> // ndays: number of days at the end of the vol array over which the 
> average high vol is calculated 
> // factor: the factor the average high vol should exceed average vol
> 
> 
> function high_volume(volume,tdays,ndays,factor) 
> {
> 
> 	// initialize first element
> 	outp = 0;
> 	vtot = 0;
> 	vtote = 0;
> 
> 	if (BarCount > tdays) {
> 	
> 		// calculate the average volume 
> 		for( i = BarCount - tdays; i < BarCount - ndays; 
> i++ ) {
> 	
> 			vtot = vtot + volume[ i ];
> 		
> 		}
> 	
> 		vtot = vtot / tdays;
> 		
> 		// 
> 		for( i = BarCount - ndays; i < BarCount; i++ ) {
> 		
> 			vtote = vtote + volume[ i ];
> 		
> 		}
> 	
> 		vtote = vtote / ndays;		
> 		
> 		
> 		if ((vtote / vtot) > factor) {
> 		
> 			outp[ BarCount - 1 ] = 1;
> 
> 
> 		}
> 		else {
> 		
> 			outp[ BarCount - 1 ] = 0;
> 		
> 		}
> 		
> 	}
> 	
> 	return outp;
> 	
> }
> ///////////////////////////////////////////////////////////////////
> 
> 
> code (2)
> ///////////////////////////////////////////////////////////////////
> #pragma nocache
> #include <high_volume.afl>
> 
> Buy = high_volume(Volume,50,1,6);


Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
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 

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