找回密码
 立即注册
查看: 3633|回复: 0

用R获取郑州商品交易所历史数据 期货数据

[复制链接]
发表于 2013-3-27 14:20:42 | 显示全部楼层 |阅读模式
本帖最后由 moshengren 于 2013-3-27 14:23 编辑

在网上闲逛之时,无意间看此贴,很有用,R在金融业也应用甚广啊。
特来分析,大家交流

本文主要讨论如何用R语言从郑州商品交易所网站上获取期货合约交易数据
郑商所网站提供了查询每日行情的页面,它提供的数据比大商所的要复杂一些,2010年至2013年的网页格式一样,地址也是同样的形式,请看
打开网页可以看到,网页提供了“打印”,“Excel”和“txt”三个选项,只要把地址后面的.html改为.txt就可以得到文本格式的数据,那么就可以逐一下载数据文件,读入数据。
这四年的数据可以这样获取:

  1. <DIV class=blockcode>
  2. <BLOCKQUOTE>
  3. <BLOCKQUOTE>getZceData <- function(dates){
  4.   require(RCurl)
  5.   zceDatabase <- data.frame()
  6.   for (date in dates) {
  7.     str1 <- "http://www.czce.com.cn/portal/exchange/"
  8.     str2 <- "/datadaily/"
  9.     date <- as.character(date)
  10.     year <- substr(date, 1, 4)
  11.     url <- paste(str1, year, str2, date, ".txt", sep = "")
  12.     if (!url.exists(url)) {
  13.       next
  14.     } else {
  15.       colnames <- c("品种月份", "昨结箿", "今开盘", "最高价", "最低价",
  16.         "今收盘", "今结算", "涨跌1", "涨跌2", "成交量", "空盘量",
  17.         "增减量", "成交额", "交割结算价")
  18.       fileName <- paste("zce", date, ".txt", sep = "")

  19.       if (!file.exists(fileName)) {
  20.         download.file(url, fileName, quiet = T)
  21.       }
  22.       zceData <- read.table(fileName, header = F, skip = 1, sep = ",", col.names = colnames)
  23.       zceData <- zceData[(zceData[, 1] != "小计") & (zceData[, 1] != "总计"), ]
  24.       zceData$$$$date <- date
  25.       zceDatabase <- rbind(zceDatabase, zceData)
  26.     }
  27.   }
  28.   return(zceDatabase)
  29. }
复制代码


但是查询2009年及之前的数据返回的是网页形式,那就需要从网页上读取。
看下面几个链接
网页格式很统一,数据在被table标签包裹,并且是在第二个table标签中,XML包的readHTMLTable函数可以读取table标签中的内容,但是当网页中有汉字的时候,汉字会变成乱码,慎用!
不过,本文的情况有点特殊,汉字只出现在table的第一行表头,以及“小计”、“总计”的行,这些行本来就是要去掉的,所以对我们没影响。
下面只给出关键代码:
  1. require(XML)
  2. require(stringr)
  3. url <- "http://www.czce.com.cn/portal/exchange/jyxx/hq/hq20060106.html"
  4. tb <-readHTMLTable(url)[[2]]
  5. tb <- sapply(tb,str_trim)
  6. df <-as.data.frame(apply(tb,2,function(x) iconv(x, from = "gb2312", to = "UTF-8")))
复制代码


再把第一列为NA的行去除就行了。

转自http://yanping.me/cn/blog/2013/02/09/get-zce-data/

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-25 09:52 , Processed in 0.022325 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表