yes I see now what the problem is. I never needed this yet so it didn't occur 
to me. I guess there are workarounds for it,

rgds, Ed



  ----- Original Message ----- 
  From: gp_sydney 
  To: [email protected] 
  Sent: Tuesday, July 03, 2007 12:58 AM
  Subject: [amibroker] Re: Nested Loops - Custom Backtester


  Ed,

  Add the bar number to your output and you'll see what the problem is.
  Here's a sample using your code over a watchlist of mine:

  Bar: 16 Sig: GPT Sig2: GPT

  Bar: 17 Sig: PGL Sig2: PGL

  Bar: 18 Sig: ABC Sig2: ABC
  Bar: 18 Sig: ABC Sig2: CCL
  Bar: 18 Sig: ABC Sig2: EQI

  Bar: 19 Sig: APN Sig2: APN
  Bar: 19 Sig: APN Sig2: CFX
  Bar: 19 Sig: APN Sig2: QBE
  Bar: 19 Sig: APN Sig2: SEV
  Bar: 19 Sig: APN Sig2: TAH

  Bar: 20 Sig: CTX Sig2: CTX
  Bar: 20 Sig: CTX Sig2: GWT

  Bar: 21 Sig: BEN Sig2: BEN
  Bar: 21 Sig: BEN Sig2: GUD

  Bar: 24 Sig: DJS Sig2: DJS
  Bar: 24 Sig: DJS Sig2: SYB
  Bar: 24 Sig: DJS Sig2: TCL

  Bar: 25 Sig: COA Sig2: COA
  Bar: 25 Sig: COA Sig2: FLT

  Note that for any single bar number, there's only one Sig stock.

  GP

  --- In [email protected], "Edward Pottasch" <[EMAIL PROTECTED]>
  wrote:
  >
  > 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" <empottasch@> 
  > 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
  > >
  >



   

Reply via email to