用2009版本的同花顺的历史数据,使用前需要利用同花顺中的数据管理功能将数据下载到本地。
然后使用如下函数:
<br />
THXDaily.Stk <- function(fl, path='THXpath/history/shase/day'){<br />
dat <- readBin(file.path(path, fl), 'raw', n=100000000)<br />
mat <- matrix(as.integer(dat[-c(1:72)]), byrow=T, ncol=56)<br />
mat <- mat[, 1:28, drop=FALSE]<br />
.tran <- function(x){<br />
flag <- x[4]<br />
flag <- flag %/% 16<br />
x[4] <- x[4] - flag*16<br />
if(flag > 7){<br />
flag <- (8 - flag)<br />
}<br />
return((10^flag) * sum(x * 256^(0:3)))<br />
}<br />
dt <- as.Date(as.character(apply(mat[, 1:4, drop=FALSE], 1, function(x) sum(x * 256^(0:3)))), '%Y%m%d')<br />
op <- apply(mat[, 5:7, drop=FALSE], 1, function(x) sum(x * 256^(0:2)))/1000<br />
hi <- apply(mat[, 9:11, drop=FALSE], 1, function(x) sum(x * 256^(0:2)))/1000<br />
lo <- apply(mat[, 13:15, drop=FALSE], 1, function(x) sum(x * 256^(0:2)))/1000<br />
cl <- apply(mat[, 17:19, drop=FALSE], 1, function(x) sum(x * 256^(0:2)))/1000<br />
am <- apply(mat[, 21:24, drop=FALSE], 1, .tran)<br />
vo <- apply(mat[, 25:28, drop=FALSE], 1, .tran)<br />
return(data.frame(dt, op, hi, lo, cl, am, vo))<br />
}<br />
若涉嫌版权问题,请邮件给我,删除该帖。
其他格式文件,均可用该函数的思路获得;不过同花顺版本变化会影响其中具体参数的调整;同时大家可以看看是否有更好的算法来提取数据。
其他看盘软件的数据,均可通过类似办法获得,该函数算抛砖引玉吧。
</p>