本人做了一个用R语言的K线图,希望大家喜欢,注意横轴是时间轴
我也是学生,希望和大家多多交流
R语言代码如下:
本帖隐藏的内容
- # 设置当前的工作目录
- # 基于R语言做K线图
- # by fantuanxiaot
- setwd("D:/MyDriversMatlab/Mfiles12")
- # 读取数据
- library(RODBC)
- excel_conn<-odbcConnectExcel('HS300.xls')
- HS300.Data<-sqlFetch(excel_conn,'Sheet1')
- # 关闭DB连接
- close(excel_conn)
- # 查看数据
- head(HS300.Data,30)
- # 得到了所需要的数据
- FT_Kplot<-function(OPEN,HIGH,LOW,CLOSE,DATE)
- {
- N<-length(OPEN)
- w<-0.3
- D<-CLOSE-OPEN
- par(family='serif')
- # 作图
- plot(c(1:N),CLOSE,type='n',xaxt='n',
- xlab='时间',ylab='价格',font.axis=1.5)
- title(main='K线图',cex=2,col='black')
- for(i in 1:N)
- {
- lines(c(i,i),c(LOW[i],HIGH[i]),col='black',lwd=1)
- x<-c(i-w,i-w,i+w,i+w)
- y<-c(OPEN[i],CLOSE[i],CLOSE[i],OPEN[i])
- if(D[i]<0)
- {
- polygon(x,y,col='green',border='green')
- } else
- {
- polygon(x,y,col='red',border='red')
- }
- }
- Index<-seq(from=1,to=N,length=5)
- Index<-round(Index)
- Text<-DATE[Index]
- axis(side=1,Index,labels=Text,cex.axis=1)
- }
- # 作图
- DATE<-HS300.Data[,1]
- OPEN<-HS300.Data[,2]
- HIGH<-HS300.Data[,3]
- LOW<-HS300.Data[,4]
- CLOSE<-HS300.Data[,5]
- DATE<-substr(DATE,1,10)
- FT_Kplot(OPEN[c(1:100)],HIGH[c(1:100)],
- LOW[c(1:100)],CLOSE[c(1:100)],DATE[c(1:100)])
- FT_Kplot(OPEN[c(1:300)],HIGH[c(1:300)],
- LOW[c(1:300)],CLOSE[c(1:300)],DATE[c(1:300)])
- # #############################################
- # #############################################
具体作图如下:R语言做K线图也不错
FT_Kplot(OPEN[c(1:100)],HIGH[c(1:100)],
LOW[c(1:100)],CLOSE[c(1:100)],DATE[c(1:100)])
FT_Kplot(OPEN[c(1:300)],HIGH[c(1:300)],
LOW[c(1:300)],CLOSE[c(1:300)],DATE[c(1:300)])
试验数据:
data.zip
(94.34 KB)
本附件包括:- HS300.xls
而Matlab的K线作图就大家很熟悉
我模仿faruto做了个K线图的极其简单版本
代码如下:
本帖隐藏的内容
- function FT_Kplot(OPEN,HIGH,LOW,CLOSE,DATE)
- %% by faruto
- %% 注意DATE是double的时间
- %% Modified by fantuanxiaot
- %% 例子
- % load disney
- % FT_Kplot(dis_OPEN(end-100:end),dis_HIGH(end-100:end),dis_LOW(end-100:end),dis_CLOSE(end-100:end),dis_nv.dates(end-100:end))
- % FT_Kplot(dis_OPEN(end-20:end),dis_HIGH(end-20:end),dis_LOW(end-20:end),dis_CLOSE(end-20:end),dis_nv.dates(end-20:end))
- %% K线图
- w=0.3*min(diff(DATE));
- D=CLOSE-OPEN;
- N=length(D);
- scrsz=get(0,'ScreenSize');
- figure('color','w','Position',[scrsz(3)*0.1 scrsz(4)*0.25 scrsz(3)*0.95 scrsz(4)]*0.7)
- movegui(gcf,'center')
- % 一个空图
- plot(DATE,CLOSE,'w')
- hold on
- for i=1:N
- line([DATE(i) DATE(i)],[LOW(i) HIGH(i)],'color','k','linewidth',0.5);
- x=[DATE(i)-w DATE(i)-w DATE(i)+w DATE(i)+w DATE(i)-w];
- y=[OPEN(i) CLOSE(i) CLOSE(i) OPEN(i) OPEN(i)];
- if ~isnan(D(i))
- if D(i)<0
- fill(x,y,'g','EdgeColor', 'g');
- elseif D(i)>=0
- fill(x,y,'r','EdgeColor','r');
- end
- end
- end
- dateaxis('x',2)
- set(gca,'fontname','华文楷体')
- %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
举例如下:
load disney
FT_Kplot(dis_OPEN(end-100:end),dis_HIGH(end-100:end),dis_LOW(end-100:end),dis_CLOSE(end-100:end),dis_nv.dates(end-100:end))
FT_Kplot(dis_OPEN(end-20:end),dis_HIGH(end-20:end),dis_LOW(end-20:end),dis_CLOSE(end-20:end),dis_nv.dates(end-20:end))


雷达卡




京公网安备 11010802022788号







