{"id":27,"date":"2006-04-04T15:20:55","date_gmt":"2006-04-04T20:20:55","guid":{"rendered":"http:\/\/www.amibroker.com\/kb\/2006\/04\/04\/adding-custom-metric-average-adverse-excursion\/"},"modified":"2014-12-04T08:23:44","modified_gmt":"2014-12-04T13:23:44","slug":"adding-custom-metric-average-adverse-excursion","status":"publish","type":"post","link":"https:\/\/www.amibroker.com\/wordpress\/kb\/2006\/04\/04\/adding-custom-metric-average-adverse-excursion\/","title":{"rendered":"Adding custom metric: Average adverse excursion"},"content":{"rendered":"

Here is a sample that shows how to create custom metric based on per-trade statisitics.
In this example we will calculate the average value of MAE (maximum adverse excursion) from all trades.

SetCustomBacktestProc<\/span>(<\/span>""<\/span>); 

<\/span>\/* Now custom-backtest procedure follows *\/ 

<\/span>if( <\/span>Status<\/span>(<\/span>"action"<\/span>) == <\/span>actionPortfolio <\/span>)
{
    <\/span>bo <\/span>= <\/span>GetBacktesterObject<\/span>(); 

    <\/span>bo<\/span>.<\/span>Backtest<\/span>(); <\/span>\/\/ run default backtest procedure 

   <\/span>SumMAE <\/span>= <\/span>0<\/span>;
   <\/span>NumTrades <\/span>= <\/span>0<\/span>

   <\/span>\/\/ iterate through closed trades first
   <\/span>for( <\/span>trade <\/span>= <\/span>bo<\/span>.<\/span>GetFirstTrade<\/span>(); <\/span>trade<\/span>; <\/span>trade <\/span>= <\/span>bo<\/span>.<\/span>GetNextTrade<\/span>() )
   {
      <\/span>\/\/ here we sum up maximum adverse excursions
       <\/span>SumMAE <\/span>= <\/span>SumMAE <\/span>+ <\/span>trade<\/span>.<\/span>GetMAE<\/span>();
       <\/span>NumTrades<\/span>++;
   } 

   <\/span>\/\/ iterate through eventually still open positions
   <\/span>for( <\/span>trade <\/span>= <\/span>bo<\/span>.<\/span>GetFirstOpenPos<\/span>(); <\/span>trade<\/span>; <\/span>trade <\/span>= <\/span>bo<\/span>.<\/span>GetNextOpenPos<\/span>() )
   {
       <\/span>SumMAE <\/span>= <\/span>SumMAE <\/span>+ <\/span>trade<\/span>.<\/span>GetMAE<\/span>();
       <\/span>NumTrades<\/span>++;
   } 

   <\/span>averageMAE <\/span>= <\/span>SumMAE <\/span>\/ <\/span>NumTrades<\/span>

   <\/span>bo<\/span>.<\/span>AddCustomMetric<\/span>( <\/span>"Avg. adverse excursion"<\/span>, <\/span>averageMAE <\/span>); 



<\/span>\/\/ your trading system here
\/\/..<\/code>","protected":false},"excerpt":{"rendered":"

Here is a sample that shows how to create custom metric based on per-trade statisitics.In this example we will calculate the average value of MAE (maximum adverse excursion) from all trades.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[8],"tags":[53,14,15,21],"_links":{"self":[{"href":"https:\/\/www.amibroker.com\/wordpress\/kb\/wp-json\/wp\/v2\/posts\/27"}],"collection":[{"href":"https:\/\/www.amibroker.com\/wordpress\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.amibroker.com\/wordpress\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.amibroker.com\/wordpress\/kb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.amibroker.com\/wordpress\/kb\/wp-json\/wp\/v2\/comments?post=27"}],"version-history":[{"count":1,"href":"https:\/\/www.amibroker.com\/wordpress\/kb\/wp-json\/wp\/v2\/posts\/27\/revisions"}],"predecessor-version":[{"id":778,"href":"https:\/\/www.amibroker.com\/wordpress\/kb\/wp-json\/wp\/v2\/posts\/27\/revisions\/778"}],"wp:attachment":[{"href":"https:\/\/www.amibroker.com\/wordpress\/kb\/wp-json\/wp\/v2\/media?parent=27"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.amibroker.com\/wordpress\/kb\/wp-json\/wp\/v2\/categories?post=27"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.amibroker.com\/wordpress\/kb\/wp-json\/wp\/v2\/tags?post=27"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}