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

[amibroker] Time vs Tick Baesd charts


  • To: <amibroker@xxxxxxxxxxxxxxx>
  • Subject: RE: [amibroker] any ideas to reduce runtime for the price RS ranking code?
  • From: "Herman van den Bergen" <psytek@xxxxxxxx>
  • Date: Mon, 2 Aug 2004 04:34:27 -0700

PureBytes Links

Trading Reference Links




The 
StrExrtract() is slow and you may do better to run a single Explore of your 700 
stock watch list, i.e. remove the StrExtract() loop from your code. if your code 
only generates two result arrays you should be able to use composites for those. 
Create you 700 watchlist and develop your code one section at a time, i find 
using DebugView nice to give me a relative indication of where the code takes 
too much time. I haven't analyzed your code in detail but i expect getting rid 
of the StrExtract() will speed up your code a hundred times, well, just being 
hopeful here ;-)
<FONT face=Arial color=#0000ff 
size=2> 
<FONT face=Arial color=#0000ff 
size=2>herman.
<FONT face=Arial color=#0000ff 
size=2> 
<FONT face=Arial color=#0000ff 
size=2> 

  <FONT face=Tahoma 
  size=2>-----Original Message-----From: firstview2000 
  [mailto:firstview2000_1999@xxxxxxxxx]Sent: Sunday, August 01, 2004 
  6:46 PMTo: amibroker@xxxxxxxxxxxxxxxSubject: [amibroker] 
  any ideas to reduce runtime for the price RS ranking 
  code?Hi,With the following code, it takes me 
  over 40 minutes to run a database of 700 tickers. This code calculates 2 
  ratings, one for stocks and one for indices.Can anyone suggest 
  some good ways to reduce the runtime ?TIA.Charles/*** 
  Price Relative Strength Ranking***/// use this function to 
  calculate self relative strength// The funciton takes care of stocks with 
  several quote length// It returns the calculated relative strength 
  arrayfunction selfRelStrength 
  (myArray){      sRelStren = 
  IIf((IsNull(ROC(myArray, 260)) == False),       
              
              
              
        ROC(myArray, 260) + ROC(myArray, 195) + 
  ROC(myArray, 130) + 2 * ROC(myArray, 65),      
              
              
              
              IIf 
  (      (IsNull(ROC(myArray, 195)) == False), 
              
              
              
              
        ROC(myArray, 195) + 2 * ROC(myArray, 130) + 
  2 * ROC(myArray, 65),      
              
              
              
              
              
              2 * 
  ROC(myArray, 130) + 3 * ROC(myArray, 65) ));      
              
  return sRelStren;}//replace your watchlist number with 
  0//list = CategoryGetSymbols( categoryWatchlist, 0 );list = 
  CategoryGetSymbols( categoryMarket , 0 ) + CategoryGetSymbols( 
  categoryMarket , 1 );Count = 0;rank = 0;relval = 0;n = 
  0;CountIdx = 0;rankIdx = 0;relvalIdx = 0;nIdx = 
  0;// price change for the current symbolOwnVal = 
  selfRelStrength(C);for( i = 0; ( sym = StrExtract( list, i ) ) != ""; 
  i++ ){      
        
  SetForeign(sym);      if (IsIndex()) 
  {            
  relValIdx      = 
  Nz(selfRelStrength(C));      
        
  RestorePriceArrays();      
        nIdx         
        = Nz(IIf(relValIdx != 0, 1, 
  0));            // count 
  if there is a price change      
        // now, add up counts for all symbols with 
  price change in the specified period      
        CountIdx = CountIdx + 
  nIdx;            
  rankIdx = IIf (relValIdx > OwnVal, rankIdx + 1, 
  rankIdx);      
  }      else {      
              
  relVal      = 
  Nz(selfRelStrength(C));      
        
  RestorePriceArrays();      
        n         
        = Nz(IIf(relVal != 0, 1, 
  0));            // count 
  if there is a price change      
        // now, add up counts for all symbols with 
  price change in the specified period      
        Count = Count + 
  n;            rank = 
  IIf (relVal > OwnVal, rank + 1, rank);      
  }}rankPerc = int(100 * (Count - rank) / Count);rankPercIdx 
  = int(100 * (CountIdx - rankIdx) / CountIdx);// filter out any stocks 
  that dont have recent quotes (1 month)// this is done via comparing with 
  $compxCurrentDay = Now(3);      
        // get system date with dateNum 
  formatCurrDayAgo = CurrentDay - 100;LastDay = 
  LastValue(DateNum());// donot rank DATAONLY tickers (in Market 
  #3)Filter = (CurrDayAgo <= LastDay) AND (MarketID() != 3);if 
  (Status("action") == 4) {// code running in 
  explorationSetOption("nodefaultcolumns", True 
  );AddTextColumn(Name(),"Ticker");AddColumn(Close,"Close", 1.2);// 
  AddColumn(Count,"count", 1.0);AddColumn(rank,"rank#", 
  1.0);AddColumn(Ownval,"Perf",1.2);AddColumn(rankPerc,"rank%",1.0);AddTextColumn(IndustryID(1),"Industry");AddColumn(rankIdx,"rankIdx#", 
  1.0);AddColumn(rankPercIdx,"rankIdx%",1.0);}Check 
  AmiBroker web page at:<A 
  href="">http://www.amibroker.com/Check 
  group FAQ at: <A 
  href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
  


Check AmiBroker web page at:
http://www.amibroker.com/

Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html








Yahoo! Groups Sponsor


  ADVERTISEMENT 












Yahoo! Groups Links
To visit your group on the web, go to:http://groups.yahoo.com/group/amibroker/ 
To unsubscribe from this group, send an email to:amibroker-unsubscribe@xxxxxxxxxxxxxxx 
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.