262 %macro quotes (code=, start=, end=, prompt=NO);
263 %local code start end;
264 %local s _start _end a b c d e f g url;
265 %if (%superq(code) eq ) %then %let code=000001.SZ;
266 %let code = %upcase (&code);
267 %if (%superq(end) eq )
268 %then %let end = %sysfunc(today(),mmddyy8);
269 %if (%superq(start) eq ) %then %do;
270 %let start = %sysfunc(inputn(&end,mmddyy8.));
271 %let start = %eval (&start-30);
272 %let start = %sysfunc(putn(&start,mmddyy8.));
273 %end;
274 %if (%upcase(&prompt) eq YES) %then %do;
ERROR: 没有找到期望的 %THEN 语句。
ERROR: 将编译哑宏。
275 %window quotes rows=12 columns=30
276 [email=#2@2]#2@2[/email] "code: " code 4 c=blue a=rev_video
277 [email=#4@2]#4@2[/email] "Start: " start 8 c=blue a=rev_video
278 [email=#6@2]#6@2[/email] "End: " end 8 c=blue a=rev_video
279 ;
280 %display quotes;
281 %end;
282 %let code = %upcase (&code);
283 %if (%superq(end) eq )
284 %then %let _end = %sysfunc(today());
285 %else %let _end = %sysfunc(inputn(&end ,mmddyy10.));
286 %if (%superq(start) eq )
287 %then %let _start = %eval (&_end-30);
288 %else %let _start = %sysfunc (inputn(&start,mmddyy10.));
ERROR: %ELSE 没有匹配的 %IF 语句。
289 %let s = &code;
290 %let a = %sysfunc (month(&_start)); %let a=%eval(&a-1);
291 %let b = %sysfunc (day (&_start));
292 %let c = %sysfunc (year (&_start));
293 %let d = %sysfunc (month(&_end)); %let d=%eval(&d-1);
294 %let e = %sysfunc (day (&_end));
295 %let f = %sysfunc (year (&_end));
296 %let g = d;
297 %let and = %str(&);
298
299 %let url =
http://ichart.finance.yahoo.com/table.csv;
300 %let url = &url.?s=&s;
301 %let url = &url.&and.a=&a.&and.b=&b.&and.c=&c;
302 %let url = &url.&and.d=&d.&and.e=&e.&and.f=&f;
303 %let url = &url.&and.g=&g;
304 %let url = &url.&and.ignore=.csv;
305 %put &url;
306 filename quotes URL "&url";
307 data stockquotes;
308 infile quotes dlm=",";
309 retain code "&code";
310 if _n_ = 1 then input; * skip header row;
311 input date date9. opening highest lowest closing volume;
312 format date yymmdd10.;
313 format volume comma11.;
314 run;
315 %bye:
316 %mend;
317 /*
318 调用格式如:
319 %quotes (code=aol, prompt=YES);
320
321 %quotes (code=000001.SZ, start=4/1/03, end=4/10/2010);
322
323 其中:code为股票代码,美国股票代码不用加后缀,深市代码后加.SZ,沪市代码后加.SS,如000001.SZ为深发展代码,
324 详见
http://finance.yahoo.com/l
325 start和end分别为起止日期,格式为mm/dd/yyyy
326 prompt:是否弹出窗口输入上述参数
327
328 ps. 沪深股票行情数据好象每次最多只能下载200个记录.
329 */
330 %quotes (code=000001.SZ, start=1/1/2003, end=9/30/2005);
-
180
WARNING: 没有解析宏 QUOTES 的调用。
ERROR 180-322: 语句无效或未按正确顺序使用。
331 /* 从yahoo.com读取股票行情数据*/
332 %macro quotes(code=, start=, end=, prompt=NO);
333 %local code start end;
334 %local s _start _end a b c d e f g url;
335 %if (%superq(code) eq ) %then %let code=000001.SZ;
336 %let code = %upcase (&code);
337 %if (%superq(end) eq )
338 %then %let end = %sysfunc(today(),mmddyy8);
339 %if (%superq(start) eq ) %then %do;
340 %let start = %sysfunc(inputn(&end,mmddyy8.));
341 %let start = %eval (&start-30);
342 %let start = %sysfunc(putn(&start,mmddyy8.));
343 %end;
344 %if (%upcase(&prompt) eq YES) %then %do;
ERROR: 没有找到期望的 %THEN 语句。
ERROR: 将编译哑宏。
345 %window quotes rows=12 columns=30
346 [email=#2@2]#2@2[/email] "code: " code 4 c=blue a=rev_video
347 [email=#4@2]#4@2[/email] "Start: " start 8 c=blue a=rev_video
348 [email=#6@2]#6@2[/email] "End: " end 8 c=blue a=rev_video
349 ;
350 %display quotes;
351 %end;
352 %let code = %upcase (&code);
353 %if (%superq(end) eq )
354 %then %let _end = %sysfunc(today());
355 %else %let _end = %sysfunc(inputn(&end ,mmddyy10.));
356 %if (%superq(start) eq )
357 %then %let _start = %eval (&_end-30);
358 %else %let _start = %sysfunc (inputn(&start,mmddyy10.));
ERROR: %ELSE 没有匹配的 %IF 语句。
359 %let s = &code;
360 %let a = %sysfunc (month(&_start)); %let a=%eval(&a-1);
361 %let b = %sysfunc (day (&_start));
362 %let c = %sysfunc (year (&_start));
363 %let d = %sysfunc (month(&_end)); %let d=%eval(&d-1);
364 %let e = %sysfunc (day (&_end));
365 %let f = %sysfunc (year (&_end));
366 %let g = d;
367 %let and = %str(&);
368
369 %let url =
http://ichart.finance.yahoo.com/table.csv;
370 %let url = &url.?s=&s;
371 %let url = &url.&and.a=&a.&and.b=&b.&and.c=&c;
372 %let url = &url.&and.d=&d.&and.e=&e.&and.f=&f;
373 %let url = &url.&and.g=&g;
374 %let url = &url.&and.ignore=.csv;
375 %put &url;
376 filename quotes URL "&url";
377 data stockquotes;
378 infile quotes dlm=",";
379 retain code "&code";
380 if _n_ = 1 then input; * skip header row;
381 input date date9. opening highest lowest closing volume;
382 format date yymmdd10.;
383 format volume comma11.;
384 run;
385 %bye:
386 %mend;
387 /*
388 调用格式如:
389 %quotes (code=aol, prompt=YES);
390
391 %quotes (code=000001.SZ, start=4/1/03, end=4/10/2010);
392
393 其中:code为股票代码,美国股票代码不用加后缀,深市代码后加.SZ,沪市代码后加.SS,如000001.SZ为深发展代码,
394 详见
http://finance.yahoo.com/l
395 start和end分别为起止日期,格式为mm/dd/yyyy
396 prompt:是否弹出窗口输入上述参数
397
398 ps. 沪深股票行情数据好象每次最多只能下载200个记录.
399 */
400 %quotes(code=000001.SZ, start=1/1/2003, end=9/30/2005);
-
180
WARNING: 没有解析宏 QUOTES 的调用。
ERROR 180-322: 语句无效或未按正确顺序使用。