%let gpath='';
%let dpi=200;
ods html close;
ods listing gpath=&gpath image_dpi=&dpi;
/*--Extract subset for IBM and Sort by ascending date--*/
proc sort data=sashelp.stocks
(where=(stock='IBM' and date > '01Jan2004'd))
out=ibm;
by date;
run;
/*--Data for Box plot--*/
data boxParm;
length Group $4;
format DateUp DateDn date7.;
keep Date DateUp DateDn Stat Value Group Close2;
set ibm;
Stat='Min'; Value=low; output;
Stat='Max'; Value=high; output;
Stat='Q1'; Value=min(open, close); output;
Stat='Q3'; Value=max(open, close); Close2=close; output;
run;
/*--Template for OHLC plot--*/
proc template;
define statgraph OHLC;
begingraph;
entrytitle 'Stock Chart for IBM';
layout overlay / xaxisopts=(display=(ticks tickvalues line)
discreteopts=(tickvaluefitpolicy=thin));
boxplotparm x=date y=value stat=stat;
seriesplot x=date y=close2 / lineattrs=(color=gray);
endlayout;
endgraph;
end;
run;
/*--OHLC plot--*/
ods listing style=lisitng;
ods graphics / reset width=5in height=3in imagename='Stock Plot_GTL_92';
proc sgrender data=boxParm template=OHLC;
run;
/*--Style for High Low colored by up / down--*/
%modstyle(name=ohlc, parent=listing, type=CLM, colors=pink lightgreen, fillcolors=pink lightgreen);
/*--Data for OHLC plot by group--*/
data boxParmGrp;
length Group $4;
retain prevclose;
format DateUp DateDn date7.;
keep Date DateUp DateDn Stat Value Group Close2;
set ibm;
if close > prevclose then Group='Up';
else Group='Down';
if Group='Up' then dateUp=date;
else dateDn=date;
Stat='Min'; Value=low; output;
Stat='Max'; Value=high; output;
Stat='Q1'; Value=min(open, close); output;
Stat='Q3'; Value=max(open, close); Close2=close; output;
prevclose=close;
run;
/*--Template for OHLC plot by group--*/
proc template;
define statgraph OHLC_Grp;
begingraph;
entrytitle 'Stock Chart for IBM';
layout overlay / xaxisopts=(display=(ticks tickvalues line)
discreteopts=(tickvaluefitpolicy=thin));
boxplotparm x=date y=value stat=stat / fillattrs=graphdata2
name='All' legendlabel='Up';
boxplotparm x=datedn y=value stat=stat / fillattrs=graphdata1
name='Dn' legendlabel='Down';;
seriesplot x=date y=close2 / lineattrs=(color=gray);
discretelegend 'All' 'Dn';
endlayout;
endgraph;
end;
run;
/*--OHLC plot by group--*/
ods listing style=styles.ohlc;
ods graphics / reset width=5in height=3in imagename='Stock Plot_Group_GTL_92';
proc sgrender data=boxParmGrp template=OHLC_Grp;
run;