Wow! Thanks Ed.
There's alot of learning in your code. Really
appreciate you posting.
I'll send you an update once I digest it all...
:-)
--- In amibroker@xxxxxxxxxps.com,
"Edward Pottasch" <empottasch@...>
wrote:
>
> maybe
this code helps also:
>
>
>
http://www.mail-archive.com/amibroker-beta@xxxxxxxxxxx.com/msg00262/equalLongShort001.afl
>
>
>
>
>
> ----- Original Message -----
> From: cipherscribe
> To: amibroker@xxxxxxxxxps.com
> Sent: Wednesday, September 24, 2008 9:10 PM
> Subject:
[amibroker] Re: Net position sizing.
>
>
> Thanks
Ed.
>
> I love that exclamation mark!
>
> I am using
the following code, but it's not eliminating the trades
> above the
param number. I tried using the default backtest mode
> (removed the
"backtestRegularRawMulti" statement), and ran the code
> with a
watchlist of symbols, but I still get more trades processed
> than that
in my param field.
>
> Any clues here on why this code may not be
working?
>
> One clue is when I set the parameter to zero, it
works - no long
> trades are executed. But any number other than zero,
and it processes
> them all in the backtest.
>
>
_SECTION_BEGIN("Maximum buys");
> // Maximum buys in a
period
> //-----------------------------
>
SetCustomBacktestProc("");
> Num =
Param("MaxBuys",4,0,9,1);
> MaxBuys = Num;
>
>
if( Status("action") == actionPortfolio ) {
>
> bo =
GetBacktesterObject();
> bo.PreProcess();
>
>
for( i = 0; i < BarCount; i++ ) {
> cntBuys = 0;
> for( sig=
bo.GetFirstsignal(i); sig; sig = bo.GetNextsignal(i) ) {
> if(
sig.Islong() ) {
> if( CntBuys > MaxBuys - 1 ) {
> sig.possize=
0;
> } else {
> cntBuys++;
> }
> }
> }
>
bo.ProcessTradeSignals( i );
> }
>
bo.PostProcess();
> }
>
//-----------------------------
>
_SECTION_END();
>
> --- In amibroker@xxxxxxxxxps.com,
"Edward Pottasch" <empottasch@>
> wrote:
> >
>
> if you are for instance looping through the trades like:
> >
> > for( trade = bo.GetFirstTrade(); trade ; trade
=
bo.GetNextTrade() ) {
> >
> > then you can check:
if (!trade.IsLong)
> >
> > rgds,Ed
> >
>
>
> >
> >
> > ----- Original Message -----
> > From: cipherscribe
> > To: amibroker@xxxxxxxxxps.com
> > Sent: Wednesday, September 24, 2008 8:33 PM
> >
Subject: [amibroker] Re: Net position sizing.
> >
> >
> > How do you identify a short signal in the preprocess? I see only
the
> > following signal object methods:
> >
> >
Methods:
> >
> > * bool IsEntry()
> >
>
> True if this is entry signal, False otherwise
> >
> >
* bool IsExit()
> >
> > True if this is exit signal, False
otherwise
> >
> > * bool IsLong()
> >
>
> True if this is long entry (buy) or long exit (sell) or scale-in
>
> signal, False otherwise
> >
> > * bool
IsScale()
> >
> > True if this is scale-in or scale-out
signal, False otherwise
> >
> > Is there a IsShort()
method?
> >
> > Cheers,
> >
> >
Adrian
> >
> > --- In amibroker@xxxxxxxxxps.com,
"cipherscribe"
> > <adrian.mollenhorst@> wrote:
>
> >
> > > Thanks Thomasz and Ara,
> > >
>
> > I am using the "backtestRegularRawMulti" option, which gives
me
> > > multiple signals.
> > >
> > >
Thanks for the hint to direct my attentions toward the custom
> >
> backtester. I shall look into it and hopefully code what I am
>
> looking for.
> > >
> > > Cheers,
> >
>
> > > Adrian
> > >
> > >
>
> > --- In amibroker@xxxxxxxxxps.com,
"Tomasz Janeczko" <groups@>
wrote:
> > > >
>
> > > By default you can NOT have both LONG and SHORT pos on the
same
> > > symbol open at the same time.
> > > >
> > > > The only way to have it is to use low-level custom
backtester.
> > > > http://www.amibroker.com/guide/a_custombacktest.html
>
> > >
> > > > Best regards,
> > > >
Tomasz Janeczko
> > > > amibroker.com
> > > >
----- Original Message -----
> > > > From: "cipherscribe"
<adrian.mollenhorst@>
> > > > To: <amibroker@xxxxxxxxxps.com>
>
> > > Sent: Wednesday, September 24, 2008 5:17 PM
> > >
> Subject: [amibroker] Net position sizing.
> > > >
>
> > >
> > > > >I trade the ES Futures contract
mechanically, and I want my
to be
> > able
> > > >
> to backtest my system such that it has a maximum net
> position at
any
> > > > > one time of abs(x) positions.
> >
> > >
> > > > > I can set the option to limit the
number of Maximum Open
> Positions,
> > > > > but this
doesn't help me when I am trading only 1 instrument.
> > > >
>
> > > > > For example (Note I am using the backtest
mode
> > > > > "backtestRegularRawMulti", so I take
every raw signal my
equity
> > allows
> > > > >
me.), the system can issue a buy, which will make me long.
> If
the
> > > > > system issues a short, while I'm long, it will
send a short
> order,
> > > > > which will make me
effectively flat.
> > > > >
> > > > >
This will count as 2 open orders in the backtester, but in
> >
reality, I
> > > > > have no positions open, and could take
another abs(x) in
either
> > > > > direction before I hit
my maximum limit of open positions (x).
> > > > >
>
> > > > So if I had 2 longs open, I could accept up to 5 shorts,
if my
> > maximum
> > > > > open position(x) was
abs(3).
> > > > >
> > > > > This is
different from exiting a position when a signal in the
> > > >
> opposing direction is triggerred, as in
>
"ReverseSignalForcesExit",
> > > > > since that option
cancels the existing order. I need both to
> remain
> > >
> > open, remembered, and exited at my sell/cover trigger, not
the
> > > > > opposing short/buy signal.
> > >
> >
> > > > > What I need is for Amibroker to
tabulate both long and short
> > positions
> > > >
> distinctly, to count longs as positive, shorts as
> negatively, and
to
> > > > > be able to set a maximum net position.
>
> > > >
> > > > > I can do this in reality with
no problems - send orders to IB
> > based on
> > > >
> a maximum net position, but I'd like to be able to do it in
> >
> > > backtester, so I can validate the system.
> > >
> >
> > > > > Any Ideas?
> > > > >
> > > > >
> > > > >
------------------------------------
> > > >
>
> > > > > 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
> > > > >
>
> > > >
> > > > >
> > >
>
> > >
> >
>