请选择 进入手机版 | 继续访问电脑版
楼主: fantuanxiaot
21297 245

[源码分享] [原创]基于R语言和Matlab做K线图[by fantuanxiaot]   [推广有奖]

Ψ▄┳一大卫卍卐席尔瓦

大师

8%

还不是VIP/贵宾

-

威望
7
论坛币
-234475 个
通用积分
124.0224
学术水平
3783 点
热心指数
3819 点
信用等级
3454 点
经验
150207 点
帖子
7546
精华
32
在线时间
1327 小时
注册时间
2013-2-3
最后登录
2022-2-24

初级学术勋章 初级热心勋章 中级热心勋章 中级学术勋章 初级信用勋章 中级信用勋章 高级热心勋章 高级学术勋章 特级学术勋章 特级热心勋章 高级信用勋章 特级信用勋章

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
很多人希望在网上搜索用R语言做K线图,苦于没有程序
本人做了一个用R语言的K线图,希望大家喜欢,注意横轴是时间轴
我也是学生,希望和大家多多交流
R语言代码如下:

本帖隐藏的内容

  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. #  #############################################
复制代码



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

FT_KplotI(R).jpg


FT_KplotII(R).jpg


试验数据: data.zip (94.34 KB) 本附件包括:
  • HS300.xls



而Matlab的K线作图就大家很熟悉
我模仿faruto做了个K线图的极其简单版本
代码如下:

本帖隐藏的内容

  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. %%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
复制代码


举例如下:
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))

FT_KplotII(Matlab).jpg


FT_KplotI(Matlab).jpg


二维码

扫码加我 拉你入群

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

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

关键词:fantuanxiaot MATLAB matla atlab Fan library 程序 网上

已有 6 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
kongqingbao280 + 20 对论坛有贡献
静水深流 + 40 精彩帖子
chengzhifu2013 + 60 + 60 + 5 + 5 + 5 精彩帖子
离歌レ笑 + 50 + 3 + 3 精彩帖子
xujingtang + 60 + 1 + 2 精彩帖子
zbin7451f + 100 + 5 + 5 + 5 对论坛有贡献

总评分: 经验 + 280  论坛币 + 110  学术水平 + 14  热心指数 + 12  信用等级 + 13   查看全部评分

本帖被以下文库推荐

auirzxp 学生认证  发表于 2015-5-7 02:05:09 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

1

使用道具

auirzxp 学生认证  发表于 2015-5-7 02:07:23 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

2

使用道具

auirzxp 学生认证  发表于 2015-5-7 02:09:14 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

3

使用道具

auirzxp 学生认证  发表于 2015-5-7 02:10:02 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

4

使用道具

auirzxp 学生认证  发表于 2015-5-7 02:10:58 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

5

使用道具

duyang76 发表于 2015-5-7 02:28:31 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

好东西,顶!

使用道具

zbin7451f 发表于 2015-5-7 05:08:43 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

楼主是优秀版主,为论坛贡献多多,却仍然能保持谦和,赞一个!
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
fantuanxiaot + 40 + 20 + 2 + 2 + 2 谢谢老师光顾哈

总评分: 经验 + 40  论坛币 + 20  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

sunyiping 发表于 2015-5-7 06:04:51 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

学习学习。

使用道具

14HBjpttxs 发表于 2015-5-7 06:24:28 来自手机 |显示全部楼层 |坛友微信交流群

回帖奖励 +3

fantuanxiaot 发表于 2015-5-7 01:46
很多人希望在网上搜索用R语言做K线图,苦于没有程序
本人做了一个用R语言的K线图,希望大家喜欢,注意横轴 ...
楼主大赞

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-16 22:28