Ken,
Sorting and ranking is part of portfolio backtest. You can use this process not
only to do actual backtest
but also to output ranking/sorting results.
All you need is to assign your score to
PositionScore variable.
Then, run backtest. All your signals will be ranked and sorted according to
absolute value of position score.
The code below shows how. It also generates "myoutput.txt" Comma Separated
Values (CSV) file with Symbol, Score
lines. Lines are in chronological order, within same date/time the lines are
sorted according to absolute value of score.
It also outputs the same into DebugView.
Buy=1;
Sell=0;
SetBacktestMode( backtestRegularRaw );
PositionScore = 100 - RSI(); // anything you like (will be sorted/ranked
according to absolute value of pos score)
SetCustomBacktestProc("");
OutputFileName = "myoutput.txt";
if( Status("action" ) == actionPortfolio )
{
bo = GetBacktesterObject();
bo.PreProcess();
dt = DateTime();
fh = fopen( OutputFileName, "w" );
fputs( "Symbol, Score\n", fh );
for( i = 0; i < BarCount; i++ )
{
strdt = DateTimeToStr( dt[ i ] );
Line = "\nDate : " + strdt + "\n";
_TRACE( Line );
fputs( Line, fh );
for( sig = bo.GetFirstSignal(i); sig; sig = bo.GetNextSignal(i) )
{
Line = sig.Symbol + "," + sig.PosScore + "\n";
_TRACE( Line );
fputs( Line, fh );
}
bo.ProcessTradeSignals( i );
}
fclose( fh );
bo.PostProcess();
}
Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message -----
From: Ken Close
To: [email protected]
Sent: Friday, May 09, 2008 7:38 PM
Subject: [amibroker] Greybeard Topic - Sorting and Ranking Arrays
It has been fun to search the yahoo archives back to 2002 and see names of a
lot of the original folks who got on the Amibroker bandwagon back in the early
days, many of whom are no longer around (at least not posting like they used
to). Boy, how the program has evolved and improved over these many years.
I was looking back there in the archives for messages on the Osaka Plugin
(which is still on my hard drive since 2002 but which I have never used).
Maybe now......
I have a need to take a watchlist and position rank several columns of
calculations and determine the postion rank of the ticker for that calculation;
then do the same for another column (calculation), get the position rank for
that additional column, and then combine the position ranking numbers for the
columns for each ticker, sort of to get a Master ranking parameter.
My question is: what new features in AB might help accomplish this? Surely
the Osaka Plugin (2002 vintage) is not the only way to do what I want. I have
not really studied nor used Static and Dynamic variables---is this the set of
commands that I would use with looping to get position ranks of a watchlist?
I did find and just tested some code from the Library which used just these
tools (variables and looping) and it was painfully slow and would not really
work for the application I have in mind. I am uncertain if the code in that
example can be modified to make it faster.
Any suggestions about this age-old question/problem, given the many advances
of Amibroker since 2002??
Thanks for any ideas (the more specific the better).
Ken