Hi, for lack of any other responses, I'll refer you to post #114739 which may be of some help (though very expensive in your case).
http://finance.groups.yahoo.com/group/amibroker/message/114739 You could potentially modify the persistScores method provided in that post to take an additional argument to use as the composite name instead of hard coded to ~Position. That way you could call the method 3 times; once with "RSI", once with "Price" and once with "Vol". e.g. // Use your own logic for determining what scores to save Buy = ... rsiScores = IIF(Buy, RSI(14), 0); priceScores = IIF(Buy, Close, 0); volScores = IIF(Buy, Volume, 0); persistScores("RSI", rsiScores); persistScores("Price", priceScores); persistScores("Vol", volScores); The end result would be that you would have 3 sorted lists of composites (~Price1 is highest, ~PriceX is lowest) accessible from your backtester code. e.g. ~RSI1, ~RSI2, ..., ~RSIX ~Price1, ~Price2, ..., ~PriceX ~Vol1, ~Vol2, ...~VolX Your backtesting code could count the number of signals held by the Backtester object at each bar (e.g. say 15), then iterate through each of the composite lists to find the relative position of the RSI/Price/Volume of each signal (e.g. price for first signal at bar matches value held at ~Price5[bar] would suggest that that signal's price was less than that of 4 other signals (~Price1[bar]...~Price4 [bar]) and the percentile would therefore be (15-4)/15 = 73.3. You would need to establish some maximum number of signals for which you were willing to track values in order to put a limit on the number of composites (i.e. top 50 signals resulting in ~RSI1...~RSI50, ~Price1...~Price50, etc.). Warning: This will result in a LOT of composites and will be VERY slow. But, it may get you what you're after. I haven't tried out this proposal, so make sure you test everything out if you decide to go with it. Mike --- In [email protected], "loveyourenemynow" <[EMAIL PROTECTED]> wrote: > > Happy 2008 to everyone!! > > Let's say I want to only trade stocks in the top 50% under 3 different > criteria ( volume , price and RSI for example) on any given day. > I other words I backtest at portfolio level a given strategy and I then > want to see cross-sectional selection effects under different ranking > at the same time. > Position score would partially achieve the goal (it doesn't give > direct control over the percentile rank a far as I understand, since > it is constrained only by number of max position an funds, while the > number of signals is not fixed, so the top 50% could correspond to > different numbers on different days). > > I was thinking of creating a multidimensional array for each bar and > sort it by different raws/columns values but it would be rather long > and slow I suppose. > > I would also need the number of raw signals on any given day.Can it be > obtained without looping through the signal list, and counting? > > > Any suggestion? > > Thanks > > Ly >
