量化投资数据篇(2)

发布于: 雪球转发:0回复:0喜欢:6
1、 获取通达信软件的股票数据
通达信软件有比较简单的历史复权数据获取方法,就是通过软件直接导出,据我所知,这是最简单且可靠性程度也较高的数据获取方式。但此处的重点不是介绍如何通过简单按键方式获取批量复权的股票数据,而是重点介绍如何获取通达信行业板块数据。
一般的股票投资者都知道,通达信软件是一般投资者看盘的必备软件之一,特别是对于分行业板块,概念板块行情,虽然其编制比较简单,但具有完备且独有的板块行情,因此具有十分重要的参考价值(顺便一提,方正证券的泉友通软件,基本上完全借鉴了通达信软件模式)。但是,通达信行业板块行情数据无法直接导出成txt等常见的板式,而只能是day格式,因此需要通过特别的手段,对day格式进行处理。
因此重要介绍通过通达信获取行业行情数据,并利用R语言转换成常见文档格式(csv或txt)的方法,主要分以下步骤:
(1)首先找到行业代码文件:tdx\T0002\hq_cache\ tdxzs.cfg,用记事本的方式打开,具体结果如下所示:


可以看出,这个文件其实包括了通达信软件板块指数模块中的行业板块、概念板块、风格和地区板块等所有的板块代码。如需具体了解如黑龙江后面880201|3||1|0|1等几个数据的含义,可进一步参考:网页链接。此处从略。
(2)通过盘后数据下载,选择相应的起止时间点(如2016年8月5日),下载所有沪深品种的日线数据。其对应的下载数据屏蔽截图如下所示:


则对应时间段的所有股票数据和行业行情数据都保存在:
'D://Program Files//new_tdx//vipdoc//sh//lday//&# 39;文件夹下,其部分结果截图为:


(3)把day格式数据转换为常见文档格式。.day格式的数据如果用常见的记事本打开,则结果显示为乱码,如果需要了解其里面的具体内容,其实可以用Binary Viewer软件打开,并选择不同的进制格式进行查看,看其结果与真实数据一致。R语言中,可以利用hexView工具包,对day数据进行简单处理,就可以得到转换成txt或csv等格式的行业板块等数据,并保存至当地文件夹。其R语言的代码如下所示:
## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 
#------------------------transform tdx industry data--------------------------
# 1 transform tdx .day data into txt/csv data.
#2 using package hexView.

## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## 
library(hexView)
tdx.industry<-read.csv('E://OneDrive//index//tdx.industry.txt&# 39;,header=F,sep='|&# 39;)
tdx.code<-tdx.industry[,2]
for(i in 1:length(tdx.code)){
  file.dir<-paste0('D://Program Files//new_tdx//vipdoc//sh//lday//&# 39;,'sh&# 39;,tdx.code[i],'.day&# 39;)
  dayfile<-readRaw(file.dir,machine='hex&# 39;,human='int&# 39;,size=switch('int&# 39;,int=4),endian='little&# 39;)
  dayfile<-blockValue(dayfile)
  dayfile<-matrix(dayfile,byrow=T,ncol=8)
  dayfile<-dayfile[,c(1:5,7)]
  colnames(dayfile)<-c('Time&# 39;,'Open&# 39;,'High&# 39;,'Low&# 39;,'Close&# 39;,'Volume&# 39;)
  turnover<-readRaw(file.dir,machine='hex&# 39;,human='real&# 39;,
                  size=switch('real&# 39;,real=4),endian='little&# 39;)
  turnover<-blockValue(turnover)
  turnover<-matrix(turnover,byrow=T,ncol=8)
  turnover<-turnover[,6]
  prices<-cbind(dayfile,turnover)
  prices[,2:5]<-prices[,2:5]/100
  save.dir<-paste0('E://datasets//composite index//&# 39;,tdx.code[i],'.txt&# 39;)
  write.csv(prices,file=save.dir,row.names=F)
}
同样也可以利用以上方法对.day格式的股票数据转换成csv/txt格式的股票数据,但这种方式由于可以直接导出,所以多此一举了。
循环处理后,得到的结果如下所示:


当然,需要指出的是,行业板块行情数据获取渠道还有另外两种方式。
一是有中证系数指数、上证系列指数、深证系列指数等。但这种方式有不足之处,具体而言,上证系列和深证系列的行业指数只针对各自的市场编制的指数,并不针对国内沪深所有市场;中证指数系列的行业指数能反映沪深A股市场中不同行业公司股票的整体表现,如300能源、300材料和300工业等,但分类并不全面,无法反映沪深股市所有各个行业的整体表现,且分类标准并不一致,如有300能源,500能源,1000能源,使行业行情无法统一进行对比,进一步行情数据的时间长度不一。所以一般情况下,投资者并不喜欢用这类行情数据。
二是新浪网页也有对应的行业板块数据。不过由于鄙人不知道行情数据对应的网址,所以就无法获取其行业板块、概念板块等指数走势数据(如有谁清楚,可告知!)。