PureBytes Links
Trading Reference Links
|
Andrew, Dave,
Instead of exporting into EXCEL you may do the job entirely in
amibroker.Example:
I have the 101 N100 stocks in WL4 and I select the top50 MA(C*V,250)
with
// Remove all symbols from WL10,
// select the top50 MA(C*V,250) from WL4
// and send them into WL10.
top=50;ORigin=4;destination=10;
g=0;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=MA(C*V,250);
RestorePriceArrays();
g=IIf(x>g,x,g);
}
for(i=0;(sym=StrExtract(List,i))!="";i++)
{
SetForeign(sym);
x=MA(C*V,250);
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="";
}
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++)
{
CategoryAddSymbol(StrExtract(toplist,a), categoryWatchlist,
destination );
}
Filter=1;// EXPLORE 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
Since all the MA(C*V,250) are positive and there is no threshold, put
g=0 and x=MA(C*V,250), select ANY stock
and explore for the n=1 last quotations. It takes some 2-3 secs and
thats it.
Conditional Output:
You may select the conditional top50, asking for example MA(C*V,250)
>300,000,000 by changing g=0 into g=3*10^8;
The result will be
Results:
Ticker,Date/Time,top50List,topList population,
YHOO,19/12/2003,^NDX,MSFT,INTC,CSCO,AMGN,DELL,EBAY,ORCL,AMAT,QCOM,KLAC
,IACI,YHOO,AMZN,NXTL,,15
[YHOO was by chance my current ticker], which is identical to the
x=MA(C*V,250)>3*10^8;;
Filter=x;
AddColumn(MA(C*V,250),"");
Results:
Ticker,Date/Time,Column 0,
^NDX,19/12/2003,20190236672.00
MSFT,19/12/2003,1559890688.00
INTC,19/12/2003,1325250176.00
CSCO,19/12/2003,990616960.00
AMGN,19/12/2003,616505920.00
DELL,19/12/2003,584637056.00
EBAY,19/12/2003,578834304.00
ORCL,19/12/2003,517092672.00
AMAT,19/12/2003,513522016.00
QCOM,19/12/2003,465589152.00
KLAC,19/12/2003,461961376.00
IACI,19/12/2003,382417632.00
YHOO,19/12/2003,373904512.00
AMZN,19/12/2003,349336864.00
NXTL,19/12/2003,320663040.00
The results are automatically moved to the destination WL for any
further use.
Dimitris Tsokakis
--- In amibroker@xxxxxxxxxxxxxxx, "dcrotty2003" <dcrotty2003@xxxx>
wrote:
> Hi Andrew,
>
> Yes, I did run the ranking using Turnover=MA(V*C,250) in it.
>
> Another thing I have just done is run this:
>
> Filter=MA(V*C,250);
> SetOption("NoDefaultColumns", True);
> AddTextColumn( Name(), "Ticker", 77);
> AddColumn( DateTime(), " Date ", formatDateTime);
> AddColumn( Close, " Close ", 1.3);
> AddColumn(MA(V*C,250), "Turnover", 1);
>
> ...on a single date and exported the data to a CSV file and on
sorted
> the
> volume top to bottom.
>
> I compared it with the same date on the ~TurnoverTop200 and the
> value in the ~TurnoverTop200 would catch around 180 stocks when
> looking at the volume in the csv file. Thanks.
>
> Dave
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Andrew Perrin" <adjp@xxxx>
> wrote:
> > Dave
> > Had to think about this one, I noticed you have used Turnover=MA
> (V*C,250) . This is not the turnover calculation used in the
initial
> Ranking AFL, did you modify that ranking calculation as well, if not
> that
> is the reason for the discrepancy. It does work for me.
> >
> > >BTW I would like to do an Explore on single day (say on
> 01/01/2003)
> > >using for an example: MA(V*C,250) so I can do a sort in AA to
see
> what
> > >the actual Top 200 stocks symbols were. I've tried a few thing
but
> I'm
> > >not sure how to set it up in the AA and what range to set (ie:
> does it
> > >need to be back 250 days for the 250 day MA) ?
> >
> > Just set Range From - 01/01/2003 To - 01/01/2003 and explore. No
> you don't have to worry about 250 day MA, Amibroker takes care of
> that
> for you.
> >
> > Andrew
> >
> >
> > ----- Original Message -----
> > From: dcrotty2003
> > To: amibroker@xxxxxxxxxxxxxxx
> > Sent: Sunday, December 21, 2003 8:40 AM
> > Subject: [amibroker] Re: Top 200 stocks by volume
> >
> >
> > Hi Andrew,
> >
> > I just did a simple scan to see exactly how many stocks were
> above
> the
> > turnover formula in the rank code ie:
> >
> > Turnover=MA(V*C,250) >= Foreign("~TurnoverTop200","C");
> > Buy = 0;
> > AddToComposite(Turnover, "~StockNum", "X" );
> >
> > ...I found the number of stocks picked on a day varies between
> 170
> &
> > 180 or so, rather then 200. Do you know why this would be?
Thanks.
> >
> > BTW I would like to do an Explore on single day (say on
> 01/01/2003)
> > using for an example: MA(V*C,250) so I can do a sort in AA to
see
> what
> > the actual Top 200 stocks symbols were. I've tried a few thing
> but
> I'm
> > not sure how to set it up in the AA and what range to set (ie:
> does it
> > need to be back 250 days for the 250 day MA) ?
> >
> > Dave
> >
> >
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "Andrew Perrin" <adjp@xxxx>
> > wrote:
> > > Dave
> > > Good to hear you got it working. I don't run this exact scan,
> but
> yes I
> > do run a ranking scan daily. I contributed the Turnover Ranking
> as
> an
> > example, Perhaps of interest to you was a discussion on
whether
> this
> > particular formula for turnover was the best as opposed to MA(V
*
> > Close ,sov1).
> > > see http://groups.yahoo.com/group/amibroker-ts/message/596
> for
> > this discussion
> > > >Just add MA(V,sov1) * Close >= foreign
> > > >("~Top200Vol","C"); to my system and that's it. Does that
> sound
> OK?
> > > What you suggest sounds right to me
> > > Andrew
> > >
> > >
> > >
> > >
> > > ----- Original Message -----
> > > From: dcrotty2003
> > > To: amibroker@xxxxxxxxxxxxxxx
> > > Sent: Saturday, December 20, 2003 4:22 PM
> > > Subject: [amibroker] Re: Top 200 stocks by volume
> > >
> > >
> > > Andrew,
> > >
> > > Excellent!! :-) got it going, thanks for your time and your
> code. I
> > didn't
> > > understand how it worked and now that I see it on a chart,
I
> doesn't
> > > look like it's necessary to do it month by month as I
> mentioed in
> my
> > > previous post. Just add MA(V,sov1) * Close >= foreign
> > > ("~Top200Vol","C"); to my system and that's it. Does that
> sound
> OK?
> > >
> > > Do you run this daily prior to Scaning for signals?
> > >
> > > Thanks again.
> > > Dave
> > >
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx, "Andrew Perrin"
> <adjp@xxxx>
> > > wrote:
> > > > Dave
> > > > to use this AFL, you need to set the APPLY TO -> CURRENT
> > > STOCK not Filter -> Watchlist -> 1000 stocks. For
the
> current
> > stock
> > > selected it is best to use a stock with no data holes ( I
use
> an
> > INDEX ).
> > > I've copied a snippet of code from the AFL below, this is
> what I
> tried
> > to
> > > explain in first comment. Under user variables are
> > > > sWatchlist = 4; This is the watchlist you want to scan
not
> write
> > > results to. Set this to whatever you mistakenly set the
> filter to
> > initially.
> > > > Rank_No = 200; This is the depth you want to rank to ie.
> the
> > 200th
> > > highest rank value will be added to the AddToComposite.
> > > >
> > > > //
> > >
> >
> ****************************************************
> > > ************
> > > > // APPLY TO - CURRENT STOCK - Set to an index (no data
> holes).
> > > > // RANGE - FROM - "set date" TO - "set date",
> > > > // SCAN or EXPLORE
> > > > //
> > >
> >
> ****************************************************
> > > ************
> > > > osInitialize();
> > > > #pragma nocache
> > > > //#include "afl/AP_Functions.afl";
> > > > //////////////////////////////////////////////////
> > > > // User Variables - enter here //
> > > > /////////////////////////////////////////////////
> > > > sWatchlist = 4; // set to desired watchlist.
> > > > Rank_No = 100; // set the depth to rank to.
> > > >
> > > >
> > > > Hope this Helps, any problems just ask
> > > >
> > > > Andrew
> > > > ----- Original Message -----
> > > > From: dcrotty2003
> > > > To: amibroker@xxxxxxxxxxxxxxx
> > > > Sent: Saturday, December 20, 2003 9:50 AM
> > > > Subject: [amibroker] Re: Top 200 stocks by volume
> > > >
> > > >
> > > > Hi Andrew, thanks for your reply.
> > > >
> > > > Re: Add To Composite RankValue based on Ranking
> calculation.
> > > >
> > > > Using the code in the message you wrote, I believe I
> could
> use
> > the
> > > > composite value as a filter in my systems backtest.
> > > >
> > > > I could run the top 200 volume code over each month for
> the
> last
> > > > couple of years, setting up watchlists/composites to use
> in
> > > backtesting.
> > > >
> > > > Then in my system, add a date function for each of the
> months
> > > > composites as a volume filter for backtesting over the
> 1000
> > stocks.
> > > >
> > > > ie:
> > > > IIf(Year()==2003 AND Month()==11,MA(V,sov1) * Close >=
> > foreign
> > > > ("~Top200Vol_11_2003","C"),
> > > > IIf(Year()==2003 AND Month()==12,MA(V,sov1) * Close >=
> > foreign
> > > > ("~Top200Vol_12_2003","C"),
> > > >
> > > > ....etc etc etc
> > > >
> > > > Nothing's never that easy is it!! ...hoping for a
simpler
> way.
> > > >
> > > > Anyway down to business :-) I've downloaded the Osaka
> plug-
> in
> > and
> > > run
> > > > the code on a watchlist of 1000 stocks. I get the
> composite
> come
> > up
> > > > with zero and nothing in my watchlist 4. In the AA
> results all
> the
> > > > Rank Values are zero.
> > > >
> > > > Any idea what I could be doing wrong? I'm selecting
Apply
> to -
> >
> > > > Filter -> Watchlist -> 1000 stocks and setting the date
> to the
> last
> > > > months worth. I'm using AB Version 4.5.6 and I guess
> there's
> > nothing
> > > > to setup in the Settings?
> > > >
> > > > Thanks, Dave
> > > >
> > > >
> > > > --- In amibroker@xxxxxxxxxxxxxxx, "Andrew"
> <a.perrin@xxxx>
> > > wrote:
> > > > > Dave
> > > > > Take a look at messages 50428 and 50457. They might
be
> > what
> > > you
> > > > want
> > > > >
> > > > > Andrew
> > > > >
> > > > > --- In amibroker@xxxxxxxxxxxxxxx, "dcrotty2003"
> > > > <dcrotty2003@xxxx>
> > > > > wrote:
> > > > > > Hi Mark, and thanks for the reply.
> > > > > >
> > > > > > Sounds a bit tricky, I have no knowledge of JScript.
> > > > > >
> > > > > > Would anyone have already coded something similar
in
> > JScript
> > > that
> > > > > > Mark suggested and I may be able to modify it.
> > > > > >
> > > > > > Otherwise, any other suggestions on how to do it?
> Thanks.
> > > > > >
> > > > > > Dave
> > > > > >
> > > > > > --- In amibroker@xxxxxxxxxxxxxxx, "Mark H"
> > > <amibroker@xxxx>
> > > > wrote:
> > > > > > > I haven't tried that, but based on what I read in
> the
> help
> > file,
> > > > > > you can do an automatic script to accomplish that.
> > > > > > >
> > > > > > > 1. load the explore formula and settings
> > > > > > > 2. invoke the explore
> > > > > > > 3. save the results to a file
> > > > > > > 4. read the file and choose the top 200 tickers
> > > > > > > 5. clear existing watchlist
> > > > > > > 6. set the 200 tickers to watchlist
> > > > > > >
> > > > > > > You can even add the backtest steps:
> > > > > > >
> > > > > > > 7. load the backtest formula and settings
> > > > > > > 8. invoke the backtest
> > > > > > > 9. save the reports to files.
> > > > > > >
> > > > > > > All these can be done in JScript. After that, the
> whole
> > process
> > > > > is
> > > > > > just one click away.
> > > > > > >
> > > > > > > - Mark H.
> > > > > > > ----- Original Message -----
> > > > > > > From: dcrotty2003
> > > > > > > To: amibroker@xxxxxxxxxxxxxxx
> > > > > > > Sent: Thursday, December 18, 2003 4:51 PM
> > > > > > > Subject: [amibroker] Top 200 stocks by volume
> > > > > > >
> > > > > > >
> > > > > > > Hi,
> > > > > > >
> > > > > > > From a newbie EOD trader. Instead of
backtesting
> using
> > > todays
> > > > > > index,
> > > > > > > is it possible to create a daily list of 200
only
> stocks
> from
> > > > > a
> > > > > > list
> > > > > > > of 1000 filtered by moving average volume and
my
> > system
> > > > > > backtested on
> > > > > > > this list?
> > > > > > >
> > > > > > > I know I could do an explore to pick out the top
> 200
> and
> > > save
> > > > > it
> > > > > > to a
> > > > > > > watchlist then backtest on the list, but I want
> the list
> to
> > be
> > > > > > > changed everyday within the backtest.
> > > > > > >
> > > > > > > I don't want if using the rank function to only
> buy top-
> > down
> > > > > > stocks
> > > > > > > with the highest volume but to buy any of the
200
> > selected
> > > > > stocks.
> > > > > > >
> > > > > > > Thanks for any help.
> > > > > > >
> > > > > > > Dave
> >
> >
> >
> > Send BUG REPORTS to bugs@xxxx
> > Send SUGGESTIONS to suggest@xxxx
> > -----------------------------------------
> > 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
> >
> > a.. To visit your group on the web, go to:
> > http://groups.yahoo.com/group/amibroker/
> >
> > b.. To unsubscribe from this group, send an email to:
> > amibroker-unsubscribe@xxxxxxxxxxxxxxx
> >
> > c.. Your use of Yahoo! Groups is subject to the Yahoo! Terms
of
> Service.
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/
|