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

RE: [amibroker] Re: The top5 of an exploration



PureBytes Links

Trading Reference Links




<FONT face=Arial 
size=2>Dimitri,
<FONT face=Arial 
size=2> 
1 - 
Vertical/Horizontal transformation : I think I had misunderstood your 
terminology. I thought your "vertical/horizontal transformation" process applied 
to the chart that you included in  your mail. I don't understand 
the use of this chart.
<FONT face=Arial 
size=2> 
2 - Sorting out the 
top 5 : your code is perfectly valid. I just thought a "for" loop 
would be more flexible, allowing to sort out the "top X" instead of the 
"top 5". But I still have version 4.30 installed, so I cannot use 
loops yet on my computer. But the code should look something like that 
(after having created the "rankY" composite) : 
<FONT face=Arial 
size=2> 
<SPAN 
class=601103508-24042003>H0 = Foreign("~rankY","C");
<SPAN 
class=601103508-24042003>NbTickers = 101;
<SPAN 
class=601103508-24042003>Counter = Cum(1);
<SPAN 
class=601103508-24042003>IdBar = Counter - BarCount + NbTickers + 
1; //array containing the Status number of each 
stock
<SPAN 
class=601103508-24042003>NbTops = 5;  //Number of 
tops considered
<SPAN 
class=601103508-24042003> 
<SPAN 
class=601103508-24042003>TopValue[BarCount - 1] = HHV(H0,n);  <FONT 
color=#008000>//Top value of the top 5
<SPAN 
class=601103508-24042003>TopId[BarCount - 1] = ValueWhen(IdBar,H0 == 
HHV(H0,n),n);  //Status of the stock having the 
top value
<SPAN 
class=601103508-24042003><FONT 
size=2><SPAN 
class=601103508-24042003> 
<SPAN 
class=601103508-24042003>for(i=1;i<NbTops;i++)
<SPAN 
class=601103508-24042003>    {
<SPAN 
class=601103508-24042003>    for(j = BarCount - 
NbTickers;j<BarCount;j++)
<SPAN 
class=601103508-24042003>        
{
<SPAN 
class=601103508-24042003>        if(H0[j] 
> TopValue[BarCount - i - 1] && H0[j] <= 
TopValue[BarCount - i] && j != TopId[BarCount - 
i])
<SPAN 
class=601103508-24042003>            
{
<SPAN 
class=601103508-24042003>            
TopValue[BarCount - i -1] = H0[j]; //Value of the next top 
5
<SPAN 
class=601103508-24042003>            TopId[BarCount 
- i -1] = IdBar[j]; //Status of the next top 
5
<SPAN 
class=601103508-24042003>            }
<SPAN 
class=601103508-24042003>        }
<SPAN 
class=601103508-24042003>     
}
<SPAN 
class=601103508-24042003> 
The value and Status of the top 
5 are stored in 5 last bars of the "TopValue" and "TopId" arrays. To sort out 
more than 5 stocks, just change the value of the "NbTop" variable. Equal values 
are not a problem. You can also store the values for further use in a new 
composite ticker. This code should be run only for the "~rankY" 
ticker.
 
