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

RE: [amibroker] Re: The French Curve a new secret weapon?



PureBytes Links

Trading Reference Links

Glenn,

Here is the code

// The top5 list
list = CategoryGetSymbols( categoryWatchlist, 61 );
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=StochD();//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;
}
Title="The top"+WriteVal(nt,1.0)+"list for "+Date()+" is "+topList;

For 3/5/2004, for example, The top5list of N100 is 
WFMI,LNCR,MEDI,EBAY,XRAY in IB title.
[The Title will be the same for any ticker in the symbol tree...]
In AA, from 3/5/2004 to 3/5/2004 the exploration results of

Filter=1;
AddColumn(StochD(),"StochD");

are
WFMI, 86.88
LNCR, 84.92
MEDI, 77.18
EBAY, 76.35
XRAY, 74.40

The stocks of WL61 should be aligned [no missing quotes, no extra 
quotes], else the CategoryGetSymbols() function will not work 
properly.
Check your database with Tools->Database purify.
Dimitris Tsokakis
--- In amibroker@xxxxxxxxxxxxxxx, "Glenn" <glennokb@xxxx> wrote:
> Hi Dimitris, thanks for the code.
> 
> When I place it in the IB and fill Watchlist 61, I get the same 
symbol
> in each of the 5 positions. Would you know why please, has anyone 
else
> found this?
> 
> BTW Dave, I have been looking for a simpler way to finding the top N
> stocks using AFL. I am currently using the Osaka plug-in, the code 
I'm
> using with it is in message 50457.
> 
> Cheers Glenn 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS" 
<TSOKAKIS@xxxx>
> wrote:
> > Dave,
> > the topList in my code is a comma separated string.
> > If you run the exploration for more than one [the last or not] 
bars, 
> > the string appears the same [this is the same for any 
AddTextColumn 
> > result, as you probably know].
> > Of course, if you select another single day [say From 2/6/2004 To 
> > 2/6/2004] you will see the topList of this 2/6/2004.
> > It is easier in IB, paste the
> > 
> >  list = CategoryGetSymbols( categoryWatchlist, 61 );
> > 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=StochD();//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;
> > }
> > Title="The top"+WriteVal(nt,1.0)+"list for "+Date()+" 
is "+topList;
> > 
> > Put your cursor on a bar and you will have the topX list for that 
bar.
> > It is a good starting point for your further study.
> > Dimitris Tsokakis
> > --- In amibroker@xxxxxxxxxxxxxxx, "Dave Merrill" <dmerrill@xxxx> 
> > wrote:
> > > Thanks for replying Dimitris; I was wondering when someone 
would 
> > have a
> > > suggestion (:-).
> > > 
> > > Unfortunately, unless I'm misunderstanding your code, it's not 
what 
> > I meant.
> > > It's creating a single watchlist to work off, containing the 
top 5 
> > tickers
> > > by StochD, but that list is the same for every bar.
> > > 
> > > I'll try again to explain: Whenever there's uncommitted 
capital, 
> > buy the
> > > stocks ranked the highest (by StochD for example) ON THAT DAY. 
So 
> > first bar,
> > > I'd buy the 20 stocks with the highest StochD, and hold each of 
> > them until
> > > it exits by a custom AFL rule based on entry price and time. 
> > Whenever
> > > there's free capital, buy as many of the top StochD stocks as 
> > there's room
> > > for in the position sizing.
> > > 
> > > Make sense? When you buy, you're looking for the stocks ranked 
> > highest THAT
> > > DAY, which will change every bar.
> > > 
> > > I don't see how to do that in native AFL. I thought I'd seen an 
> > example of
> > > something similar using the Osaka plugin (for its sorting 
> > capability), but I
> > > don't know where.
> > > 
> > > Any ideas, AFL or Osaka?
> > > 
> > > Dave
> > >   Dave,
> > >   The following code will select from WL61 the top5 STOCHDs, 
then it
> > >   will create
> > >   a new topList and , finally, apply the trading system.
> > >   You only need to explore *ANY* ticker for the n=1 last 
quotations
> > > 
> > >   list = CategoryGetSymbols( categoryWatchlist, 61 );
> > >   g=-100;//SHOULD BE LOWER THAN ANY POSSIBLE METRIC VALUE
> > >   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=StochD();//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 top5 list is already created, apply now the trading 
rules*/
> > >   for(j=0;j<nt;j++)
> > >   {
> > >   global Buy;global Sell;
> > >   TICKER=StrExtract(topList,j);
> > >   SetForeign(TICKER,True,True);
> > >   Buy=Cross(StochD(),50);Sell=Ref(Buy,-5);//the trading rules
> > >   AddColumn(Equity(1,0),TICKER);
> > >   }
> > >   Filter=1;
> > >   AddTextColumn(topList,"top"+WriteVal(nt,1.0)+"List");
> > >   AddTextColumn(L0,"The rest");
> > > 
> > >   The topList is temporarily created for the exploration needs, 
if 
> > you
> > >   want to save the topList tickers for further use, 
> > CategoryAddSymbol -
> > >   CategoryRemoveSymbol will do the job.
> > >   The clue is to find first the top ticker and then "subtract" 
it 
> > from
> > >   the comma separated string of the initial list.
> > >   Unfortunately this "string subtraction" is not supported. We 
may
> > >   write "MSFT,INTC,CSCO"+",BEAS", but we can not 
> > write "MSFT,INTC,CSCO"-
> > >   "CSCO".
> > >   To solve this I find the ordinal # of the top ticker and 
replace 
> > it
> > >   with "". The remaining list will have one ticker less and, at 
this
> > >   stage, we may repeat the top procedure.
> > >   Some steps may be shorter but, DAX is opening...
> > >   Dimitris Tsokakis
> > >   --- In amibroker@xxxxxxxxxxxxxxx, "Dave Merrill" 
<dmerrill@xxxx>
> > >   wrote:
> > >   >
> > >   >   Say I wanted to buy the top 20 stocks ranked by ROC(C, 
1), for
> > >   example,
> > >   > and sell with a custom exit somewhat like a trailing stop, 
one 
> > that
> > >   depends
> > >   > on knowing the entry date and price.
> > >   >
> > >   >   This is the only thing I could come up with, which won't 
do 
> > it,
> > >   because
> > >   > the exit function won't know when buys actually occur 
according 
> > to
> > >   > PositionScore.
> > >   >
> > >   >   Buy = 1;
> > >   >   PostitionScore = Max(ROC(C, 1), 0);
> > >   >   ExitLine = MyExitFunction();
> > >   >   Sell = Cross(ExitLine, C);
> > >   >
> > >   >   Am I being clear? Is there a way to do this in native AFL?
> > >   >
> > >   >   Thanks,
> > >   >
> > >   >   Dave
> > >   >     A few more explanations would be required to know what 
you 
> > are
> > >   after.
> > >   >
> > >   >     In both rotational and non-rotational mode you can buy 
top N
> > >   stocks
> > >   >     if you code PositionScore variable according to your 
metric.
> > >   >
> > >   >     > Does anyone have a non-rotational example of buying 
the 
> > top N
> > >   stocks
> > >   > ranked
> > >   >     > by some metric? Far as I can see, that requires the 
Osaka
> > >   plug-in,
> > >   > which I'm
> > >   >     > not familiar with.
> > >   >     >
> > >   >     > Thanks,
> > >   >     >
> > >   >     > Dave Merrill



------------------------ Yahoo! Groups Sponsor --------------------~--> 
Make a clean sweep of pop-up ads. Yahoo! Companion Toolbar.
Now with Pop-Up Blocker. Get it for free!
http://us.click.yahoo.com/L5YrjA/eSIIAA/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/