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

[amibroker] A complete top10 application



PureBytes Links

Trading Reference Links




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 
2003x=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 graphR= 
Foreign("~RankY","C");H0=Foreign("~RankY","C");L1=LastValue(Cum(1));N=101;// 
the N100 database populationTOP=10;// calibrate here the topX 
selectionfor(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 
QUOTATIONSX=Status("STOCKNUM"); R= 
Foreign("~RankY","C");H0=Foreign("~RankY","C");L1=LastValue(Cum(1));N=101;// 
the N100 database populationTOP=10;// calibrate here the topX 
selectionfor(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 
<A 
href="">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: <A 
href="" title=tsokakis@xxxxxxxxx>Dimitris Tsokakis 

To: <A href="" 
title=amibroker@xxxxxxxxxxxxxxx>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
<FONT 
size=2>R=StochD();H0=StochD();L1=LastValue(Cum(1));N=100;// the 
lookback periodTOP=10;// the topX 
calibrationfor(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: <A 
href="" title=tsokakis@xxxxxxxxx>Dimitris Tsokakis 

To: <A href="" 
title=amibroker@xxxxxxxxxxxxxxx>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
<FONT 
size=2>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


  ADVERTISEMENT 









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.



Attachment:
1RANK.gif

Attachment: Description: "Description: GIF image"