%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;