[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Ranking, Osaka plug in



PureBytes Links

Trading Reference Links



In another attempt to rank in a different manner I spent a week or so trying the get the Osaka plug in to produce ranked results.  I have been able to get it to do only the simplest of tasks.  As soon as I try to set it up to actually rank some real indicator values I have severe problems with the AB code to get the symbols and indicator values into Osaka, let alone trying to get the supposedly ranked values out of the table.  I have read all the Osaka related posts and tried all the code examples, no joy.

Hers is some code I have been working with.  There is probably more than one error in here.

/*
The code below should be explored against a smallish watchlist, say 20
symbols. It creates AND saves a table while the first stock is being
processed, AND instead of recreating it for subsequent stocks, loads it from
disk. The idea is that if lots of processing was required to create the
table (unlike this simple test), it'd only have to be done once for the
whole test run.

Dave Merrill
---------------------- */


// CONFIG
List =
14; // watchlist to examine; must be list under test; 14 = C8080 list
NumberOfTestColumns =
5; // 66, three months of data per stock
MomPer =
14; // Optimize("MomPer", 14, 4, 21, 1);

// FUNCTIONS
function fListLen(List) {
      i =
0;
     
while (StrExtract(List, i) != "") i++;
     
return i;
}

// init
TickerList =
CategoryGetSymbols (categoryWatchlist, List);
CountTickers = fListLen(TickerList);
StockNum =
Status( "StockNum" );       // # of stocks in the list
FirstStock = (StockNum ==
0);

// init table, make col for each bar in test
osInitialize();
table =
osTabCreate();
osTabAddColumn ("Symbol" , 2, table, StrSize=6);

if (FirstStock) {
     
for(i = 1; i <= NumberOfTestColumns; i++) {
           
osTabAddColumn ("MAM" + i, 1, table);
      }
     
osTabSave( , table);
}
else {
     
osTabLoad( , table);
}

ColCount =
osTabGetColumnCount (table);


// Now fill the columns with some useful data.
// CALCULATING SCORES and saving them to the table  // this area is new and needs testing
score =
100*(Close /MA(Close, (2*MomPer) +1) -1);  // MAM

for (i=0; (ticker = StrExtract (TickerList, i)) != ""; i++ )
{


SetForeign (ticker);
osTabSetString( ticker, i, 0, table );  // the table is filling with the symbols and fixed data, but no MAM

for( j = 0; j <= NumberOfTestColumns; j++ )
  {
  
osTabSetNumber( score[ j ], i, j , table );
  }
}
osTabExport ("MAM_table_fill.csv" ,"," , table);
// Sort the table

osTabSort(table, 5 );  // sort by last column, 66
Output =
"";
for( i = 0; i < 10; i++ )  // top ten MAM rankings
{
  Output = Output  +
osTabGet( i, 0, table ) + ", "osTabGet( i, 1 , table ) + "\n"; // symbol and rank
}

Output;

Filter =
1; //Status("LastBarInTest");
AddColumn (ColCount, "ColCount" , 1.0);
AddColumn (StockNum, "StockNum" , 1.0);
AddColumn (CountTickers, "CountTickers" , 1.0);
AddColumn(table, "table" , 1.0);
AddColumn(score, "MAM", 7.1);
//AddColumn(MAM, "Rank");

// clean up
osTabDelete (table);

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 other support material please check also:
http://www.amibroker.com/support.html





YAHOO! GROUPS LINKS





No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.323 / Virus Database: 267.8.8/37 - Release Date: 7/1/2005