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

[amibroker] Re: Position sizing based on equity curve



PureBytes Links

Trading Reference Links

Hi Shane,

The code below might be a little easier (hopefully) to read! ;)

BTW the error is ONLY when you first run this code. I think the 
errors are caused when the symbol ~ClosedEquity doesn't exist. After 
the symbol is in your database it runs fine.

Maybe the code needs to create the symbol before adding to it?

//-------------------------------
SetCustomBacktestProc("");

if(Status("action") == actionPortfolio)
{
 bo = GetBacktesterObject();
 bo.Backtest();
 SumProfits[0]   = bo.InitialEquity;
 dt = DateTime();
   for(i=1; i<BarCount; i++)
   {
    SumProfits[i] = SumProfits[i-1];
    for(trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade())
    {
     ExitDate = trade.ExitDateTime;
     if(ExitDate==dt[i]) { SumProfits[i] = SumProfits[i]
        + trade.GetProfit(); }
    }
      if(i==BarCount-1)
      {
        for(trade = bo.getFirstOpenPos(); trade;
            trade = bo.getNextOpenPos())
        {
        SumProfits[i] = SumProfits[i] + trade.GetProfit();
        }
      }
    }
 AddToComposite(SumProfits,"~ClosedEquity","X",
                atcFlagEnableInPortfolio|atcFlagEnableInBacktest|
atcFlagEnableInExplore|atcFlagDefaults);
}
//-------------------------------







--- In amibroker@xxxxxxxxxxxxxxx, "Glenn" <glennokb@xxx> wrote:
>
> Hi Shane,
> 
> FYI I've left a feedback "Suggestion" here:
> 
> http://www.amibroker.com/feedback/view_bug.php?bug_id=231
> 
> Cheers
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "michael_shane_baker" <plusnq@> 
> wrote:
> >
> > From Reefcap
> > 
> > Getting there but still some minor problems. Try this version...
> > 
> > 
> > code:
> > ------------------------------------------------------------------
--
> -
> > -----------
> > 
> > SetCustomBacktestProc("");if(Status("action") == 
actionPortfolio){ 
> > bo = GetBacktesterObject(); bo.Backtest();    //NB:backtest 
> > automatically assigns FIR==[i]=0 and LIR==[i]=barcount-1 
SumProfits
> > [0]   = bo.InitialEquity; dt = DateTime();    //for BIR the 
equity 
> > is non-zero; more is better for(i=1; i<BarCount; i++) {     //
> search 
> > through closed trade list; get the profit when bar==exitdate  
> > SumProfits[i] = SumProfits[i-1];  for(trade = bo.GetFirstTrade(); 
> > trade; trade = bo.GetNextTrade())  {   ExitDate = 
> > trade.ExitDateTime;   if(ExitDate==dt[i]) { SumProfits[i] = 
> > SumProfits[i] + trade.GetProfit(); }  }     //search through open 
> > trades list; get the profit when i==lastbar (close out open 
> trades)  
> > if(i==BarCount-1)  {   for(trade = bo.getFirstOpenPos(); trade; 
> > trade = bo.getNextOpenPos())   {    SumProfits[i] = SumProfits[i] 
+ 
> > trade.GetProfit();   }  } }    //clear composite before each 
test, 
> > put in group 253, enable atc in custom portfolio backtest 
> > AddToComposite(SumProfits,"~ClosedEquity","O",                
> > atcFlagEnableInPortfolio|atcFlagEnableInBacktest|
> atcFlagEnableInExplo
> > re|atcFlagDefaults); AddToComposite
> > (SumProfits,"~ClosedEquity","C",                
> > atcFlagEnableInPortfolio|atcFlagEnableInBacktest|
> atcFlagEnableInExplo
> > re|atcFlagDefaults);} //-end 
> > actionportfolio///////////////////////////////////////////////////
//
> /
> > /// your trading system here fast = Optimize("fast", 12, 5, 20, 1
>  ); 
> > slow = Optimize("slow", 26, 10, 25, 1 ); Buy=Cross(MACD
> > (fast,slow),Signal(fast,slow)); Sell=Cross(Signal(fast,slow),MACD
> > (fast,slow));  BuyPrice=Open;SellPrice=Open;PositionSize=-10;
> > 
> > ------------------------------------------------------------------
--
> -
> > -----------
> > 
> > There are unhandled errors and access violations when you first 
> > generate the composite, it doesn't display data for any symbol.
> > 
> > If you then go to AA settings - portfolio, a popup informs you 
that 
> > there isn't a custom backtester formula.
> > 
> > Click OK and see that the custom bactester box is checked. 
Uncheck 
> > the box. Re-run the backtest and
> > things are OK or will be the run after that. I'm not sure if a 
> > composite existing over the same test period allows the code to 
> > function properly. If this is the case then there is more for TJ 
or 
> > us to do.
> > 
> > As a tool it is OK ie. it does the job so you can verify that 
> > positionsize is correct.
> > 
> > --------------------
> > Cheers, Shutty.
> > 
> > 
> > 
> > 
> > 
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "Glenn" <glennokb@> wrote:
> > >
> > > Shane,
> > > 
> > > Might be better to post the code here as you need to register 
to 
> > view 
> > > ReefCap.
> > > 
> > > Cheers
> > > 
> > > --- In amibroker@xxxxxxxxxxxxxxx, 
"michael_shane_baker" <plusnq@> 
> > > wrote:
> > > >
> > > > Hi Tomasz,
> > > > 
> > > > My understanding is that Ami calculates its position sizing 
> from 
> > > open 
> > > > equity. Recently on Reefcap.com 
> > > > 
> > > > http://lightning.he.net/cgi-bin/suid/~reefcap/ultimatebb.cgi?
> > > > ubb=get_topic;f=49;t=000139;p=3#000034
> > > > 
> > > > some code was posted to allow the user to plot the closed 
> equity 
> > > curve 
> > > > as well as the open equity curve. Would it be possible to 
plot 
> > all 
> > > > three equity curve types, open, closed and total reduced 
equity 
> > > > (closed trades plus open trades at stop) and then allow the 
> user 
> > to 
> > > > reference the appropriate curve value for their position 
sizing 
> > eg 
> > > 1% 
> > > > of open, closed or total reduced equity curve value for 
> > > > fixedfractional position sizing).
> > > > 
> > > > Cheers and thanks
> > > > 
> > > > Shane
> > > >
> > >
> >
>