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

[amibroker] Re: Nested Loops - Custom Backtester



PureBytes Links

Trading Reference Links

Ed, again, thanks.  I believe that you are observing the behavior 
that I described.  If the outer loop is cycling through all signals, 
the output should look like:

>  Sig: AMZN   Sig2: AMZN
>  Sig: AMZN   Sig2: ESLR
>  Sig: AMZN   Sig2: GNTX
>  Sig: AMZN   Sig2: GPRO
>  Sig: AMZN   Sig2: GROW
>  Sig: ESLR   Sig2: AMZN
>  Sig: ESLR   Sig2: ESLR
>  Sig: ESLR   Sig2: GNTX
>  Sig: ESLR   Sig2: GPRO
>  Sig: ESLR   Sig2: GROW
>  Sig: GNTX   Sig2: AMZN
>  Sig: GNTX   Sig2: ESLR
>  Sig: GNTX   Sig2: GNTX
>  Sig: GNTX   Sig2: GPRO
>  Sig: GNTX   Sig2: GROW
etc....

I.e., for the first bar, AMZN is the first signal, ESLR the second, 
etc. and one should have a total of 25 lines of output for that bar 
(5 x 5) because there are 5 signals.  Likewise, the 2nd bar should 
produce 9 (3x3) lines of output.

Make sense?

David





--- In amibroker@xxxxxxxxxxxxxxx, "Edward Pottasch" <empottasch@xxx> 
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: amibroker@xxxxxxxxxxxxxxx 
>   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 amibroker@xxxxxxxxxxxxxxx, "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: amibroker@xxxxxxxxxxxxxxx 
>   > 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
>   >
>




Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/

For other support material please check also:
http://www.amibroker.com/support.html
 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

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