If you have stored the 
"TopValue" and "TopId" arrays in a new composite ticker ("~Top5" for example), 
and want to filter out these top 5 stocks in an exploration, you should be 
able to do like that :
<SPAN 
class=601103508-24042003> 
<SPAN 
class=601103508-24042003>NbTops = 5;
<SPAN 
class=601103508-24042003>TopId = Foreign("~Top5","C");<FONT 
color=#008000>//Status array of our top 
performers
<SPAN 
class=601103508-24042003><FONT 
size=2><SPAN 
class=601103508-24042003> 
<SPAN 
class=601103508-24042003>for(i = BarCount - NbTops;i < 
BarCount;i++)
<SPAN 
class=601103508-24042003>      if(TopId[i] == 
Status("StockNum")
<SPAN 
class=601103508-24042003>           
Filter[BarCount - 1] = 1;
<FONT 
size=2> 
Please note that this code has 
not been tested. It is only to illustrate the idea of extracting and using the 
TopX performers through loops.
 
Best regards, Jérôme 
ULRICH
<SPAN 
class=601103508-24042003>    <FONT 
face=Arial><SPAN 
class=601103508-24042003>
<SPAN 
class=601103508-24042003> 

  <FONT face=Tahoma 
  size=2>-----Message d'origine-----De : DIMITRIS TSOKAKIS 
  [mailto:TSOKAKIS@xxxxxxxxx]Envoyé : jeudi 24 avril 2003 
  10:18À : amibroker@xxxxxxxxxxxxxxxObjet : 
  [amibroker] Re: The top5 of an 
  explorationJerome,thank you for the interesting 
  reply.See comments below--- In amibroker@xxxxxxxxxxxxxxx, 
  "Silvarius" <silvarius@xxxx> wrote:> Hello Dimitri,> 
  > Why do you need this transformation vertical/horizontal ? Once you 
  have the> result of your exploration stored in "~rankY" ticker, 
  but, the "~RankY" *is* the tsansformation >it seems simpler 
  to> sort out the top five through a "for" loop. Is it possible 
  to be more specific with some code?>And if you want to store 
  these> top five for further use in AB, you can put them in the five 
  last bars of a> new ticker.How?> > Best 
  regards, Jerome ULRICH>   -----Message 
  d'origine----->   De : Dimitris Tsokakis 
  [mailto:TSOKAKIS@xxxx]>   Envoye : jeudi 24 avril 2003 
  09:16>   A : amibroker@xxxxxxxxxxxxxxx>   
  Objet : [amibroker] The top5 of an exploration> > 
  >   1. The VHTr transformation>   To Explore 
  N100 for the last RSI, select the top5 and see their> performance to a 
  trading system,>   run first in AA for all stocks, all 
  quotations the> >   // VHTr, Vertical to horizontal 
  transformation, by D. Tsokakis, Apr 2003>   
  x=Status("stocknum");>   
  y=LastValue(RSI());z=LastValue(Cum(1))-x;>   
  Ry=AddToComposite(IIf(z==Cum(1),y,-1e10),"~RankY","C");>   
  Buy=0;>   Filter=1;>   
  AddColumn(Y,"INDICATOR",1.3);>   
  AddColumn(x,"STOCKNUM",1.0);> >   An atificial ticker 
  "~RankY" is just created. It is a bit peculiar, it has> values for 
  the last 101 bars only.>   [My N100 database has 101 names, 
  the 100 stocks plus the index ^NDX> itself]>   
  From left to right, each bar of the new array is equal to the 
  exploration> result. The 1st is YHOO, the last is 
  ^NDX,>   exactly inversed from the alphabetic sorting in my 
  Symbol tree. But, this> ticker is a normal array and accepts 
  any>   array treatment. For example, we may find the top5 
  values.>   Suppose, for the simplicity, that there are no 
  equal values* and paste in> IB the> >   
  H0=Foreign("~RankY","C");>   
  L1=LastValue(Cum(1));>   n=101;// the population of the 
  database>   H1=LastValue(HHV(H0,n));>   
  BAR1=LastValue((ValueWhen(H0==H1,Cum(1))));>   
  H2=LastValue(HHV(IIf(H0<H1 ,H0,0),n));>   
  BAR2=LastValue((ValueWhen(H0==H2 ,Cum(1))));>   
  H3=LastValue(HHV(IIf(H0<H1 AND H0<H2,H0,0),n));>   
  BAR3=LastValue((ValueWhen(H0==H3 ,Cum(1))));>   
  H4=LastValue(HHV(IIf(H0<H1 AND H0<H2 AND 
  H0<H3,H0,0),n));>   BAR4=LastValue((ValueWhen(H0==H4 
  ,Cum(1))));>   H5=LastValue(HHV(IIf(H0<H1 AND H0<H2 AND 
  H0<H3 AND H0<H4,H0,0),n));>   
  BAR5=LastValue((ValueWhen(H0==H5 ,Cum(1))));>   
  COLOR=IIf(H0==H1 OR H0==H2 OR H0==H3 OR H0==H4 OR 
  H0==H5,7,1);>   
  Plot(H0,"",COLOR,2);GraphXSpace=3;>   Title= "[ 
  NUM1="+WriteVal(L1-BAR1,1.0)+",H1="+WriteVal(H1,1.2)+"]"+>   
  "[ 
  NUM2="+WriteVal(L1-BAR2,1.0)+",H2="+WriteVal(H2,1.2)+"]"+>   
  "[ 
  NUM3="+WriteVal(L1-BAR3,1.0)+",H3="+WriteVal(H3,1.2)+"]"+>   
  "[ 
  NUM4="+WriteVal(L1-BAR4,1.0)+",H4="+WriteVal(H4,1.2)+"]"+>   
  "[ NUM5="+WriteVal(L1-BAR5,1.0)+",H5="+WriteVal(H5,1.2)+"]";> 
  >   The top5 values are paited yellow and, in the title, you 
  read 5 pairs> [STOCKNUM,RSI]>   The #14 [ BRCD ] 
  is the champion with RSI=77.43 and the top5 is>   BRCD, ICOS, 
  SPOT, PCAR, BRCM>   We read in IB title the results of the 
  exploration [all stocks, n=1 last> quotations] of 
  VHTr.>   2. The use of the VHTr 
  transformation>   Explore now all stocks, n=1 last quotations 
  with the> >   
  X=Status("STOCKNUM");>   
  H0=Foreign("~RankY","C");L1=LastValue(Cum(1));>   
  n=101;>   H1=LastValue(HHV(H0,n));>   
  BAR1=LastValue((ValueWhen(H0==H1,Cum(1))));>   
  H2=LastValue(HHV(IIf(H0<H1 ,H0,0),n));>   
  BAR2=LastValue((ValueWhen(H0==H2 ,Cum(1))));>   
  H3=LastValue(HHV(IIf(H0<H1 AND H0<H2,H0,0),n));>   
  BAR3=LastValue((ValueWhen(H0==H3 ,Cum(1))));>   
  H4=LastValue(HHV(IIf(H0<H1 AND H0<H2 AND 
  H0<H3,H0,0),n));>   BAR4=LastValue((ValueWhen(H0==H4 
  ,Cum(1))));>   H5=LastValue(HHV(IIf(H0<H1 AND H0<H2 AND 
  H0<H3 AND H0<H4,H0,0),n));>   
  BAR5=LastValue((ValueWhen(H0==H5 ,Cum(1))));>   
  Cond=X==L1-bar1 OR X==L1-bar2 OR X==L1-bar3 OR X==L1-bar4 OR 
  X==L1-bar5;>   
  Buy=Cross(RSI(),35);Sell=Cross(RSI(),65);// THE TRADING 
  SYSTEM>   e=LastValue(Equity());>   
  Filter=COND;>   
  AddColumn(X,"STOCKNUM",1.0);>   
  AddColumn(E,"EQUITY");> >   You will see the final 
  equity value for the top5 stocks.>   Dimitris 
  Tsokakis>   *another set will be posted to treat the 
  possibility of equal values in> the result list.> 
  >         Yahoo! Groups 
  Sponsor>         [AD]> 
  > >   Send BUG REPORTS to 
  bugs@xxxx>   Send SUGGESTIONS to 
  suggest@xxxx>   
  ----------------------------------------->   Post 
  AmiQuote-related messages ONLY to: 
  amiquote@xxxxxxxxxxxxxxx>   (Web page: <A 
  href="">http://groups.yahoo.com/group/amiquote/messages/)>   
  -------------------------------------------->   Check group 
  FAQ at:> <A 
  href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html> 
  >   Your use of Yahoo! Groups is subject to the Yahoo! Terms 
  of Service.Send 
  BUG REPORTS to bugs@xxxxxxxxxxxxxSend SUGGESTIONS to 
  suggest@xxxxxxxxxxxxx-----------------------------------------Post 
  AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx (Web page: <A 
  href="">http://groups.yahoo.com/group/amiquote/messages/)--------------------------------------------Check 
  group FAQ at: <A 
  href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
  Your use of Yahoo! Groups is subject to the <A 
  href="">Yahoo! Terms of Service. 







Yahoo! Groups Sponsor












Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html



Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.