PureBytes Links
Trading Reference Links
|
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/
|