Hello,

This will rank signals. If I have 

Buy:RSI(2)<5;
PositionScore=Close;
SetOption("MaxOpenPositions",3);

It will buy 3 highest priced stocks with low RSI.

BUT that is different than applying condition Buy:RSI(2)<5 ONLY on three 
highest priced stocks in a watchlist of 100 stocks.

First one might get a trade where the second one wont because there might be no 
stock within three highest priced that has RSI(2) lower than 5.

This is how I understood PositionScore and therefore didnt use it. Am I wrong?

--- In [email protected], Tomasz Janeczko <gro...@...> wrote:
>
> Hello,
> 
> You are doing things wrong way.
> Leave the processing to the backtester.
> Generate BUY/Sell signals FIRST, REGARDLESS of score,
> and assign the score to PositionScore
> AmiBroker will sort all signals based on their score and then decide 
> which ones
> are FIRST (top ranked) and trade them.
> It will NOT trade all signals, but only top-ranked ones.
> The amount is controllable by the user using MaxOpenPositions.
> You don't need to do this processing on your own, it is all built-in
> and many times faster than you could ever do in your formula.
> You don't need any custom backtester code to do the ranking and trading 
> top-N symbols as
> it is integral and built in part of the backtest process.
> Why re-invent the wheel ?
> 
> It is explained here:
> http://www.amibroker.com/guide/h_portfolio.html
> 
> 
> Best regards,
> Tomasz Janeczko
> amibroker.com
> 
> On 2010-04-09 08:47, mkecera wrote:
> > Hello,
> >
> > Thank you.
> >
> > I came up with the code below. So signal array has ALL the symbols sorted 
> > or just the ones which passed the BUY rules? Because I want to sort ALL the 
> > symbols first and then apply some BUY rules on the first five symbols.
> >
> > Again thanks for your help.
> >
> > SetCustomBacktestProc("");
> > if (Status("action") == actionPortfolio)
> >     {
> >      bo = GetBacktesterObject();    
> >      bo.PreProcess();       
> >      for (i = 0; i<  BarCount; i++) 
> >      {
> >      Counter[i]=0;
> >          for (sig = bo.GetFirstSignal(i); sig; sig = bo.GetNextSignal(i))
> >          {  
> >              Counter[i]=Counter[i]+1;
> >                     if (Counter[i]>5){sig.PosSize=0;}
> >          }  
> >          bo.ProcessTradeSignals(i); 
> >      }      
> >      bo.PostProcess();
> > }
> >
> >
> > --- In [email protected], Tomasz Janeczko<groups@>  wrote:
> >    
> >> Hello,
> >>
> >> Using GetFirstSignal/GetNextSignal methods.
> >> When you iterate using those functions you will get the list of
> >> symbols sorted by absolute value of positionscore.
> >> For more info see:
> >> http://www.amibroker.com/guide/a_custombacktest.html
> >> and
> >> http://www.amibroker.org/userkb/2008/03/16/amibroker-custom-backtester-interface-2/
> >>
> >> Best regards,
> >> Tomasz Janeczko
> >> amibroker.com
> >>
> >> On 2010-04-08 22:23, mkecera wrote:
> >>      
> >>> Fast response! Thank you. Can you be more specific on how to access 
> >>> rankings using custom backtester?
> >>>
> >>> --- In [email protected], Tomasz Janeczko<groups@>   wrote:
> >>>
> >>>        
> >>>> Hello,
> >>>>
> >>>> Oh my God! It does not only re-iterates for all stocks BUT repeating it
> >>>> for ALL bars
> >>>> A MUST-READ is this: http://www.amibroker.com/guide/x_performance.html
> >>>>
> >>>> Follow advice given in the article and MOVE LOOP INVARIANTS OUTSIDE THE
> >>>> LOOP !
> >>>>
> >>>> Better yet REMOVE THIS code altogether.
> >>>> You don't need this.
> >>>> Instead use PositionScore that does the ranking for you !
> >>>> This is a 2nd must read:
> >>>> http://www.amibroker.com/guide/h_portfolio.html
> >>>>
> >>>> If you need to access rankings use custom backtester - the signal array
> >>>> will have all symbols sorted by absolute
> >>>> value of position score on bar by bar basis - it will be many orders of
> >>>> magnitude
> >>>> faster than your code.
> >>>>
> >>>> Best regards,
> >>>> Tomasz Janeczko
> >>>> amibroker.com
> >>>>
> >>>> On 2010-04-08 21:52, mkecera wrote:
> >>>>
> >>>>          
> >>>>> Hi All,
> >>>>>
> >>>>> I am using the function below to get ranking of particular stock in the 
> >>>>> watchlist according to defined function. Problem is that for backtest 
> >>>>> its too slow as it recalculates for each stock.
> >>>>>
> >>>>> Is there a way to store the rankings once and then just read them or 
> >>>>> pass them between different stocks during portfolio backtest?
> >>>>>
> >>>>> Any pointers are greatly appreciated. Thank you.
> >>>>>
> >>>>> function GetValue(index)
> >>>>>         {
> >>>>>         return C[index];
> >>>>>         }
> >>>>>
> >>>>> for (z=1; z<=BarCount-1; z++)
> >>>>> {
> >>>>>         local List;
> >>>>>
> >>>>>       List = CategoryGetSymbols( categoryWatchlist, WatchlistNumber );
> >>>>>
> >>>>>       for( i = 0; ( SymbolNumber= StrExtract( List, i ) ) != ""; i++ )
> >>>>>       {
> >>>>>         SetForeign(SymbolNumber);
> >>>>>         TemporaryValue = GetValue(z);
> >>>>>         RestorePriceArrays();
> >>>>>         TickersValue[i] = TemporaryValue;
> >>>>>       }
> >>>>>
> >>>>>         MyPosition[z]=0;
> >>>>>         for( n = 0; n<=i; n++ )
> >>>>>       {
> >>>>>         
> >>>>> MyPosition[z]=IIf(MyValue[z]<TickersValue[n],MyPosition[z]+1,MyPosition[z]);
> >>>>>       }
> >>>>> }
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> ------------------------------------
> >>>>>
> >>>>> **** IMPORTANT PLEASE READ ****
> >>>>> This group is for the discussion between users only.
> >>>>> This is *NOT* technical support channel.
> >>>>>
> >>>>> TO GET TECHNICAL SUPPORT send an e-mail directly to
> >>>>> SUPPORT {at} amibroker.com
> >>>>>
> >>>>> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> >>>>> http://www.amibroker.com/feedback/
> >>>>> (submissions sent via other channels won't be considered)
> >>>>>
> >>>>> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> >>>>> http://www.amibroker.com/devlog/
> >>>>>
> >>>>> Yahoo! Groups Links
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>            
> >>>>
> >>>>          
> >>>
> >>>
> >>> ------------------------------------
> >>>
> >>> **** IMPORTANT PLEASE READ ****
> >>> This group is for the discussion between users only.
> >>> This is *NOT* technical support channel.
> >>>
> >>> TO GET TECHNICAL SUPPORT send an e-mail directly to
> >>> SUPPORT {at} amibroker.com
> >>>
> >>> TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> >>> http://www.amibroker.com/feedback/
> >>> (submissions sent via other channels won't be considered)
> >>>
> >>> For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> >>> http://www.amibroker.com/devlog/
> >>>
> >>> Yahoo! Groups Links
> >>>
> >>>
> >>>
> >>>
> >>>
> >>>        
> >>      
> >
> >
> >
> > ------------------------------------
> >
> > **** IMPORTANT PLEASE READ ****
> > This group is for the discussion between users only.
> > This is *NOT* technical support channel.
> >
> > TO GET TECHNICAL SUPPORT send an e-mail directly to
> > SUPPORT {at} amibroker.com
> >
> > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> > http://www.amibroker.com/feedback/
> > (submissions sent via other channels won't be considered)
> >
> > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
> > http://www.amibroker.com/devlog/
> >
> > Yahoo! Groups Links
> >
> >
> >
> >
> >
>


Reply via email to