After reading Ed's post below, I searched the User's Guide for positionsize. There is a function SetPositionSize(array, method) which returns an array. I've never used the function, and don't really understand how it works. However, perhaps you can somehow use it. Maybe you can even modify the input array on the fly to achieve your desired result.

Perhaps you can write a loop which calculates mypositionsize and myequity arrays. Then, after the loop, use SetPositionSize(mypositionsize, spsShares).

If above works, I don't think that CBT would be necessary.

Just a thought, no guarantees.
-- Keith

Corey Saxe wrote:


Hi Ed,
I don't use MaxOpenPositions because it pertains to open positions in multiple symbols at one time, (Portfolio trading). I can set it to 3 and still easily open more than 3 contracts at a time in one symbol, like the old backtester. And that's all I'm trying to do. Just increase or decrease the number of contracts to trade in just one symbol, depending on the current equity. Using:
*Eq    = Foreign("~~~EQUITY",   "C"**);
*Does return the correct equity for use in a backtest, but the backtest button has to be pushed twice. ** I think that in the end, unless I'm missing something simple, I'll have to manually program separate code to keep track of my equity. -CS
    ----- Original Message -----
    *From:* Edward Pottasch <mailto:[email protected]>
    *To:* [email protected] <mailto:[email protected]>
    *Sent:* Thursday, May 28, 2009 3:02 AM
    *Subject:* Re: [amibroker] Using Equity to Compute Position Size

    Hi Corey,
you can use equity but indeed you need one level deeper inside the
    backtest code. What I do not understand is why MaxPositions does
    not seem to work on a higher level backtest. Will ask Marcin later.
I will maybe try to code using Equity in the custom backtester later. But on a higher level in the backtester you need to use
    PositionSize for reasons Graham gave.
I use Equity on this higher level though. For instance I have
    written code that takes a profit per day at e.g. 500$, or per
    trade at e.g. 150$. What I do is that I let the code first
    calculate the equity without these restrictions and then feed the
    resulting equity into a procedure that takes the profits. So
    basicly within 1 AFL code the equity curve is calculated twice.
But I do not see you can use that for your question. And yes if you use: PositionSize = -10;
    SetOption("MaxOpenPositions", 3);
    RoundLotSize = 1;
    MarginDeposit = 5000;
    TickSize = 0.25;
    PointValue = 50;
the equity curve should not be able to explode because the
    MaxOpenPositions is set to 3. But I also see it explode because it
    takes more than 3 positions as the equity increases. This seems to
    be wrong. I will ask marcin or TJ.
regards, Ed .


Reply via email to