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

[amibroker] Re: Arrays With Different Number of Bars than Total Bars



PureBytes Links

Trading Reference Links

Hello Ken,


> Take a Buy and Sell signal, and collect the closing prices of the
current symbol ONLY WHEN the buy signal is in effect.

This is what should do the following piece of code, since as far as I
know, all arrays must be the same size in AFL, null-valued cells are
inserted at the beginning (could be at the end also).  I hope to have
correctly understood what you want to do : )

Best regards, Nicolas


----

if (Name()=="AA") { 

Buy = Cross(MA(C,5),MA(C,12)); 
Sell = Cross(MA(C,15),MA(C,5));

EMPTY_VAL = -1e10;
nbBuy = 0;

// count the number of cells where Buy[i]=true and
// save corresponding closing price values.
for (i=0;i<BarCount;i++) {
	if (Buy[i]==True) {
		tmpArray[nbBuy] = Close[i];
		nbBuy++;
	}
}

// construct the resulting array which is a concatenation of "empty"
cells plus saved prices. 
Cpt=0;
for (i=0;i<BarCount;i++) {
	if (i<BarCount-nbBuy) {
		result[i] = EMPTY_VAL;
	} else {
	  result[i] = tmpArray[Cpt];
	  Cpt++;
	}
}

fh = fopen( "c:\\temp\\myfile.txt", "w");
tmp = StrFormat("%g %g %g\n",nbBuy,BarCount - nbBuy,Cpt);
fputs(tmp,fh);

for (i=0;i<BarCount;i++) {
	tmp = StrFormat("%g %f %f %g\n",i, Close[i], result[i],
Buy[i]);
	fputs(tmp,fh);
}
fclose(fh);
}







--- In amibroker@xxxxxxxxxxxxxxx, "Ken Close" <ken45140@xxx> wrote:
>
> Is it possible to create an array that has a different number of
bars than
> the total bars in a test period?
>  
> I want to take the equity line (or price line) and "assemble" an
array of
> the close values only when a buy signal is in effect.
>  
> Take a Buy and Sell signal, and collect the closing prices of the
current
> symbol ONLY WHEN the buy signal is in effect.
>  
> Assume further that over a 1000 bar backtest, the Buy signal is on
for 600
> bars and the Sell signal is on for 400 bars.  The total number of
bars in
> the test is 1000.
>  
> How can one "stack up" the buy periods so they are "end to end"
rather than
> being interspersed with Sell periods?
>  
> The resulting "During Buy" array would only have 600 bars.
>  
> All I can think of (conceptually) is manipulation of bar numbers and
> addition of the bar number only when the Buy signal is on.
>  
> Is any of this possible?
>  
> Thanks for any comment.
>  
> Ken
>




Content-Description: "AVG certification"
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.1.409 / Virus Database: 268.14.11/542 - Release Date: 11/20/2006