Hello, For this to work, you would need to: 1. Set worst rank held to maximum value (5 in your case)
2. Limit the number of open positions using custom backtester depending on changing universe count. To do that you need to iterate through signal list each bar and set signal.symbol to -1 when signal count exceeds the desired worst rank on bar-by-bar basis. 3. To know how many symbols are in universe you may use AddToComposite( 1, "~~~UNIVCOUNT", "C") pre-scan (done only once) and refer later to it in custom backtester code using Foreign(). Best regards, Tomasz Janeczko amibroker.com ----- Original Message ----- From: re_rowland To: [email protected] Sent: Thursday, March 08, 2007 1:01 AM Subject: [amibroker] Converting "WorstRankHeld" option to "WorstPercentileHeld" When using ENABLEROTATIONALTRADING() I would like to specify the "WorstRankHeld" option as a "WorstPercentileHeld". The reason for this is because when using a Watchlist such as the Fidelity Select Funds, the number of funds changes from a quantity of 7 in the 1980s to a quantity of 42 today. Therefore, specifying an "ordinal" rank does not work the same over all time periods (ie, WorstRankHeld = 5 may make perfect sense when the universe contains 42 funds, but not when it holds just 7). Conceptually, I know that I would code it as: SetOption("WorstRankHeld", WorstPercentileHeld * UniverseCount); However, I do not know how to calculate a UniverseCount. My initial thought is to use the approach described in the AddToComposite example in the User's Guide. Does anyone know if this will work? Additionally, the Back Tester would have to recalculate the WorstRank Held option on each iteration for this to work. Otherwise, it would just calculate it once and then use it far all dates. Any help or insight would be appreciated.
