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
  >



   

Reply via email to