前文股票历史交易数据是未复权的,在此使用WIND数据库获取复权后价格
安装Rstudio: https://www.rstudio.com/products/rstudio/download/
安装WIND客户端: WAPI.PE.exe
用户名:略 密码:略
WindR 读取数据通过下面7 个函数实现的。
w.wsd 读取历史序列数据,包括日间的行情数据,基本面数据以及技术数据指标。
w.wss 读取股票、债券、商品等的基本面静态数据。
w.wst 盘口买卖十档快照数据和分时成交数据。
w.wsi 读取分钟级别历史及当天行情数据。
w.wsq 读取证券实时行情数据及技术指标。
w.wset 读取板块成份、指数成份权重等数据。
w.wpf 获取资产管理、组合管理相关信息。
w.tdays 返回区间内的日期序列
w.tdaysoffset 返回某个偏移值对应的日期
w.tdayscount 返回某个区间内日期数量
############################################################################################
###################### 历史交易数据 #############################################
############################################################################################
create table stock_info_wind_sz
(stock_id varchar(10) -- 股票代码
,DATETIME date -- 日期
,PRE_CLOSE decimal(8,2) -- 前收盘价
,OPEN decimal(8,2) -- 开盘价
,HIGH decimal(8,2) -- 最高价
,LOW decimal(8,2) -- 最低价
,CLOSE decimal(8,2) -- 收盘价
,VOLUME decimal(18,2) -- 成交量
,AMT decimal(18,2) -- 成交额
,DEALNUM decimal(18,2) -- 成交笔数
,CHG decimal(8,2) -- 涨跌
,SWING decimal(8,2) -- 振幅
,TURN decimal(8,2) -- 换手率
,REL_IPO_PCT_CHG decimal(8,2) -- 相对发行价涨跌幅
,CLOSE_SZ decimal(8,2) -- 深市收盘指数
,RELATE_VAL decimal(8,2) -- 深市收盘指数
,RPS decimal(8,4) -- 欧奈尔股价相对强度RPS=股价/大盘指数×1000
)
ALTER TABLE stock_info_wind_sz ADD INDEX stock_info_wind_sz_idx (DATETIME);
############### 单次加载交易数据 ##################
library(RMySQL) # 建立数据库连接
conn <- dbConnect(MySQL(),dbname = "gushi",username = "root") # 启动非严格模式
dbSendQuery(conn, "SET @@sql_mode=ANSI;") # win7环境下如果汉字乱码,就运行这条命令
dbSendQuery(conn, "SET NAMES GBK") # 将文件中的数据导入数据库可以使用下面的R命令:
w_wsd_data<-w.wsd("002558.SZ","pre_close,open,high,low,close,volume,amt,dealnum,chg,swing,turn,rel_ipo_pct_chg","ED-3M","2011-04-28","Fill=Previous;PriceAdj=F")
data_df1<-cbind(w_wsd_data$Code,w_wsd_data$Data)
names(data_df1)[1]='stock_id'
dbWriteTable(conn,"stock_info_wind_sz",data_df1,append=T,row.names=F)
#dbSendQuery(conn, sql)
dbDisconnect(conn)
############### 循环加载交易数据 ##################
library(RCurl)
library(RMySQL) # 载入RMySQL包
library(WindR)
w.start()
end <- "2017-03-08"
table_name <- "stock_info_wind_sz"
flag <- ".SZ"
security <- readLines("E:/.../数据源/深市股票上市日.txt")
code <- vector(length = length(security))
listingdate <- vector(length = length(security))
security.tab <- data.frame(code, listingdate, stringsAsFactors=FALSE)
for (i in 1 : length(security))
{ security.tab[i,] = do.call(cbind,(strsplit(security[i],"\t"))) }
for (i in 1 : length(security))
{
code <- paste(security.tab$code[i],flag,sep="")
start <- security.tab$listingdate[i]
if (nchar(start)!=8){
cat(i,"\t---",code,"\t--- cannot find this stock!","\n")
}
else { start <- paste(substr(start,1,4),substr(start,5,6),substr(start,7,8),sep="-")
cat(i,"\t---",code,"\t---",start,"\n")
conn <- dbConnect(MySQL(),dbname = "gushi",username = "root") #建立数据库连接
dbSendQuery(conn, "SET @@sql_mode=ANSI;") # 启动非严格模式
dbSendQuery(conn, "SET NAMES GBK") # win7环境下如果汉字乱码,就运行这条命令
w_wsd_data<-w.wsd(code,"pre_close,open,high,low,close,volume,amt,dealnum,chg,swing,turn,rel_ipo_pct_chg",start,end,"Fill=Previous;PriceAdj=F")
data_df1<-cbind(w_wsd_data$Code,w_wsd_data$Data)
names(data_df1)[1]='stock_id'
dbWriteTable(conn,table_name,data_df1,append=T,row.names=F)
dbDisconnect(conn)
}
}