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

[amibroker] Re: Paul Ho: Memory Challenges with Great Ranking Tool



PureBytes Links

Trading Reference Links

If I understand what you are trying to do, maybe this method - Osaka!

It creates a composite which you can reference in your system for 
backtesting

Note that the 500 may not be precise due to data holes (as Graham 
mentioned). Plus I just added HHV(H,100) as an example but this need 
to be replaced with your rank.

Also, check the categoryGroup or Watchlist is correct in the code.

// Add To Composite RankValue based on Ranking calculation.
/*------------------------
Notes:
    1. Install OSAKA_105.zip ranking located here:
        http://groups.yahoo.com/group/amibroker-dll/
    2. Use CURRENT SYMBOL - an index
             (ie: symbol with no data holes).
    3. Select date range
    4. SCAN
--------------------------*/

osInitialize();
#pragma nocache

// ----------------------------------
// User Variables - enter here
// ----------------------------------
sGroup = 0; // set to desired watchlist.
Rank_No = 500; // set the depth to rank to.
// ----------------------------------
// USER variables - Used for consistency & Ease
// ----------------------------------
sov1 = 100;
sov2 = 0; // not currently used
sov3 = 0; // not currently used
sov4 = 0; // not currently used

// ----------------------------------
// AddToComposite name
// ----------------------------------

ATCName = "~HHV_Rank";

// ----------------------------------
// Ranking Calculation
// ----------------------------------

function Ranking(Sov1,Sov2,Sov3,Sov4)
{

TO = HHV(H,Sov1);

return TO;
}

// ----------------------------------
// End Ranking Calculation
// ----------------------------------

// ----------------------------------
// End User Variables
// ----------------------------------
StartBar = LastValue( ValueWhen( Status("firstbarinrange"),
BarIndex() ) );
FinishBar = LastValue( ValueWhen( Status("lastbarinrange"),
BarIndex() ) );
RankValue = 0; // initialise Rank Value array
List = GetCategorySymbols( categoryGroup, sGroup);

// ----------------------------------
// Create Ranking Table
// ----------------------------------

sRank = osTabCreate();
// Initialize Ranking Columns
// Use loop to add columns to cover # of bars ranked.
i = StartBar;
while (i <= FinishBar)
{
osTabAddColumn("RROR", 1, sRank);
i = i + 1;
}

// ----------------------------------
// Load table with Ranking data
// ----------------------------------
for (j=0; (sTicker = StrExtract( List,j)) != ""; j++)
{
SetForeign(sTicker);
Rank = Ranking(Sov1,Sov2,Sov3,Sov4);
k = StartBar;
i = 0;
while (k <= Finishbar)
{
osTabSetNumber(Rank[k], j, i, sRank);
i = i + 1;
k = k + 1;
}
RestorePriceArrays();
}

// ----------------------------------
// Sorting rank calculations
// ----------------------------------

k = StartBar;
i = 0;
while (k <= Finishbar)
{
osTabSort(sRank, i, False, True);
RankValue[k] = osTabGet(Rank_No-1, i, sRank);
i = i + 1;
k = k + 1;
}

// ---------------------------------------
// clean up - delete srank table
// ---------------------------------------
osTabDelete(srank);

AddToComposite(rankvalue, ATCName, "x",23);

Buy=Sell=1;
Filter=1;
AddColumn(RankValue, "Rank value",1.0);
//END
// ---------------------------------------


Then place this code in your system for backtesting:

HHV_Symbol = Foreign("~HHV_Rank","C");
HHV_Rank   = HHV(H,100) > HHV_Symbol;

Buy = HHV_Rank and cond1 and cond2 etc


------------------------------------

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/