Hi,

Let's say I want to sort them by how close they are to their 52 weeks high.
How would you do that?   I am not sure to understand the code.

Thanks,

Louis

2008/7/6 Ken Close <[EMAIL PROTECTED]>:

>    Louis:
>
> The short answer is Yes.
>
> How to do it depends on what you consider Best?
>
> Assume Rank is the variable holding the rank value.
>
> Then Buy = Rank <= 500 AND some other buying condition.
>
> Ken
>  ------------------------------
> *From:* [email protected] [mailto:[EMAIL PROTECTED] *On
> Behalf Of *Louis Préfontaine
> *Sent:* Saturday, July 05, 2008 10:17 PM
>
> *To:* [email protected]
> *Subject:* Re: [amibroker] What a Great Ranking Tool
>
> Hi Ken,
>
> But is it possible to do this scanning 8000 tickers to find the best 500
> and automatically includ them in the backtester?  I understand that it is
> possible to manually select the best one thanks to the ranking, but is it
> possible to do all this automatically to make the backtest as reliable as
> possible?
>
> Thanks,
>
> Louis
>
> 2008/7/5 Ken Close <[EMAIL PROTECTED]>:
>
>>    Louis:
>>
>> The code needs additional statements added to it before it can be made
>> into a backtestable system.  The numbers represent ordinal rankings, and you
>> intuitively think that low ranking values mean "better" symbols.  Well,
>> depending on what indicators you have chosen, the low value ranks may or may
>> not be the best ones to buy.  Thus, you really need to think of a set of
>> conditions which should be in Buy situations and which should be in Sell
>> situations.  Another way to backtest such a system is to set up a Rotational
>> Trading model and use the Rank as the PositionScore.  Even in this, you have
>> to alter the ranking (or reverse it) before it can be a good PositionScore
>> variable.  There are so many ways to possibily use this kind of ranking to
>> make a trading system, that more specifics are hard to give.  I know this is
>> not what you wanted or expected to hear but that is what the situation is.
>>
>> HTH,
>>
>> Ken
>>
>>
>>  ------------------------------
>> *From:* [email protected] [mailto:[EMAIL PROTECTED] *On
>> Behalf Of *Louis Préfontaine
>> *Sent:* Saturday, July 05, 2008 8:17 PM
>> *To:* [email protected]
>> *Subject:* Re: [amibroker] What a Great Ranking Tool
>>
>>   Hi everyone,
>>
>> This seem interesting.  Is there a way to add this to a backtest so the
>> backtest would consider let's say the 500 best results?
>>
>> I'll try to be more clear: if I can spot a condition for having a symbol
>> in my watchlist but I want a maximum of 500 tickers in my watchlist, can I
>> do this by using some ranking that would go automatically in the backtest?
>>
>> Thanks,
>>
>> Louis
>>
>> 2008/7/5 Ken Close <[EMAIL PROTECTED]>:
>>
>>>   Paul Ho has come up with a supurb ranking tool.  I have expanded it to
>>> two indicators.  Feel free to expand the code structure to any number of
>>> indicators.
>>>
>>> Possible next step: stick the Tot_Rank values into the OI field for the
>>> symbols, then Plot the Ranks for a visual representation of "where the
>>> symbol is over time".
>>>
>>> The possibilities are endless (or at least enlarged because of Paul's
>>> code idea).  Thanks Paul for your creative input.
>>>
>>> Ken
>>>
>>>
>>> *//  Ranking_Alt01.afl    KSC    **07/05/2008***
>>>
>>> *//  Original code by Paul Ho, Amibroker list **07/05/2008***
>>>
>>> *//  Modifications and expansions by Ken Close **07/05/2008***
>>>
>>> **
>>>
>>> *//  Will ordinal rank every symbol in watchlist for every bar.***
>>>
>>> **
>>>
>>> **
>>>
>>> *mOwnROC = **ROC**(**C**, **14**);*
>>>
>>> *mOwnRSI = **RSIa**(**C**, **14**);***
>>>
>>> *mRoc = **0**;*
>>>
>>> *mRSI = **0**;*
>>>
>>> *list = **CategoryGetSymbols**(**categoryWatchlist**, **16**);*
>>>
>>> *ROCcount[**0**] = rocrank[**0**] = **0**;*
>>>
>>> *RSIcount[**0**] = RSIrank[**0**] = **0**;*
>>>
>>> *for**(i = **0**; (sym = **StrExtract**(list, i)) != **""**; i++)*
>>>
>>> *  {*
>>>
>>> *   **SetForeign**(sym);*
>>>
>>> *   mRoc = **ROC**(**C**, **14**);*
>>>
>>> *   mRSI = **RSIa**(**C**, **14**);*
>>>
>>> *   **RestorePriceArrays**(); *
>>>
>>> *   n = !**IsNull**(mRoc);*
>>>
>>> *   m = !**IsNull**(mRSI);*
>>>
>>> *   roccount += n;*
>>>
>>> *   rsicount += m;*
>>>
>>> *   rocrank = **IIf**(**Nz**(mRoc) > mOwnROC, Rocrank + n, rocrank);*
>>>
>>> *   rsirank = **IIf**(**Nz**(mRsi) > mOwnRSI, Rsirank + m, rsirank);*
>>>
>>> *   Totrank = rocrank + rsirank;*
>>>
>>> *  }*
>>>
>>> *ROCn = **ROC**(**C**, **14**);*
>>>
>>> *RSIn = **RSIa**(**C**, **14**);*
>>>
>>> *Filter** = **1**;*
>>>
>>> *Buy** = **Sell** = **0**;*
>>>
>>> *AddColumn**(ROCn, **"ROCn"**,**1.2**);*
>>>
>>> *AddColumn**(RSIn, **"RSIn"**,**1.2**);*
>>>
>>> *AddColumn**(mRoc, **"MROC"**, **1.2**);*
>>>
>>> *AddColumn**(ROCrank, **"ROCRank"**, **1.0**);*
>>>
>>> *AddColumn**(RSIrank, **"rsirank"**,**1.0**);*
>>>
>>> *AddColumn**(Totrank, **"Totrank"**, **1.0**);*
>>>
>>> **
>>>
>>> *//  To check the sorting, run on a watchlist, then click once on the
>>> date column, ***
>>>
>>> *//  Then shift click on one of the indicators, ie, RSIn, and you will
>>> see the ***
>>>
>>> *//  ordinal values in order.***
>>>
>>> **
>>>
>>> **
>>>
>>>
>>>
>>
>>
>  
>

Reply via email to