PureBytes Links
Trading Reference Links
|
Hello,
The first step to success is to describe the goal, not the
step you are locked on.
This is I belive the very first time when you actually
described the goal.
Once this is establish the rest is easy.
ApplyStop( stopTypeNBar, stopModeBars, 15 );
// exit after 15 days
SetBacktestMode( backtestRegularRaw ); SetCustomBacktestProc("");
Buy = ...
Sell = ...
MaxBuys = 3;
if(
Status("action") == actionPortfolio ) { bo = GetBacktesterObject();
bo.PreProcess();
for( i =
0; i < BarCount; i++ ) { cntBuys =
0;
// look at new
signals AND Exclude signals if they exceed maxBuys
for(
sig = bo.GetFirstSignal(i); sig; sig = bo.GetNextSignal(i) ) {
// this
handles limiting of number of order per day
CanEnter = False; if( sig.IsEntry() AND CntBus <= MaxBuys ) {
if( ! bo.FindOpenPos( sig.Symbol ) )
{
CanEnter
= True;
CntBuys++;
}
}
// this
handles allowing exits only if position is at least 2 bars
old
CanExit = False; if( sig.IsExit() ) {
if( pos = FindOpenPos( sig.Symbol ) )
{
CanExit = pos.BarsInTrade > 2;
}
}
// if can
not enter/exit - mark price = -1 - means ignore signal
if( ! CanEnter AND ! CanExit ) sig.Price =
-1;
bo.ProcessTradeSignals( i );
} bo.PostProcess();
}
Best regards, Tomasz
Janeczko amibroker.com
----- Original Message -----
Sent: Friday, October 19, 2007 12:26 AM
Subject: [amibroker] Re: Eliminating Phantom Positions in
CBT
> Tomasz, GP > >
I have no desire to use low level. I am perfectly happy to use the >
regular backtester. I am trying to port my trading system to AB. What > I
need to achieve is as follows which I could not do in regular >
backtester (assuming a long only EOD system). > > 1. limit the
number buys to 4 per day(bar) > 2. Positions are sold if we have held them
for at least 2 bars from > the date of entry (not from the date of last
buy signal), if we have > sell signal. > 3. Force sell positions
after 15 days from the date of entry (not > from the date of last buy
signal). > > Now I have done this very easily in AIQ &
WealthLab. I can drop AB > and go back to those other software packages.
AIQ does not have the > openness of AB and WL is too slow. I have been
struggling with the > above for the last three month. I've asked the tech
support and > people on this board to no avail. > > Below is
code kindly provided by Edward Pottasch and modified by me > to limit the
number position to 4. However, then I face the problem > that I have
documented previously. I think I see why it produces the > problem.
Because when the max buys per day limit is met it sets the > position
size to zero and it does not nullify the buy signal. So the > system
keeps buy signal as a buy with zero value. > > I sometimes I think
Tomasz enjoys to see new users suffer(LOL, TIC). > >
SetBacktestMode( backtestRegularRaw ); > SetCustomBacktestProc("");
> MaxBuys = 3; > if( Status("action") == actionPortfolio ) >
{ > bo = GetBacktesterObject(); >
bo.PreProcess(); > for( i = 0; i < BarCount; i++ )
> { > cntBuys = 0; > > // look at new signals
AND Exclude signals if they exceed > maxBuys > for( sig =
bo.GetFirstSignal(i); sig; sig = > bo.GetNextSignal(i) ) > {
> OpenPos = bo.FindOpenPos( sig.Symbol ); > // check for entry
signal and long signal >
if( sig.IsEntry() ) > { > if( cntBuys > MaxBuys ) >
{
>
sig.PosSize = 0;
> }
> else
if( IsNull(OpenPos)) > { >
cntBuys = cntBuys + 1; > } > }
> > } >
bo.ProcessTradeSignals( i ); > } >
bo.PostProcess(); > } > > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko"
<groups@xxx> > wrote: >> >> Exactly. In low-level
mode AmiBroker does NOT enter/exit ANY trades >> unless you tell it to
do so by calling EnterTrade/ExitTrade. >> Entire signal processing is
upto the user. >> >> Beginners should rather avoid using
custom backtester esp. low- > level mode unless >> they are
programmers and know exactly what they are doing. >> Even then it is
advised to use _TRACE command to log all your >> conditions and
function calls into DebugView window. >> >> Custom backtester
low-level is for *advanced* programmers only >> who have experience in
debugging their own formulas. >> >> Best regards, >>
Tomasz Janeczko >> amibroker.com >> ----- Original Message
----- >> From: "gp_sydney" <gp.investment@xxx> >> To:
<amibroker@xxxxxxxxxxxxxxx> >> Sent:
Thursday, October 18, 2007 11:22 PM >> Subject: [amibroker] Re:
Eliminating Phantom Positions in CBT >> >> >> >
If you're using the low-level CBT, then you're entering and >
exiting >> > trades yourself, so I don't see how there can be
"phantom" trades > that >> > you don't know
about. >> > >> > Maybe the issue is with your Buy and
Sell arrays. If you get a buy >> > signal on one bar but don't take
it, it won't still show up as a >> > signal on the next bar unless
you specifically do something to > make it >> > so. So if
you're only using the Signal object to choose buys, any > you >>
> ignore at one bar won't still be there at the next bar unless the >
Buy >> > array happens to have True values at both bars. >>
> >> > Or are you perhaps removing redundant signals with
ExRem? >> > >> > Regards, >> >
GP >> > >> > >> > --- In amibroker@xxxxxxxxxxxxxxx, "rdavenportca"
<davenport.r@> > wrote: >> >> >> >> I
am doing portfolio backtesting on a system that has a maximum > number
>> >> of open positions set to 30. I use the Custom
Backtester Signal > Object >> >> (low level) to only take
certain trades on a given day (Day 1). > On >> >>
that day there may have been other valid trades that I did not > take or
>> >> were not taken because I already had my 30 positions
full. >> >> >> >> The problem I have is that a
symbol that was a potential trade > on Day 1 >> >> may
setup to be a valid trade on Day 2, but I cannot enter it on > Day 2
>> >> because Amibroker "thinks" I'm in the trade. On the
symbols for > trades >> >> I did not take, I am blocked
from taking any future trade in > that >> >> symbol until
the exit has triggered. Remember that I'm not > actual in a
>> >> position on this symbol, thus it is a "phantom"
position. >> >> >> >> My guess is that there is a
hanging exit order still in the > system for >> >> these
symbols causing the program to ignore new buys. I've > tried
>> >> setting the sig.Price = -1 and everything else I can think
of to > no >> >> avail. 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 >> > >> >
>> > >> > >> > >> >
> > > > 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 > > <*> 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/ > > >
__._,_.___
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
__,_._,___
|