PureBytes Links
Trading Reference Links
|
The same basic code may work with Equities of a trading system.
//Remove all symbols from WL10, select the top10 [profitable]
Equities of a trading system from WL5 and send them into WL10 for
further use.
top=10;ORigin=5;destination=10;
g=10000;//the initial equity in settings
x=0;topList="";M="";pop=0;
List=CategoryGetSymbols(categoryWatchlist,ORigin);
for(d=1;d<=top;d++)
{
for(i=0;(sym=StrExtract(List,i))!="";i++)
{
SetForeign(sym,True,True);
Buy=Cross(StochD(),30);Sell=Cross(StochD(),80);
x=Equity(1,0);
RestorePriceArrays();
g=IIf(x>g,x,g);
}
for(i=0;(sym=StrExtract(List,i))!="";i++)
{
SetForeign(sym,True,True);
Buy=Cross(StochD(),30);Sell=Cross(StochD(),80);
x=Equity(1,0);
topList=topList+WriteIf(x==g,sym,"")+WriteIf(x==g,",","");
M=M+WriteIf(X!=G,SYM,"")+WriteIf(X!=G,",","");
}
List=m;g=10000;x=0;m="";
}
for(i=0;(sym=StrExtract(topList,i))!="";i++)
{pop=pop+1;}
List1=CategoryGetSymbols(categoryWatchlist,destination);
for(i=0;(sym=StrExtract(List1,i))!="";i++)
{
CategoryRemoveSymbol(sym, categoryWatchlist, destination );
}
for(a=0;a<pop;a++)
{
CategoryAddSymbol(StrExtract(toplist,a), categoryWatchlist,
destination );
}
Filter=1;// any current stock for the n=1 last quotations
AddTextColumn(topList,"top"+WriteVal(top,1.0)+"List");
AddColumn(pop,"topList population",1.0);
// Hit View->RefreshAll
Dimitris Tsokakis
--- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS" <TSOKAKIS@xxxx>
wrote:
> When we use g as a filter, the top10 list may not have 10 stocks.
In
> this case, there was an error in previous formulas. The result was
to
> add also the current stock into the destination WL.
> To avoid this, we may find the population of this artificial
topList
> and add only the top stocks as follows:
>
> //Remove all symbols from WL10, select the top10 Volumes>10,000,000
> from WL5 and send them into WL10.
>
> top=10;ORigin=5;destination=10;
> g=10^7;x=0;k=0;topList="";M="";pop=0;
> List=CategoryGetSymbols(categoryWatchlist,ORigin);
> for(d=1;d<=top;d++)
> {
> for(i=0;(sym=StrExtract(List,i))!="";i++)
> {
> SetForeign(sym);
> x=V;
> RestorePriceArrays();
> g=IIf(x>g,x,g);
> }
> for(i=0;(sym=StrExtract(List,i))!="";i++)
> {
> SetForeign(sym);
> x=V;
> topList=topList+WriteIf(x==g,sym,"")+WriteIf(x==g,",","");
> M=M+WriteIf(X!=G,SYM,"")+WriteIf(X!=G,",","");
> }
> List=m;g=10^7;x=0;m="";
> }
> for(i=0;(sym=StrExtract(topList,i))!="";i++)
> {pop=pop+1;}//this is the population of the topList
>
> List1=CategoryGetSymbols(categoryWatchlist,destination);
> for(i=0;(sym=StrExtract(List1,i))!="";i++)
> {
> CategoryRemoveSymbol(sym, categoryWatchlist, destination );
> }
> for(a=0;a<pop;a++)//this line will add only the top10 stocks, even
if
> they are less than 10
> {
> CategoryAddSymbol(StrExtract(toplist,a), categoryWatchlist,
> destination );
> }
>
> Filter=1;// any current stock for the n=1 last quotations
> AddTextColumn(topList,"top"+WriteVal(top,1.0)+"List");
> AddColumn(pop,"topList population",1.0);
>
> Dimitris Tsokakis
> --- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS"
<TSOKAKIS@xxxx>
> wrote:
> > //the use of g as a filter
> > //Remove all symbols from WL10, select the bottom5 RSI(13) [if RSI
> (13)
> > <40] from WL5 and send them into WL10.
> >
> > top=5;ORigin=5;destination=10;
> > g=40;x=0;k=0;topList="";M="";
> > List=CategoryGetSymbols(categoryWatchlist,ORigin);
> > for(d=1;d<=top;d++)
> > {
> > for(i=0;(sym=StrExtract(List,i))!="";i++)
> > {
> > SetForeign(sym);
> > x=RSI(13);
> > RestorePriceArrays();
> > g=IIf(x<g,x,g);
> > }
> > for(i=0;(sym=StrExtract(List,i))!="";i++)
> > {
> > SetForeign(sym);
> > x=RSI(13);
> > topList=topList+WriteIf(x==g,sym,"")+WriteIf(x==g,",","");
> > M=M+WriteIf(X!=G,SYM,"")+WriteIf(X!=G,",","");
> > }
> > List=m;g=40;x=0;m="";
> > }
> > List1=CategoryGetSymbols(categoryWatchlist,destination);
> > for(i=0;(sym=StrExtract(List1,i))!="";i++)
> > {
> > CategoryRemoveSymbol(sym, categoryWatchlist, destination );
> > }
> > for(a=0;a<top;a++)
> > {
> > CategoryAddSymbol(StrExtract(toplist,a), categoryWatchlist,
> > destination );
> > }
> >
> > Filter=1;// any current stock for the n=1 last quotations
> > AddTextColumn(topList,"top"+WriteVal(top,1.0)+"List");
> >
> > In this example g=40 acts like an upper threshold, the code will
> try
> > the 5 worse RSIs, if they are below the 40 level, else it will
give
> > fewer.
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS"
> <TSOKAKIS@xxxx>
> > wrote:
> > > Applications:
> > > //Remove all symbols from WL10, select the top5 RSI(130) from
WL5
> > and
> > > send them into WL10.
> > > top=5;ORigin=5;destination=10;
> > > g=0;x=0;k=0;topList="";M="";
> > > List=CategoryGetSymbols(categoryWatchlist,ORigin);
> > > for(d=1;d<=top;d++)
> > > {
> > > for(i=0;(sym=StrExtract(List,i))!="";i++)
> > > {
> > > SetForeign(sym);
> > > x=RSI(130);
> > > RestorePriceArrays();
> > > g=IIf(x>g,x,g);
> > > }
> > > for(i=0;(sym=StrExtract(List,i))!="";i++)
> > > {
> > > SetForeign(sym);
> > > x=RSI(130);
> > > topList=topList+WriteIf(x==g,sym,"")+WriteIf(x==g,",","");
> > > M=M+WriteIf(X!=G,SYM,"")+WriteIf(X!=G,",","");
> > > }
> > > List=m;g=0;x=0;m="";
> > > }
> > > List1=CategoryGetSymbols(categoryWatchlist,destination);
> > > for(i=0;(sym=StrExtract(List1,i))!="";i++)
> > > {
> > > CategoryRemoveSymbol(sym, categoryWatchlist, destination );
> > > }
> > > for(a=0;a<top;a++)
> > > {
> > > CategoryAddSymbol(StrExtract(toplist,a), categoryWatchlist,
> > > destination );
> > > }
> > > Filter=1;// any current stock for the n=1 last quotations
> > > AddTextColumn(topList,"top"+WriteVal(top,1.0)+"List");
> > > //After the exploration, hit View->Refresh all
> > >
> > > Notes:
> > > 1. The above code works only for positive arrays.
> > > For MACDs, ROCs, CCIs and other negative arrays, just change
g=0
> > into
> > > an adequate negative g=-1000, or the possible lowest for the
> under
> > > examination array
> > > 2. g value may act like a threshold filter. If, instead of g=0
we
> > > write g=70, then the code will find the top5 of stocks with RSI
> (130)
> > > >70. If there are not 5 stocks, it will give less. If g=0 and
the
> > > indicator is MACD(), then the code will find the top5 of the
> > > *positive* MACDs.
> > > 3. Note that g is fould in Ln4 and in Ln22 and should be
replaced
> > in
> > > both locations.
> > > 4. The indicator is in Ln11 and Ln18. When you try another
> > example,
> > > do not forget to replace RSI(130) in both locations.
> > > 5. With a few changes we may have the bottom5 :
> > > g should be the highest possible and the basic selection
> inequality
> > > g=IIf(x>g,x,g);
> > > should be reversed into
> > > g=IIf(x<g,x,g);
> > > 6. g is the floor [or the ceiling] of x values. It is the
> > > generalisation of min(a1,a2) [or respectively max(a1,a2)], it
is
> > > something like a moving min, it compares two numbers and keep
in
> > > memory the greater [respectively the smaller] for the next
cycle.
> > It
> > > is a way to overcome the max(a1,max(a2,max(a3,...)))
> > > Dimitris Tsokakis
> > > --- In amibroker@xxxxxxxxxxxxxxx, "DIMITRIS TSOKAKIS"
> > <TSOKAKIS@xxxx>
> > > wrote:
> > > > Here is another solution for the top10 list of WL5, as for
the
> > > Stochd
> > > > () array.
> > > >
> > > > // TOP LIST
> > > > top=10;WLno=5;
> > > > g=0;x=0;k=0;topList="";M="";
> > > > List=CategoryGetSymbols(categoryWatchlist,WLno);
> > > > for(d=1;d<top;d++)
> > > > {
> > > > for(i=0;(sym=StrExtract(List,i))!="";i++)
> > > > {
> > > > SetForeign(sym);
> > > > x=StochD();
> > > > RestorePriceArrays();
> > > > g=IIf(x>g,x,g);
> > > > }
> > > > for(i=0;(sym=StrExtract(List,i))!="";i++)
> > > > {
> > > > SetForeign(sym);
> > > > x=StochD();
> > > > topList=topList+WriteIf(x==g,sym,"")+WriteIf(x==g,",","");
> > > > M=M+WriteIf(X!=G,SYM,"")+WriteIf(X!=G,",","");
> > > > }
> > > > List=m;g=0;x=0;m="";
> > > > }
> > > > Filter=1;// any current stock for the n=1 last quotations
> > > > AddTextColumn(topList,"top"+WriteVal(top,1.0)+"List of
> > WL"+WriteVal
> > > > (WLno,1.0));
> > > > Title="top"+WriteVal(top,1.0)+"List of WL"+WriteVal(WLno,1.0)
> > > > +" : "+topList;
> > > >
> > > > Use it in IB or AA, the topList is free [outside any loop]
for
> > > > further use.
> > > > The trick was to remove from the initial list the top stock
of
> > each
> > > > cycle. No composites, no auxiliary arrays, quite fast, no
> > external
> > > > plugins, it seems good...
> > > > Dimitris Tsokakis
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
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/
|