Negative values in position size refer to percent of current equity.
It is described in the User's Guide:
http://www.amibroker.com/guide/h_backtest.html


Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "Geoff Mulhall" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Thursday, May 03, 2007 2:01 PM
Subject: [amibroker] Re: Position sizing based on current equity possible ???


>I can't see Equity anywhere in this code Graham !
> 
> What am I missing ? 
> 
> --- In [email protected], Graham <[EMAIL PROTECTED]> wrote:
>>
>> I thought you could just so it as this in the main afl code
>> 
>> RiskPerContract = 2*ATR(50) x PointValue x TickSize;  ( eg 2*ATR
> (50) x
>> 100000 x 0.0001 )
>> 
>> PositionSize = -0.75 x MarginDeposit / RiskPerContract;
>> 
>> -- 
>> Cheers
>> Graham
>> AB-Write >< Professional AFL Writing Service
>> Yes, I write AFL code to your requirements
>> http://www.aflwriting.com
>> 
>> 
>> On 24/04/07, Thomas <[EMAIL PROTECTED]> wrote:
>> >
>> > Hello,
>> >
>> >
>> >
>> > I am trying to write a system that risks always 0.75% of CURRENT 
> EQUITY
>> > per trade and uses ATR stops, which means that I need the custom 
> backtester
>> > to access actual equity. The problem is that I can't access the 
> ATR value
>> > in the signal object, where I could define the position size.
>> >
>> >
>> >
>> > Here is the description that shows how it should work when it is 
> finished:
>> >
>> >
>> >
>> > 1.)     RiskPerContract = 2*ATR(50) x PointValue x (1/TickSize);
>> >
>> > 2.)     Contracts = (CurrentEquity x 0.75%) / RiskPerContract;
>> >
>> > 3.)     PositionSize = Contracts x MarginDeposit;
>> >
>> >
>> >
>> > I have already tried a lot and can't find any solution. Please 
> help if
>> > possible. See my code below. For simplicity i have just tried to 
> access the
>> > ATR value. It seems that AmiBroker simply ignores the value of 
> sig.PosSizeand instead uses full equity for the trade.
>> >
>> > Thanks in advance !
>> >
>> >
>> >
>> > Kind regards,
>> >
>> > Thomas
>> >
>> >
>> >
>> > SetCustomBacktestProc("");
>> >
>> >
>> >
>> > *if*( Status("action") == *actionPortfolio* )
>> >
>> > {
>> >
>> >    bo = GetBacktesterObject();
>> >
>> >    bo.PreProcess();
>> >
>> >
>> >
>> >    *for*( bar = 0; bar < *BarCount*; bar++)
>> >
>> >    {
>> >
>> >        CurrentPortfolioEquity = bo.Equity;
>> >
>> >
>> >
>> >        *for*( sig = bo.GetFirstSignal(bar); sig; sig = 
> bo.GetNextSignal
>> > (bar))
>> >
>> >        {
>> >
>> >        sym = sig.Symbol;
>> >
>> >        SetForeign(sym);
>> >
>> >        MyATR = Ref(2*ATR(50),-1);
>> >
>> >        RestorePriceArrays();
>> >
>> >
>> >
>> >        *if*( CurrentPortfolioEquity > 0 ) sig.PosSize = MyATR
> [bar];
>> >
>> >        *else* sig.PosSize = 0;
>> >
>> >        }
>> >
>> >        bo.ProcessTradeSignals(bar);
>> >
>> >    }
>> >
>> >    bo.PostProcess();
>> >
>> > }
>> >
>> 
>> /*******************************************************************
> ****/
>> >
>> > // sample rules:
>> >
>> > *Buy* = Cross( CCI(), 100 );
>> >
>> > *Sell* = Cross( 100, CCI() );
>> >
>> > *Short* = Cross( -100, CCI() );
>> >
>> > *Cover* = Cross( CCI(), -100 );
>> >
>> 
>> /*******************************************************************
> ****/
>> >
>> > SetOption("InitialEquity",100000);
>> >
>> > SetOption("FuturesMode",*True*);
>> >
>> > *PointValue* = *PointValue* * (1/*TickSize*);
>> >
>> > *RoundLotSize* = 1;
>> >
>> > *MarginDeposit* = 1000;
>> >
>> 
>> /*******************************************************************
> ****/
>> >
>> > _SECTION_BEGIN("Price");
>> >
>> > SetChartOptions(0,*chartShowArrows*|*chartShowDates*);
>> >
>> > _N(*Title* = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, 
> Hi %g,
>> > Lo %g, Close %g (%.1f%%) {{VALUES}}", *O*, *H*, *L*, *C*, 
> SelectedValue(
>> > ROC( *C*, 1 ) ) ));
>> >
>> > Plot( *C*, "Close", ParamColor("Color", *colorBlack* ), 
> *styleNoTitle* |
>> > ParamStyle("Style") | GetPriceStyle() );
>> >
>> > _SECTION_END();
>> >
>> 
>> /*******************************************************************
> ****/
>> > 
>> >
>>
> 
> 
> 
> 
> 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
> 
> 
> 
> 
>

Reply via email to