搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  data.zip
资料下载链接地址: https://bbs.pinggu.org/a-1786839.html
本附件包括:
  • HS300.xls
附件大小:
94.34 KB   举报本内容
很多人希望在网上搜索用R语言做K线图,苦于没有程序
本人做了一个用R语言的K线图,希望大家喜欢,注意横轴是时间轴
我也是学生,希望和大家多多交流
R语言代码如下:
[hide]
  1. #设置当前的工作目录
  2. #基于R语言做K线图
  3. #by fantuanxiaot
  4. setwd("D:/MyDriversMatlab/Mfiles12")
  5. #读取数据
  6. library(RODBC)
  7. excel_conn<-odbcConnectExcel('HS300.xls')
  8. HS300.Data<-sqlFetch(excel_conn,'Sheet1')
  9. #关闭DB连接
  10. close(excel_conn)
  11. #查看数据
  12. head(HS300.Data,30)
  13. #得到了所需要的数据
  14. FT_Kplot<-function(OPEN,HIGH,LOW,CLOSE,DATE)
  15. {
  16. N<-length(OPEN)
  17. w<-0.3
  18. D<-CLOSE-OPEN
  19. par(family='serif')
  20. #作图
  21. plot(c(1:N),CLOSE,type='n',xaxt='n',
  22. xlab='时间',ylab='价格',font.axis=1.5)
  23. title(main='K线图',cex=2,col='black')
  24. for(i in 1:N)
  25. {
  26. lines(c(i,i),c(LOW[i],HIGH[i]),col='black',lwd=1)
  27. x<-c(i-w,i-w,i+w,i+w)
  28. y<-c(OPEN[i],CLOSE[i],CLOSE[i],OPEN[i])
  29. if(D[i]<0)
  30. {
  31. polygon(x,y,col='green',border='green')
  32. } else
  33. {
  34. polygon(x,y,col='red',border='red')
  35. }
  36. }
  37. Index<-seq(from=1,to=N,length=5)
  38. Index<-round(Index)
  39. Text<-DATE[Index]
  40. axis(side=1,Index,labels=Text,cex.axis=1)
  41. }
  42. #作图
  43. DATE<-HS300.Data[,1]
  44. OPEN<-HS300.Data[,2]

  45. HIGH<-HS300.Data[,3]
  46. LOW<-HS300.Data[,4]
  47. CLOSE<-HS300.Data[,5]
  48. DATE<-substr(DATE,1,10)
  49. FT_Kplot(OPEN[c(1:100)],HIGH[c(1:100)],
  50. LOW[c(1:100)],CLOSE[c(1:100)],DATE[c(1:100)])
  51. FT_Kplot(OPEN[c(1:300)],HIGH[c(1:300)],
  52. LOW[c(1:300)],CLOSE[c(1:300)],DATE[c(1:300)])
  53. ##############################################
  54. ##############################################
复制代码



[/hide]

具体作图如下: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)])



试验数据:


而Matlab的K线作图就大家很熟悉
我模仿faruto做了个K线图的极其简单版本
代码如下:
[hide]
  1. function FT_Kplot(OPEN,HIGH,LOW,CLOSE,DATE)
  2. %%by faruto
  3. %%注意DATE是double的时间
  4. %%Modified by fantuanxiaot
  5. %%例子
  6. %load disney
  7. %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))
  8. %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))
  9. %%K线图
  10. w=0.3*min(diff(DATE));
  11. D=CLOSE-OPEN;
  12. N=length(D);
  13. scrsz=get(0,'ScreenSize');
  14. figure('color','w','Position',[scrsz(3)*0.1 scrsz(4)*0.25 scrsz(3)*0.95 scrsz(4)]*0.7)
  15. movegui(gcf,'center')
  16. %一个空图
  17. plot(DATE,CLOSE,'w')
  18. hold on
  19. for i=1:N
  20. line([DATE(i) DATE(i)],[LOW(i) HIGH(i)],'color','k','linewidth',0.5);
  21. x=[DATE(i)-w DATE(i)-w DATE(i)+w DATE(i)+w DATE(i)-w];
  22. y=[OPEN(i) CLOSE(i) CLOSE(i) OPEN(i) OPEN(i)];
  23. if ~isnan(D(i))
  24. if D(i)<0
  25. fill(x,y,'g','EdgeColor', 'g');
  26. elseif D(i)>=0
  27. fill(x,y,'r','EdgeColor','r');
  28. end
  29. end
  30. end
  31. dateaxis('x',2)
  32. set(gca,'fontname','华文楷体')
  33. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  34. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
复制代码


[/hide]
举例如下:
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))





    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

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

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

GMT+8, 2025-12-30 08:32