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

Re: No it is not, was: Re: [amibroker] Re: IS THIS A BUG: Strange things with Backtester



PureBytes Links

Trading Reference Links

Hello,

If you really must use different per-symbol commission
the simplest way is *not* using custom backtester.
Instead modify buy/sellprice by amount of per-share commission

BuyPrice = BuyPrice + CommissionPerShare;
SellPrice = SellPrice - CommissionPerShare.

The other way (using custom backtester) is explained in the User's Guide:
http://www.amibroker.com/guide/a_custommetrics.html

Use EXAMPLE 2 as a starting point.

With few simple edits you have what you are asking for:
/* First we need to enable custom backtest procedure and 
** tell AmiBroker to use current formula 
*/ 

SetCustomBacktestProc(""); 

/* Now custom-backtest procedure follows */ 

if( Status("action") == actionPortfolio ) 
{ 
    bo = GetBacktesterObject(); 

    bo.Backtest(); // run default backtest procedure 

   SumProfit = 0; 

   // iterate through closed trades first 
   for( trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade() ) 
   { 
       Comm = 5; 
        if( trade.Symbol == "GBP.USD-IDEALPRO-CASH" ) Comm = 20;       
   
       // here we sum up profit minus commission 
       SumProfit = trade.GetProfit() - Comm; 
       NumTrades++; 
   } 

   // iterate through eventually still open positions 
   for( trade = bo.GetFirstOpenPos(); trade; trade = bo.GetNextOpenPos() ) 
   { 
       Comm = 5; 
        if( trade.Symbol == "GBP.USD-IDEALPRO-CASH" ) Comm = 20;       
   
       // here we sum up profit minus commission 
       SumProfit = trade.GetProfit() - Comm; 
       NumTrades++; 

   } 

      bo.AddCustomMetric( "Net profit", SumProfit ); 

} 


Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "dralexchambers" <dralexchambers@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Wednesday, May 30, 2007 5:40 PM
Subject: No it is not, was: Re: [amibroker] Re: IS THIS A BUG: Strange things with Backtester


> OK - there was no offense meant and my mistake for mentioning the 
> word bug.
> 
> What I am trying to achieve is this:
> 
> 1. Inside my custom backtest code, use the symbol name (eg: GBP.USD) 
> to determine the commission level for that symbol (an integer)
> 
> 2. Then calculate the net profit (I already have this AFL working): 
> gross profit - commission cost
> 
> 3. Output the net profit via:
> bo.AddCustomMetric("net profit", netprofitvar); 
> 
> 
> I have the code for steps 2 and 3 already - it is Step 1 that I am 
> having problems with.
> 
> Thanks,
> Alex
> 
> 
> 
> 
> 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
> 
> 
> 
> 
>


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/