全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3943 7
2012-09-10
我需要下载从yahoo finance上下载daily stock的数据,包括所有上市公司在DASDQ,NYSE and AMEX。我有一个file里包含了所以的stock symbols,但是有一个难题解决不了。

%macro a (symbols= );

filename in url "http://finance.yahoo.com:80/d/quotes.txt?s=&symbols.&f=sd1t1l1c1oaba5b6j1pv&e=.txt)";
options nodate nonumber nocenter ls=70;
data d;
infile in dsd end=eof termstr=crlf;
input Ticker : $4. TradeDate : $10. TradeTime: $7. Price Change Open ask bid asksize bidsize mktcap pre_close Volume;
run;
%mend a;
%a (symbols=YHOO+IBM+HPQ);

macro里的symbols 我需要写成 A+B+C+....., 有7000多个symbol,我希望可以写个程序把file的里的股票代码自动用加号的形式写出来,每一次不总数不超过1000个。

哪位大牛能指点一下,谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-9-11 01:11:12
ding
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-9-13 10:43:04
See my post at the link below,
https://bbs.pinggu.org/thread-1303528-1-1.html
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-9-14 23:38:10
谢谢ls的大牛,看过您之前的帖子。我对您那个帖子里的时间设定有些问题。因为我每天都要update,所以时间end date想设定为(today),begin date想设定为today的前10天。如果这样,怎么样修改您的程序。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-9-15 10:02:26
Change it as below,

data _null_;
  stkname='bidu';
  startdate=today( ) - 10;
  enddate=today( );
  
  ***********do not edit***********************;
  stkname=upcase(stkname);
  m1=month(startdate)-1;
  d1=day(startdate);
  y1=year(startdate);
  m2=month(enddate)-1;
  d2=day(enddate);
  y2=year(enddate);
  filen=catt('filename mkt URL ', "'",'http://table.finance.yahoo.com:80/table.csv?s=',stkname,
             '&a=',m1,'&b=',d1,'&c=',y1,'&d=',m2,'&e=',d2,'&f=',y2,'&g=d',"';");
  call execute( filen);
  call execute(  'data ' || stkname || ';') ;
  call execute(  'length Stkname $4 Date 8 Day $3 Open High Low Close Volume 8;');
  call execute(  "infile mkt dlm=',' firstobs=2;");
  call execute(  "input Date yymmdd10. Open High Low Close Volume; ");
  call execute(  "stkname='" || stkname || "';");
  call execute(  "Day=upcase(strip(put(date, weekdatx.)));");
  call execute(  "format Date date9. Volume comma11.;run;");
  run;

  

  proc print;run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-9-18 07:11:20
bobguy 发表于 2012-9-15 10:02
Change it as below,

data _null_;
FILENAME NASDQ URL 'http://www.nasdaqtrader.com/dynamic/SymDir/nasdaqlisted.txt';

DATA NASDAQSTOCKLIST;
INFILE NASDQ DELIMITER = '|' MISSOVER LRECL = 128 FIRSTOBS = 2;
LENGTH SYMBOL $5. SECURITYNAME $55. MARKETCATEGORY $15. TESTISSUE $2. FINANCIALSTATUS $2. ROUND $2.;
INPUT SYMBOL $ SECURITYNAME $ MARKETCATEGORY ~ TESTISSUE $ FINANCIALSTATUS $ ROUND $;
RUN;

data NASDAQSTOCKLIST;
        set NASDAQSTOCKLIST;
        where index (symbol, "AA")>0;
run;

DATA _NULL_;
SET NASDAQSTOCKLIST;

edte=today();
bdte=edte-10;
eday=day(edte);
emnth=month(edte);
eyr=year(edte);
bday=day(bdte);
bmnth=month(bdte);
byr=year(bdte);
CALL EXECUTE("filename "||Symbol||" url '"||'http://ichart.finance.yahoo.com/table.csv?s='
||compress(Symbol)||'&d='||strip(emnth)||'&e='||strip(eday)||'&f='||strip(eyr)||'&g=d&a='||strip(bmnth)||'&b='||strip(bday)
||'&c='||strip(byr)||'&ignore=.csv'||"' DEBUG;");

CALL EXECUTE("data "||Symbol||";");
CALL EXECUTE("infile "||Symbol||" dsd lrecl = 128 firstobs = 2;");
CALL EXECUTE("informat Date yymmdd10.;");
CALL EXECUTE("input Date Open High Low Close Volume AdjClose;");
CALL EXECUTE("format Date yymmdd10.;");
CALL EXECUTE("RUN;");
RUN;

PROC SQL;
DROP TABLE NASDAQSTOCKLIST;
QUIT;
PROC CONTENTS DATA = WORK._ALL_ OUT = CONTENTS NOPRINT;RUN;
PROC SORT DATA = CONTENTS(WHERE = (NOBS > 1000) KEEP = MEMNAME NOBS) NODUPKEY; BY MEMNAME; RUN;
DATA _NULL_; SET CONTENTS;
CALL EXECUTE("PROC SORT DATA = "||MEMNAME||"(KEEP = DATE CLOSE);");
CALL EXECUTE("BY DATE;RUN;");
RUN;
DATA _NULL_; SET CONTENTS END = EOF;
IF _N_ = 1 THEN CALL Execute("DATA OVERALL;MERGE");
CALL EXECUTE(MEMNAME||"(RENAME = (CLOSE = "||MEMNAME||"))");
IF EOF THEN DO; CALL EXECUTE(";BY DATE;RUN;");
END;
RUN;

大牛能帮我看看我上面的code,follow您的方法但是不正确。我想用NASDAQ里面的symbol作为索引然后下载每一个symbol的data,最后合并到一起。谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群