PureBytes Links
Trading Reference Links
|
Al,
I will respond in detail tommorrow as I was working whole day on
bringing new 4.68.2 BETA that provides
enhanced error reporting in AFL editor and couple of fixes to problems that
surfaced with 4.68.1
Best regards, Tomasz
Janeczko amibroker.com
----- Original Message -----
Sent: Tuesday, January 25, 2005 2:42
PM
Subject: Re: [amibroker] Expectancy
Thanks for the clarification,
TJ. Yes, you are right. I did miss the ApplyStop function. I'm more
interested, however, in dynamic, volatility-based max stoplosses and
calculating risk as a function of equity, not as a function of the dollar
amount invested per trade. I took a crack at re-writing your Expectancy3
example using a 2*ATR(10) stoploss rather than a percentage stoploss, using a
constant defined risk as 1% of current equity. Now, don't shoot me, but is the
code below correct? I only changed 2 lines (bold font) plus the ApplyStop at
the end.
SetCustomBacktestProc(""); MaxLossPointStop
= 2*ATR(10);
// dynamic volatility
stoploss
function FindEquityAtDateTime( eq,
dt, Value ) { found = -1; for( i = 0; i < BarCount AND found == -1; i++ ) {
if( dt[ i ] == Value ) found = i;
} return IIf( found != -1, eq[ found -
1 ], Null ); }
if( Status("action") == actionPortfolio ) {
bo = GetBacktesterObject();
bo.Backtest(1);
// run default backtest procedure
SumProfitPerRisk = 0; NumTrades =
0; <>
dt = DateTime(); eq = Foreign("~~~EQUITY", "C" );
for( trade = bo.GetFirstTrade(); trade;
trade = bo.GetNextTrade() ) {
Risk = 0.01 * eq; //risk is defined as a
constant 1% of current equity >
EquityAtEntry =
FindEquityAtDateTime( eq, dt, trade.EntryDateTime
);
<> RiskAsPecentOfCurrentEquity =
100 * Risk / EquityAtEntry;
RMultiple =
trade.GetProfit()/Risk;
trade.AddCustomMetric("Initial risk
$",
Risk );
trade.AddCustomMetric("Equity at
entry", EquityAtEntry );
>trade.AddCustomMetric("Risk as % of
Eq.", RiskAsPecentOfCurrentEquity );
trade.AddCustomMetric("R-Multiple", RMultiple );
SumProfitPerRisk = SumProfitPerRisk +
RMultiple; NumTrades++;
} Expectancy3 = SumProfitPerRisk /
NumTrades; bo.AddCustomMetric( "Expectancy (per risk)", Expectancy3 );
bo.ListTrades(); } // your trading system
here
ApplyStop( stopTypeLoss, stopModePoint, MaxLossPointStop );
Check AmiBroker web page
at: http://www.amibroker.com/
Check
group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Links
|
|