PureBytes Links
Trading Reference Links
|
Al,
thank you very much.
<FONT face=Arial color=#0000ff
size=2>
Mixing
units was the problem.
<FONT face=Arial color=#0000ff
size=2>
<FONT face=Arial color=#0000ff
size=2>Regards....Keith
<FONT
face=Tahoma size=2>-----Original Message-----From: Al Venosa
[mailto:advenosa@xxxxxxxxxxxx] Sent: Thursday, 8 January 2004 5:59
AMTo: amibroker@xxxxxxxxxxxxxxxSubject: Re: [amibroker]
Portfolio Backtester & Watchlist - Help required
Keith:
A couple of observations. First, in your assignment of Eqty=50000 and
your subsequent assignments of Max_Trade, Max_risk, etc., you are not
compounding your profits. In order to compound, you should use a negative sign
for your positionsize statement. To simplify, all you need are 2
statements:
SetOption("InitialEquity",50000); //this hard codes your initial equity
or it can be set in Settings
PositionSize = -1 * BuyPrice/(2 * ATR(10));
The second line above says risk 1% of CURRENT equity (not just INITIAL
equity) adjusted by the buyprice divided by volatility (if you have set your
buyprice to be the open, which is not clear from your message). The way you
are doing it, your investment will always be a constant 1% of $50,000
regardless of how large your equity grows. I presume you are using a
1-day delay between the buy signal and the actual entry. In other words, you
can hard code this as well with the following statement:
SetTradeDelays(1,1,1,1);
In your position size code lines, you state that, if PosSize2
>=Max_Trade, use Max_Trade, otherwise use possize2. This mixes units: the
units of Max_Trade is dollars, which in your case is $5000, whereas the units
of PosSize2 is shares. It makes no sense. Thus, mathematically, in order for
your possize2 to ever be >= Max_Trade, the ATR must be less than 0.05,
which is very tiny unless you are buying penny stocks. Thus, most if not all
of the time, your positionsize will be equal to possize2, which is in shares.
PositionSize in Amibroker is always in dollars. So, make sure your units
always match. If you do not want to compound your winnings, then my
interpretation of what you want is:
Eqty = 50000;
Max_Trade = 0.1*Eqty;
Risk = 0.01 * Eqty;
PositionSize = Min(BuyPrice*risk/ATR(10), Max_Trade);
As to your question about the program missing some stocks, Chuck
suggested a possible reason in regards to your roundlot size. Is it also
possible that the stocks missed are relatively new issues that don't have the
same history as the other stocks in your watchlist? You didn't mention your
date range. Eventually, those stocks will trade, according to your code, even
though they came into existence later than the others in your watchlist. Did
you check the entire trade list to see if those 4 stocks did eventually trade
later?
Regards,
Al Venosa
<BLOCKQUOTE
>
----- Original Message -----
<DIV
>From:
<A title=traderkeith2000@xxxxxxxxxxxx
href="">Keith Osborne
To: <A title=amibroker@xxxxxxxxxxxxxxx
href="">amibroker@xxxxxxxxxxxxxxx
Sent: Wednesday, January 07, 2004 12:55
AM
Subject: [amibroker] Portfolio
Backtester & Watchlist - Help required
Hi, can anyone
help me with the following code. It is a simple system I coded to understand
how the backtester works.
The postion sizing
and the trailing stop portions work fine but when I run this code against
the backtester using a watchlist of some 50 stocks then it does not pick up
the 5th, 6th, 8th and 10th stocks in the watchlist and create a long
position.
<SPAN
class=363443701-07012004>The question I have is "does the backtester
evaluate each stock in the order of the watchlist", if so why does it miss
some stocks and pick the next one?
<SPAN
class=363443701-07012004>TIA....Keith
<SPAN
class=363443701-07012004>Code......................
Eqty = <FONT
face=Arial>5<FONT color=#ff00ff
size=1>0000;<FONT
face=Arial>Max_Trade = <FONT color=#ff00ff
size=1>0.1*Eqty; //
10% of Equity per trade //<FONT
face=Arial>Max_Risk = <FONT color=#ff00ff
size=1>0.01*Eqty; //
1% of Equity at risk on each trade //<FONT
face=Arial>ATR_risk =<FONT color=#ff00ff
size=1>2 ; // Multiple
of ATR for position sizing calcs //<FONT
face=Arial>PosSize2 = Max_Risk/(ATR_risk*<FONT
face=Arial>ATR(<FONT
color=#ff00ff size=1>10)); <FONT color=#008000
size=1>// No. of Shares based upon risk and ATR //<FONT
size=1>PositionSize =
IIf<FONT
size=1>(PosSize2>=Max_trade, Max_trade,possize2); <FONT
color=#008000 size=1>// Positon sizing based upon equity or risk limits
//// SYSTEM AREA
//trailstopamount =
2<FONT
size=1>*ATR<FONT
size=1>(10);
// The stop used is a trailing stop
defined as a multiple of ATR(10) //<FONT face=Arial
color=#008000 size=1>// The system is very simple...<FONT
size=1>Buy =
C><FONT color=#ff00ff
size=1>0;<FONT
size=1>Sell = C<<FONT color=#ff00ff
size=1>0;<FONT color=#0000ff
size=1>ApplyStop<FONT
size=1>(2,<FONT
color=#ff00ff size=1>2<FONT
size=1>,trailstopamount,True,True);<FONT
face=Arial color=#008000 size=1>//PositionScore = 100-RSI(); // Prefer
stocks that have low RSI;<FONT
face=Arial>AddColumn<FONT
size=1>(PositionSize,"Pos
Size",1.0<FONT
size=1>);<FONT face=Arial color=#008000
size=1>//AddColumn(PositionScore,"Pos Score",1.2);<FONT
color=#0000ff size=1>AddColumn<FONT
face=Arial>(posSize2,<FONT color=#ff00ff
size=1>"POSsize2",<FONT color=#ff00ff
size=1>1.0);<FONT color=#0000ff
size=1>AddColumn<FONT
size=1>(ATR<FONT
size=1>(10<FONT
size=1>),"ATR"<FONT
size=1>,1.4<FONT
size=1>);<FONT
face=Arial>AddColumn<FONT
size=1>(trailstopamount,"Trail
Stop",1.4<FONT
size=1>);<FONT
face=Arial>AddColumn<FONT
size=1>(C,"Price"<FONT
size=1>,1.2<FONT
size=1>);Send BUG REPORTS to
bugs@xxxxxxxxxxxxxSend SUGGESTIONS to
suggest@xxxxxxxxxxxxx-----------------------------------------Post
AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx (Web page:
<A
href="">http://groups.yahoo.com/group/amiquote/messages/)--------------------------------------------Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Links
To visit your group on the web, go to:<A
href="">http://groups.yahoo.com/group/amibroker/
To unsubscribe from this group, send an email to:<A
href="">amibroker-unsubscribe@xxxxxxxxxxxxxxx
Your use of Yahoo! Groups is subject to the <A
href="">Yahoo! Terms of Service.
<BLOCKQUOTE
><FONT
face="Courier New">---Outgoing mail is certified Virus
Free.Checked by AVG anti-virus system (<A
href="">http://www.grisoft.com).Version:
6.0.552 / Virus Database: 344 - Release Date:
12/15/2003Send BUG REPORTS to
bugs@xxxxxxxxxxxxxSend SUGGESTIONS to
suggest@xxxxxxxxxxxxx-----------------------------------------Post
AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx (Web page: <A
href="">http://groups.yahoo.com/group/amiquote/messages/)--------------------------------------------Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Links
To visit your group on the web, go to:<A
href="">http://groups.yahoo.com/group/amibroker/
To unsubscribe from this group, send an email to:<A
href="">amibroker-unsubscribe@xxxxxxxxxxxxxxx
Your use of Yahoo! Groups is subject to the <A
href="">Yahoo! Terms of Service.
Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Links
To visit your group on the web, go to:http://groups.yahoo.com/group/amibroker/
To unsubscribe from this group, send an email to:amibroker-unsubscribe@xxxxxxxxxxxxxxx
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
|