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

[amibroker] Re: A complete top10 application



PureBytes Links

Trading Reference Links

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/