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

[amibroker] Re: Round lot size based on position size



PureBytes Links

Trading Reference Links

Hi,

I believe that you should be able to make it work from within the 
custom backtester. Your portfolio equity, on a bar by bar basis, is 
available as a property from the backtester object (e.g. bo.Equity).

Similarly, the purchase price is available as a property from each 
signal object (sig.Price).

Doing the math along the lines of the following should give you the 
number of shares:

((sig.PosSize / -100) * bo.Equity) / sig.Price

Note that you must transform the position size from a negative whole 
value to a positive fraction before multiplying against the equity.

http://www.amibroker.com/guide/a_custombacktest.html

Mike

--- In amibroker@xxxxxxxxxxxxxxx, Flávio Veloso <flavso@xxx> wrote:
>
> Hi Mike.
> 
> Thanks for your reply.
> 
> Unfortunately I'm setting PositionSize as percent of current equity 
> (based on my stop), and I think that's the problem.
> 
> I guess that if we knew the number of shares in advance, we could 
take 
> care of the issue in simple AFL:
> 
> 	RoundLotSize = IIf(shares >= 100, 100, 1);
> 
> Perhaps there is some way to get position size value *in dollars* 
using 
> the custom backtester? If yes, then we could just divide the dollar 
> value by the close to get the approximate number of shares. Do you 
know 
> if it is possible do that that?
> 
> Mike escreveu:
> > 
> > 
> > If you do not come up with any other solution, you can always 
alter
> > the position size of each individual signal using custom 
backtester
> > code.
> > 
> > Assuming that you are setting numbers of shares in the PostionSize
> > calculation (as opposed to percentage of equity), something along 
the
> > lines of the following (untested) code should work:
> > 
> > SetOption("UseCustomBacktestProc", True );
> > 
> > if (Status("action")== actionPortfolio) {
> > bo = GetBacktesterObject();
> > bo.PreProcess();
> > 
> > for (bar = 0; bar < BarCount; bar++) {
> > for (sig = bo.GetFirstSignal(bar); sig; sig =
> > bo.GetNextSignal(bar)) {
> > if (sig.IsEntry() && sig.PosSize > 100) {
> > sig.PosSize = floor(sig.PosSize/100) * 100;
> > }
> > }
> > 
> > bo.ProcessTradeSignals(bar);
> > }
> > 
> > bo.PostProcess();
> > }
> > 
> > Mike
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx <mailto:amibroker%
40yahoogroups.com>, 
> > Flávio Veloso <flavso@> wrote:
> >  >
> >  > Hi all.
> >  >
> >  > Is it possible to use different round lot sizes (e.g. by 
setting
> >  > RoundLotSize variable) depending on the number of shares that 
are
> > going
> >  > to be bought/short?
> >  >
> >  > Basically all I want is RoundLotSize = 100 for any position 
size
> > that
> >  > results in more than 100 shares to be bought/short, and 
RoundLotSize
> > = 1
> >  > for the rest.
> >  >
> >  > For example:
> >  >
> >  > Number of shares (based on PositionSize): 75
> >  > Use RoundLotSize = 1
> >  > Shares to buy = 75
> >  >
> >  > Number of shares (based on PositionSize): 125
> >  > Use RoundLotSize = 100
> >  > Shares to buy = 100
> >  >
> >  > Number of shares (based on PositionSize): 360
> >  > Use RoundLotSize = 100
> >  > Shares to buy = 300
> >  >
> >  > Anyone doing this? If so, how?
> >  >
> >  > Thanks in advance.
> >  >
> >  > --
> >  > Flávio
> >  >
> > 
> > 
> 
> 
> -- 
> Flávio
>



------------------------------------

**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

*********************
TO GET TECHNICAL 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/