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

[amibroker] AmiBroker 4.60.2 BETA released



PureBytes Links

Trading Reference Links

Dimitri, Hermann,

Thanks for all these codes, I'll "eat" them and come back to you.

Stephane

> Stephane,
> You may create first a topList as a comma-sepatated string.
> Then you can work with this [variable] topList and calculate 
averages 
> or whatever.
> 
> SetBarsRequired(1000,0); 
> // create first the topList as a comma-separated string
> list = CategoryGetSymbols( categoryWatchlist, 2 );
> g=-100;t="";topList="";i1=0;
> nt=5;// calibrate here the topX
> for(n=1;n<=nt;n++)
> {
> for( i = 0; ( sym = StrExtract( list, i ) ) != "" ; i++ )
> {
> SetForeign(sym);
> x=RSI();//the individual metric
> t=WriteIf(x>g,sym,t);i1=IIf(x>g,i,i1);
> g=Max(g,x);
> }
> topList=topList+t+",";L0="";
> for( i = 0; ( sym = StrExtract( list, i ) ) != "" ; i++ )
> {
> SetForeign(sym);
> L0=L0+ WriteIf(i!=i1,sym+",","");
> }
> List=L0;g=-100;
> }
> // the topList is already created. 
> // It is a comma-separated string, different for every bar, ready 
for 
> further use
> // The average of the already created topList follows
> Av=0;m=0;
> for( i = 0; ( symb = StrExtract( topList, i ) ) != "" ; i++ )
> {
> SetForeign(symb);
> y=StochD();// select your array here
> Av=Av+y;m=m+1;
> }
> 
> Title="The top"+WriteVal(nt,1.0)+"list for "+Date()+" is 
> {"+topList+"}. The Average is "+WriteVal(Av/m);
> 
> The average y is, of course, independent of the ranking metric. 
> You may rank stocks according to their RSI() and then calculate 
their 
> average StochD().
> 
> Dimitris Tsokakis
> --- In amibroker@xxxxxxxxxxxxxxx, Stephane Carrasset 
> <s.carrasset@xxxx> wrote:
> > Herman ,
> > 
> > Ok i'll try it and come back on this subject in few days. it  
that 
> > represents for me one of the key of a EOD winning trading system.
> > I send the attachment comparing osake hermann and manual.
> > 
> > Thanks for your help.
> > 
> > > Stephane,
> > >
> > > The simplest way to debug any code is to insert _TRACE() 
> statements inside
> > > the loops and use DebugView. That way you will get a complete 
> report 
> > > of each
> > > step through the code and each step through each loop.
> > >
> > > herman
> > >
> > >
> > >
> > >   -----Original Message-----
> > >   From: Stephane Carrasset [mailto:s.carrasset@x...]
> > >   Sent: Tuesday, August 03, 2004 2:38 PM
> > >   To: amibroker@xxxxxxxxxxxxxxx
> > >   Subject: Re: [amibroker] average of top ranked tickers in a 
> given
> > > watchlist
> > >
> > >
> > >   Hermann &  All,
> > >
> > >   I have tried two differents codes to built an average of top 
n 
> tickers
> > >   of a watchlist (  looks like a real time composite)
> > >   unfortunately the two codes return wrong results.
> > >
> > >   I have tried your code  and a Tomasz code written with osaka 
> plugin (
> > >   the formulas are below )
> > >   I have reduced  The watchlist zero to 5 tickers and  want the 
> average
> > >   for an idicator of the 3 first tickers for each bar.
> > >   I have choosen the RSI ( a positive indicator)
> > >   So i can check manually the result
> > >
> > >   for example the image attached  speak itself for the last 
bar .
> > >
> > >   I hope the next pastis.dll will save us... ^_^  ( thanks 
dingo 
> for all
> > >   these information)
> > >
> > >
> > >
> > >
> > >   FORMULAS
> > >
> > >   //////////OSAKA////////////
> > >   /*
> > >   As for hints: you would do the following:
> > >   1. iterate through watch list and store scores (in case of 
> osaka plugin
> > >   osTabSetNumber)
> > >   2. find top ranked symbols (this can be done even entriely in 
> AFL as
> > >   Dimitris has shown,
> > >   or using Osaka plugin sort capability - osTabSort function)
> > >   3. create average from top ranked symbols.
> > >   Below is the code that uses Osaka plugin 1.4.
> > >
> > >   */
> > >
> > >   osInitialize();
> > >   List = GetCategorySymbols(categoryWatchlist, 0 ); // <-- 
change 
> wl
> > >   number here
> > >   table=osTabCreate();
> > >   // setup columns
> > >   osTabAddColumn( "Ticker", 2, table, 25 );
> > >   for( j = 0; j < BarCount; j++ )
> > >   {
> > >   osTabAddColumn( "Score"+j, 1, table );
> > >   osTabAddColumn( "Close"+j, 1, table );
> > >   }
> > >   // CALCULATING SCORES and saving them to the table
> > >   for(i=0; ( ticker = StrExtract( List, i ) ) != ""; i++)
> > >   {
> > >   SetForeign(ticker);
> > >   osTabSetString( ticker, i, 0, table );
> > >   score = RSIa(C,14); // YOUR SCORE CALCULATION HERE
> > >   for( j = 0; j < BarCount; j++)
> > >   {
> > >   osTabSetNumber( abs( Nz( score[ j ] ) ), i, 2 * j + 1, 
table );
> > >   osTabSetNumber( Close[ j ], i, 2 * j + 2, table ); // for 
> calculation of
> > >   average
> > >   }
> > >   }
> > >   // you can export for debugging
> > >   // osTabExport( "test.csv", ",", table );
> > >   // SORTING SCORES AND finding top ranks:
> > >   average = 0; // init avarage
> > >   for( j = 0; j < BarCount; j++)
> > >   {
> > >   osTabSort( table, 2 * j + 1, False );
> > >   average[ j ] = 0;
> > >   topnum = 3; // TOPNUM
> > >   for( k = 0; k < topnum ; k++ ) //
> > >   {
> > >   fc = osTabGet( k, 2 * j + 2, table );
> > >   average[ j ] = average[ j ] + fc;
> > >   }
> > >   average[ j ] = average[ j ]/topnum; // calculate average from 
> top N
> > >   symbols at given bar
> > >   }
> > >   osTabDelete( table );
> > >   Filter=1;
> > >   AddColumn(average, "AVG top10 (each bar different)" );
> > >   Plot( average, "AVG top10 (each bar different)", colorRed );
> > >
> > >   ///////////END OSAKA //////////////////////////
> > >
> > >
> > >   ///////////////HERMAN/////////////////
> > >   function GetScore( )
> > >   {
> > >   return RSIa(C,14); // Substitute your function
> > >   }
> > >
> > >   function padString( InString, Length )
> > >   {
> > >   SpaceFill = "          ";
> > >   SL = StrLen(InString);
> > >   NS=StrLeft(SpaceFill, Length-SL);
> > >   return NS+Instring;
> > >   }
> > >
> > >   procedure getPositionScores( WatchList, BarNum, NumTickers )
> > >   {
> > >   TickerList= GetCategorySymbols( categoryWatchlist, WatchList);
> > >   CurrentTicker = Name();
> > >   TickerScoreList = "";
> > >
> > >   // Create Scores array
> > >   for( n=0; (Ticker=StrExtract( TickerList, n)) != ""; n++)
> > >     {
> > >     SetForeign(Ticker);
> > >     TickerScores[n] = LastValue(ValueWhen(BarIndex() == BarNum,
> > >   SelectedValue(GetScore())));
> > >     TickerIndex[n] = n;
> > >     }
> > >
> > >   TickerCount= n;
> > >
> > >   // Sort Tickers by rank
> > >   for(i = n; i>=0; i--)
> > >     {
> > >     for (j = 1; j <= i; j++)
> > >      {
> > >      if (TickerScores[j-1] > TickerScores[j])
> > >       {
> > >       temp = TickerScores[j-1]; TickerScores[j-1] = TickerScores
> [j];
> > >   TickerScores[j] = temp;
> > >       temp = TickerIndex[j-1]; TickerIndex[j-1] = TickerIndex
[j];
> > >   TickerIndex[j] = temp;
> > >       }
> > >      }
> > >     }
> > >
> > >   TopTickerList  = TopTickerNum = TopTickerScore = "";
> > >   i=0; P=10; TopComposite = 0;
> > >   if( NumTickers > TickerCount ) NumTickers = TickerCount;
> > >
> > >   // Format Top numTickers and create composite
> > >   for(n=TickerCount; n>=TickerCount-NumTickers; n--)
> > >     {
> > >     T5[i++] = TickerIndex[n];
> > >     TopTickerList = TopTickerList +
> > >   PadString(StrExtract(Tickerlist,T5[i-1]),P)+",";
> > >     TopTickerScore = TopTickerScore +
> > >   PadString(NumToStr(TickerScores[n],1.3),P)+",";
> > >     TopTickerNum = TopTickerNum +
> > >   PadString(NumToStr(TickerIndex[n],1.0),P)+",";
> > >     TopComposite = TopComposite + getScore();
> > >     }
> > >
> > >   VarSet("TopComposite",TopComposite/numtickers);
> > >   StaticVarSetText("TopTickerList",TopTickerList);
> > >   StaticVarSetText("TopTickerScore ",TopTickerScore );
> > >   StaticVarSetText("TopTickerNum ",TopTickerNum );
> > >   }
> > >
> > >   WatchList = Param("WatchList",0,0,1,1);
> > >   BarNum = SelectedValue(BarIndex());
> > >   NthScore = Param("Nth TickerDown",3,0,100,1);
> > >   // TOPNUM
> > >   getPositionScores( WatchList, BarNum, NthScore );
> > >   TopTickerScore =StaticVarGet("TopTickerScore ");
> > >   TopTickerList=StaticVarGet("TopTickerList");
> > >   TopTickerNum =StaticVarGet("TopTickerNum ");
> > >   Plot(VarGet("TopComposite") ,"",2,1);
> > >
> > >   Title =
> > >   TopTickerList + "\n"+
> > >   TopTickerScore + "\n"+
> > >   TopTickerNum + "\n"+
> > >   "Number "+NumToStr(NthScore+1,1.0)+" from the Top:
> > >   "+StrExtract(TopTickerList ,NthScore);
> > >   //////////////////END HERMAN/////////////////////////////
> > >
> > >
> > >
> > >
> > >   Check AmiBroker web page at:
> > >   http://www.amibroker.com/
> > >
> > >



------------------------ Yahoo! Groups Sponsor --------------------~--> 
Yahoo! Domains - Claim yours for only $14.70
http://us.click.yahoo.com/Z1wmxD/DREIAA/yQLSAA/GHeqlB/TM
--------------------------------------------------------------------~-> 

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

Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
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:
    http://docs.yahoo.com/info/terms/