该软件的数据存在.\Data\SHSE\min1等目录下,SHSE等表示交易所。
RawToSingle将raw格式的数据读取为单精度数据(这个工作最好用底层函数来做,如matlab中就有这方面比较全套的内置函数,R的基础功能暂时无法全面支持这方面的功能)
ReadWenHua就是把文件读取出来处理下。(因为期货中涉及到交割价——最后一列的AveragePrice,这里特意使用set这个变量名,不喜欢的可以自己改成AvePrc之类的吧。)
总体上来说,运行数据有点慢,不过聊胜于无,需要动态演示结果的时候,可以从这些地方读取下数据。
<br />
RawToSingle <- function(x){<br />
x <- rawToBits(x)<br />
x <- rev(as.integer(x))<br />
flag <- ifelse(x[1]==0, 1, -1)<br />
ind <- sum(x[2:9] * (2^(7:0))) - 127<br />
end <- 1 + sum(x[10:32] * (0.5^(1:23)))<br />
return(flag*end*(2^(ind)))<br />
}</p>
<p>ReadWenHua <- function(fl){<br />
dat <- readBin(fl, what='raw', n=10^7)<br />
dat <- dat[-c(1:4)]<br />
len <- length(dat) %/% 36 - 1<br />
dat <- dat[1:(36*len)]<br />
mat <- matrix(dat, byrow=T, ncol=36)<br />
tm <- apply(mat[, 1:4], 1, function(x) sum(as.integer(x) * 256^(0:3)))<br />
tm <- as.POSIXlt(tm, origin="1970-01-01 08:00:00")<br />
opn <- apply(mat[, 5:8], 1, RawToSingle)<br />
cls <- apply(mat[, 9:12], 1, RawToSingle)<br />
hgh <- apply(mat[, 13:16], 1, RawToSingle)<br />
low <- apply(mat[, 17:20], 1, RawToSingle)<br />
vol <- apply(mat[, 21:24], 1, RawToSingle)<br />
pos <- apply(mat[, 25:28], 1, RawToSingle)<br />
set <- apply(mat[, 29:32], 1, RawToSingle)<br />
return(data.frame(tm, opn, cls, hgh, low, vol, pos, set))<br />
}<br />
</p>