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

[amibroker] Re: A complete top10 application



PureBytes Links

Trading Reference Links

Fred,
Yesterday I was affraid you don't read the text.
Now I am sure you don't read the text.
Your question does not refer to [any line of ] this text.
I will not reply irrelevant questions, please ask in a separate 
thread, if you wonder if "100 bars make for a meaningful test ".
FYI, my "final Equities ", the LastValue(Equity(1,0)) are for *all 
quotations*.
It was printed in bold,  for easy reading.
For the numerical part of my example, the test period was Jan2000 
till now.
The reader may use his own set of *all quotations*, there is no 
restriction.
I presented an AFL method to select the N100 top10, according to some 
criterion and apply an investigation on this top10 selection 
automatically, without moving this top10 group in a separate watch 
list and call them back. It is written in the very first lines of the 
text.
It was a kind of reply to the recent question " Re: getting values 
from multiple stocks at once". I admit it is not "at once", it has 
two steps, but it walks towards this direction .
As for the 101 bars of "~RankY", they are the 101 tickers of the N100 
database, as clearly written in the text you don't read.
Dimitris Tsokakis
--- In amibroker@xxxxxxxxxxxxxxx, "Fred" <fctonetti@xxxx> wrote:
> Does 100 bars make for a meaningful test ?
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Dimitris Tsokakis" 
<TSOKAKIS@xxxx> 
> wrote:
> > 
> > We shall find first the top10 final Equities of the #1. Steve 
> Karnish StoRSI [simple] trading system.
> > Then we shall see their performance with the #2. Steve Karnish 
> StoRSI with an MA(C,21) trend qualifier.
> > The procedure has two steps.
> > 
> > Step1.
> > Create the composite ticker "~RankY" which has transformed the 
101 
> final Equities into an array with the last 101 bars 
> > equal one to one to the respective Lastvalue(E0).
> > Scan all stocks, all quotations with
> > 
> > // #1. Steve Karnish StoRSI [simple]
> > StochRsi=EMA((RSI(8)-LLV(RSI(8),8))/(HHV(RSI(8),8)-LLV(RSI
(8),8)),3)
> *100;
> > Buy=Cross(17,StochRsi);
> > Sell=Cross(StochRsi,83);
> > Short=Cross(StochRsi,83);
> > Cover=Cross(17,StochRsi);
> > E0=LastValue(Equity(1,0));
> > Filter=1;AddColumn(Status("STOCKNUM"),"ORD",1.0);AddColumn
(E0,"E0");
> > // VHTr, Vertical to horizontal transformation, by D. Tsokakis, 
Apr 
> 2003
> > x=Status("stocknum");
> > y=E0;z=LastValue(Cum(1))-x;
> > Ry=AddToComposite(IIf(z==Cum(1),y,-1e10),"~RankY","C");
> > Buy=0;
> > 
> > Now, the ~RankY is already created.
> > You may see in Indicator builder with
> > 
> > // top10 graph
> > R= Foreign("~RankY","C");H0=Foreign("~RankY","C");
> > L1=LastValue(Cum(1));
> > N=101;// the N100 database population
> > TOP=10;// calibrate here the topX selection
> > for(K=1;K<=TOP;K++)
> > {
> > H1=LastValue(HHV(H0,n));
> > BAR1=LastValue((ValueWhen(H0==H1,Cum(1)-1)));
> > H0[BAR1]=-10;
> > }
> > Plot(IIf(Cum(1)>L1-N,R,-1E10),"["+WriteVal(L1-1-BarIndex(),1.0)
> +"]",IIf(H0==-10,colorYellow,colorBlack),2);
> > 
> > In the title line you may read the ordinal number of each stock 
and 
> the respective final Equity.
> > The top10 stocks are painted yellow.
> > 
> > Step2.
> > We shall see now the performance of this top10 group in the 
system 
> #2.
> > 
> > Explore the N100 database, for the n=101 last quotations with
> > 
> > // PERFORMANCE OF THE SELECTED TOP10 IN ANOTHER SYSTEM
> > // EXPLORE THE DATABASE FOR THE LAST 101 QUOTATIONS
> > X=Status("STOCKNUM");
> >  R= Foreign("~RankY","C");H0=Foreign("~RankY","C");
> > L1=LastValue(Cum(1));
> > N=101;// the N100 database population
> > TOP=10;// calibrate here the topX selection
> > for(K=1;K<=TOP;K++)
> > {
> > H1=LastValue(HHV(H0,n));
> > BAR1=LastValue((ValueWhen(H0==H1,Cum(1)-1)));
> > H0[BAR1]=-10;
> > }
> > ORD=IIf(H0==-10,L1-1-BarIndex(),-1E10);
> > // #2. Steve Karnish StoRSI [MA(C,21)]
> > /*The Buy signal is accepted if the 21-bar MA is ascending the 
same 
> day.
> > The Short signal is accepted if the 21-bar MA is descending the 
> same day*/
> > StochRsi=EMA((RSI(8)-LLV(RSI(8),8))/(HHV(RSI(8),8)-LLV(RSI
(8),8)),3)
> *100;
> > Buy=Cross(17,StochRsi) AND Ref(MA(C,21),-1) < MA(C,21);;
> > Sell=Cross(StochRsi,83);
> > Short=Cross(StochRsi,83) AND Ref(MA(C,21),-1) > MA(C,21);
> > Cover=Cross(17,StochRsi);
> > E=LastValue(Equity(1,0));
> > Filter=H0==-10 AND X==ORD;
> >  AddColumn(ORD,"ORD",1.0);
> > AddColumn(E,"E");
> > 
> > In the results you may see the final performance of the 
preselected 
> System #1 top10 performers.
> > 
> > Dimitris Tsokakis
> > 
> > Note1
> > In Equity settings we used 
> > Buy/Sell/Short/Cover at Open
> > Delay=+1
> > commission 0.5%
> > Initial equity 10000
> > All stops disabled
> >  Note2
> > In the selection Step1, any ranking criterion may be used. To 
> select, for example, the top10 RSI() values, just replace 
> > y=E0 with y=Lastvalue(RSI())
> > Note3
> > The most time consuming step was step2, it needs ~3sec for the 
N100 
> database, using Amibroker 4.41b with a PIII/800
> > 64Mb RAM/10Gb HD.
> > The step1 scan takes less than a [reliable] second.
> > Note4
> > The method has obvious advantages compared to my previous 
loopless 
> attempt of 
> > http://groups.yahoo.com/group/amibroker/message/38650
> > Now, thanks to for AFL loop, the code is almost the same for a 
top5 
> or a top10 ranking.
> > In the #38650 form, one should change the code according to X for 
> each topX.
> > Dimitris Tsokakis
> > ----- Original Message ----- 
> > From: Dimitris Tsokakis 
> > To: amibroker@xxxxxxxxxxxxxxx 
> > Sent: Sunday, September 07, 2003 1:30 PM
> > Subject: To continue with
> > 
> > 
> > Here is an even shorter code to find the top10 StochD values from 
> the last 100 bars.
> > Paste in indicator builder the
> > 
> > // Top10 from 100
> > R=StochD();
> > H0=StochD();
> > L1=LastValue(Cum(1));
> > N=100;// the lookback period
> > TOP=10;// the topX calibration
> > for(K=1;K<=TOP;K++)
> > {
> > H1=LastValue(HHV(H0,n));
> > BAR1=LastValue((ValueWhen(H0==H1,Cum(1)-1)));
> > H0[BAR1]=-10;
> > }
> > Plot(IIf(Cum(1)>L1-N,R,-1E10),"",IIf(H0==-
> 10,colorYellow,colorBlack),2);
> > 
> > Since we paint the top10 points outside the loop execution, we 
know 
> all the rest details, when it happened, the respected value, 
outside 
> the loop, 
> > consequently the result is ready for any further use.
> > The trick was to find the highest value, find the bar it happens 
> and then, in the very next step, make this value negative [-10 in 
the 
> example]. 
> > The next cycle of the loop will search for the 2nd highest value 
> etc.
> > For other indicators, replace -10 with another, enough negative 
> value, lower than the usual indicator values, to ensure that you 
will 
> excude this
> > bar from the next cycle of the loop. If you do not know the 
> negative values, a Lowest(Indicator)-1 is enough.
> > Dimitris Tsokakis
> > 
> > ----- Original Message ----- 
> > From: Dimitris Tsokakis 
> > To: amibroker@xxxxxxxxxxxxxxx 
> > Sent: Saturday, September 06, 2003 10:59 PM
> > Subject: To begin with
> > 
> > 
> > Let us find the top10 of the last 100 Stochd() values.
> > In AA explore the current stock for the last 100 bars.
> > // The top10 of an exploration
> > bars=100;
> > H1=StochD()*(LastValue(Cum(1))-Cum(1)<bars);
> > H11=H1;
> > H2[0]=0;Counter=0;
> > top=10;
> > for(n=1;n<=top;n++)
> > {
> > for(i=1;i<BarCount;i++)
> > {
> > H2=LastValue(Highest(H1));
> > if(H1[i]==H2[i])
> > {
> > if(Counter<top)
> > {
> > H1[i]=0;
> > Counter=Counter+1;
> > }
> > }
> > }
> > }
> > Filter=1;
> > AddColumn(H11,"Array");
> > AddColumn((H1==0)*H11,"Top10");
> > 
> > In the "Top10" column you read the 10 highest StochD() values, 
all 
> the rest are 0.
> > Dimitris Tsokakis


------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for Your HP, Epson, Canon or Lexmark
Printer at Myinks.com. Free s/h on orders $50 or more to the US & Canada. http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/l.m7sD/LIdGAA/qnsNAA/GHeqlB/TM
---------------------------------------------------------------------~->

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 http://docs.yahoo.com/info/terms/