david,
below a complete test system including this code. A snapshort of the output in
the AA window looks like this:
Sig: AMZN Sig2: AMZN
Sig: AMZN Sig2: ESLR
Sig: AMZN Sig2: GNTX
Sig: AMZN Sig2: GPRO
Sig: AMZN Sig2: GROW
Sig: IFIN Sig2: IFIN
Sig: IFIN Sig2: OSIP
Sig: IFIN Sig2: VARI
Sig: AMCC Sig2: AMCC
Sig: AMCC Sig2: SEPR
Sig: CELG Sig2: CELG
Sig: CORS Sig2: CORS
Sig: CYMI Sig2: CYMI
Sig: CYMI Sig2: DAKT
Sig: CYMI Sig2: INTU
Sig: CYMI Sig2: JNPR
Sig: CYMI Sig2: SSRI
Sig: AGIX Sig2: AGIX
Sig: AGIX Sig2: AMAG
Sig: AGIX Sig2: CHRS
Sig: AGIX Sig2: COLM
Sig: AGIX Sig2: DRIV
Sig: AGIX Sig2: FLEX
Sig: AGIX Sig2: FORM
Sig: AGIX Sig2: LECO
Sig: IDXX Sig2: IDXX
Sig: IDXX Sig2: JBLU
Sig: IDXX Sig2: XMSR
etc.
regards, ed
SetOption("UseCustomBacktestProc", True );
if( Status("action") == actionPortfolio ) {
bo = GetBacktesterObject();
bo.backtest();
for(bar=0; bar<BarCount; bar++) {
for ( sig = bo.GetFirstSignal(bar); sig; sig=bo.GetNextSignal(bar)) {
for ( sig2 = bo.GetFirstSignal(bar); sig2; sig2=bo.GetNextSignal(bar))
{
bo.RawTextOutput( "\t" + "Sig: " + sig.Symbol + " Sig2: " +
sig2.Symbol );
}
}
}
}
SetOption("InitialEquity", 100000 );
SetOption("MaxOpenPositions", 4 );
PositionSize = -25;
SetTradeDelays(0,0,0,0);
Buy = Cross(RSI(14),30); Buy = Ref(Buy,-1); BuyPrice = O;
Sell = Cross(70,RSI(14)); Sell = Ref(Sell,-1); SellPrice = O;
Short = Sell; ShortPrice = O;
Cover = Buy; CoverPrice = O;
Buy = ExRem( Buy, Sell );
Sell = ExRem( Sell, Buy );
Short = ExRem( Short, Cover );
Cover = ExRem( Cover, Short );
SetChartOptions(0, chartShowDates);
Plot(C,"C",1,64);
PlotShapes(IIf(Buy,shapeUpArrow,0),colorWhite, layer = 0, yposition = BuyPrice,
offset = 0 );
PlotShapes(IIf(Sell,shapeDownArrow,0),colorYellow, layer = 0, yposition =
SellPrice, offset = 0 );
PlotShapes(IIf(Short,shapeHollowDownArrow,0),colorLightBlue, layer = 0,
yposition = ShortPrice, offset = -15 );
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),colorGold, layer = 0, yposition =
CoverPrice, offset = -15 )
----- Original Message -----
From: david.weilmuenster
To: [email protected]
Sent: Monday, July 02, 2007 8:41 PM
Subject: [amibroker] Re: Nested Loops - Custom Backtester
Ed,
Unfortunately, I cannot re-create your results here. I used a very
simple backtest, and copied your code verbatim, but the outer loop
still executes only for the first signal.
Thanks, though, for the suggestion,
David
--- In [email protected], "Edward Pottasch" <[EMAIL PROTECTED]>
wrote:
>
> hi,
>
> it seems to be possible. I ran this code on top of some backtest.
The results in the AA window show that both loops are used. If you
want to change a trade then you will have to change this setup. Here
I first run the backtest and then go through the signal object.
>
> Ed
>
>
>
>
> SetOption("UseCustomBacktestProc", True );
>
> if( Status("action") == actionPortfolio ) {
>
> bo = GetBacktesterObject();
> //bo.PreProcess(); // Initialize backtester
> bo.backtest();
>
> for(bar=0; bar<BarCount; bar++) {
>
>
> for ( sig = bo.GetFirstSignal(bar); sig;
sig=bo.GetNextSignal(bar)) {
>
>
> for ( sig2 = bo.GetFirstSignal(bar); sig2;
sig2=bo.GetNextSignal(bar)) {
>
> bo.RawTextOutput( "\t" + "Sig: " + sig.Symbol
+ " Sig2: " + sig2.Symbol );
>
>
> }
>
> }
>
> }
> //bo.PostProcess(); // Finalize backtester
>
> }
>
>
>
>
> ----- Original Message -----
> From: david.weilmuenster
> To: [email protected]
> Sent: Monday, July 02, 2007 5:18 PM
> Subject: [amibroker] Nested Loops - Custom Backtester
>
>
> Hi,
>
> In the Custom Backtester, I need to run a nested loop to examine
all
> signals in comparison to a given signal, and have tried the
following
> code to implement a nested loop:
>
> for ( sig = bo.getfirstsignal(bar); sig; sig = bo.getnextsignal
(bar))
>
> {
>
> for ( sig_2 = bo.getfirstsignal(bar); sig_2; sig_2 =
> bo.getnextsignal(bar))
>
> {
>
> ... logic to compare signals
>
> }
>
> }
>
> -------------------------------------------
>
> But, the code executes only for the first signal in the outer
loop.
> I.e., it runs the inner loop perfectly, but only for the first
signal
> in the outer loop.
>
> Any clues as to what I'm doing wrong? Maybe this isn't possible?
> Other approaches I should try?
>
> Thanks,
> David Weilmuenster
>