存储为3个文件夹:大盘数据、股票数据与概括文件

数据获取来源:股票数据来源于R中的WindR;大盘数据来源于python中的tushare(wind中指数似乎只有中证板块)

设置数据文件夹,代码中只需修改更新截止日期与工作路径,后面创建文件都无需手动操作

文件夹中文件不能随意变动,标红代码部分需要自己修改

股票数据中变量分别为股票代码、股票简称、日期、时间、开高低收(乘10000)、交易量、交易额、转手率(基于自由流通股本)、自由流通股本

初次获取数据

1、大盘指数数据(399001, 399005, 399006, 399300,999999)

## 初始设置
os.chdir("C:/Users/Administrator.USER-20161208UW/Desktop/数据") #修改当前工作目录
start_date = "2009-01-01"
end_date = "2017-12-20"

new_date = end_date.replace("-", "")
## 创建新文件夹
os.mkdir("ts大盘数据")
os.mkdir("ts大盘数据/大盘数据"+new_date)

## 概括信息
stock_info = pd.DataFrame({"stock.code":["399001", "399005", "399006", "399300", "999999"] ,
"stock.name":["深证成指", "中小板指", "创业板指", "沪深300", "上证指数"],
"type":["SZ", "SZ", "SZ", "SZ", "SH"]})
stock_info.to_csv("ts大盘数据/大盘数据"+new_date+"/stock_info.csv", index=False)

# 获取大盘信息
dapanzhishu1 = ["399001", "399005", "399006", "399300", "000001"]
dapanzhishu2 = ["399001", "399005", "399006", "399300", "999999"]
wind_code = ["399001.SZ", "399005SZ", "399006SZ", "399300SZ", "999999SH"]
name = ["深证成指", "中小板指", "创业板指", "沪深300", "上证指数"]
for i in list(range(5)):

df = ts.get_h_data(dapanzhishu1[i], start=start_date, end=end_date, index=True, pause=4)
df.sort_index(inplace=True)
df[["open", "high", "close", "low"]] = df[["open", "high", "close", "low"]]*10000
df["date"] = df.index
df["date"] = df["date"].astype(str).apply(lambda x:x.replace('-', ''))
df.columns = ['open','high', 'close', 'low', 'volumw', 'turover', 'date']
df["name"] = name[i]
df["wind_code"] = wind_code[i]
df["time"] = 151500000
df["turn"] = 0
df["free_turn"] = 0
df = df[["wind_code", "name", "date", "time", "open", "high", 'low', 'close', 'volumw', 'turover', "turn", "free_turn"]]
df.to_csv("ts大盘数据/大盘数据"+new_date+"/"+dapanzhishu2[i]+".csv", index=False)

2、A股股票数据与概括文件

## Rlibrary(WindR)
library(xlsx)
library(data.table)
library(magrittr)
library(tcltk2)
setwd("C:/Users/~~~/Desktop/数据")new.date <- "20171220"
start.date <- "20090101"w.start()
end.date <- paste(substr(new.date, 1, 4), substr(new.date, 5, 6), substr(new.date, 7, 8), sep = "-")
start.date <- paste(substr(start.date, 1, 4), substr(start.date, 5, 6), substr(start.date, 7, 8), sep = "-")
## 摘取当日在市股票代码
stock.code.df <- w.wset('sectorconstituent', paste0("date=", end.date, ";sectorid=a001010100000000"))
if(stock.code.df$ErrorCode == 0){stock.code.sh.sz <- stock.code.df$Data$wind_code
}else{print(paste0("获取数据出错,错误代码", stock.code.df$ErrorCode))
}
new.stock.code <- substr(stock.code.sh.sz, 1, 6)
# str(stock.code.sh.sz)## 创建新的文件夹
dir.create("概括文件")
dir.create("股票数据")
dir.create(paste0("股票数据/股票数据", new.date))## 补全stock.code的开始及截至日期及其他信息CSV文件
general.information <- data.frame(array(dim=c(length(stock.code.sh.sz), 5)))
colnames(general.information) <- c("stock.code", "stock.name", "type", "starttime", "endtime")## 设置进度条
pb <- tkProgressBar("进度", "已完成 %", 0, 100) ## 从WindR获取数据
## 未检查数据是否存在异常日期(大盘中没有的交易日)
w.start()
# i <- 1
for(i in 1:length(stock.code.sh.sz)){wind.data <- w.wsd(stock.code.sh.sz[i], "trade_code, sec_name, open, high, low, close, volume, amt, free_turn,free_float_shares",start.date, end.date, "unit=1;PriceAdj=F")if(wind.data$ErrorCode == 0){wind.df <- data.frame(array(dim=c(nrow(wind.data$Data), 12)))colnames(wind.df) <- c("wind_code", "name", "date", "time", "open", "high", "low", "close", "volumw", "turover", "free_turn", "free_float_shares")wind.df[, 1]    <- wind.data$Codewind.df[, 2]    <- wind.data$Data$SEC_NAMEwind.df[, 3]    <- gsub("-", "", wind.data$Data$DATETIME)wind.df[, 4]    <- 151500000wind.df[, 5:8]  <- wind.data$Data[4:7] * 10000wind.df[, 9:12] <- wind.data$Data[8:11]wind.df <- wind.df[!(is.na(wind.df$open)), ]if(nrow(wind.df) == 0){print(c(i, stock.code[i]))}else{if(any(is.na(wind.df))){print(paste(stock.code.sh.sz[i], "数据出错(数据中仍有NA)"))}else{if(any(wind.df[, 5:8] == 0)){print(paste(stock.code.sh.sz[i], "数据出错(数据中开高低收存在0)"))}else{if(any(table(wind.df$date) > 1)){print(paste(stock.code.sh.sz[i], "数据出错(数据中存在日期相同)"))}else{if(any(wind.df$date != sort(wind.df$date))){print(paste(stock.code.sh.sz[i], "数据出错(数据中日期顺序不对)"))}else{general.information[i, 1] <- substr(stock.code.sh.sz[i], 1, 6)general.information[i, 2] <- wind.df$name[1]general.information[i, 3] <- substr(stock.code.sh.sz[i], 8, 9)general.information[i, 4] <- wind.df[1, 3]general.information[i, 5] <- wind.df[nrow(wind.df), 3]write.csv(wind.df, paste("股票数据/股票数据", new.date, "/", new.stock.code[i], ".csv", sep=""), row.names = FALSE)}}}}}}else{print(paste0(stock.code.sh.sz[i], "股票获取数据出错,错误代码:", wind.data$ErrorCode))break}info <- sprintf("已完成 %d%%", round(i*100/length(stock.code.sh.sz)))setTkProgressBar(pb, i*100/length(stock.code.sh.sz), sprintf("进度 (%s)", info), info)
}## 关闭进度条
close(pb)## 总概括文件中无NA时输出
if(all(!(is.na(general.information)))){write.xlsx(general.information, paste0("概括文件/概括文件", new.date, ".xlsx"), row.names = FALSE)
}else{print("总概况文件中存在NA,需查验")
}

 3、文件格式

(1)一级

(2)二级

(3)三级

转载于:https://www.cnblogs.com/lj0019/p/8093943.html

A股数据day级前复权数据下载与存储相关推荐

  1. oracle取前5条数据,ORACLE查询前五条数据

    以下的文章主要介绍的是如何在Oracle实现 SELECT TOP N的实际操作方法,我们主要是以举例子的方式来引出Oracle实现 SELECT TOP N的具体操作,以下就文章的具体内容的描述,望 ...

  2. java前后端数据交互_前后端数据交互(示例代码)

    function ajax(option) { function objtostring(obj){ if(typeof obj==='object' && !Array.isArra ...

  3. 用AkShare获取沪深京A股分钟级K线数据

    前面已经讲解了如何通过AkShare获取实时K线数据和沪深京A股历史数据.但是在现实做策略回测的过程,经常会用到分钟级数据计算买卖点.下面我们讲讲如何用AkShare获取沪深京A股分钟级K线数据. 一 ...

  4. Python 量化金融必备库 Tushare 财经数据API(二):告诉你如何通过Python SDK 调取股票复权数据

    历史复权数据,分为前复权和后复权数据. 使用Tushare获取股票上市以来所有历史数据,默认为前复权. 如果不设定开始和结束日期,则返回近一年的复权数据,从性能上考虑,推荐设定开始日期和结束日期,而且 ...

  5. 大数据学习总结+JAVA学习总结+大数据面试+java面试+大数据java异常总结

    文章目录 一.java模块面试问题 1.动态代理 2.浏览器禁用Cookie后的Session处理 3.主从复制的流程[重要] 5.redis的数据类型[重要] 6.Junit测试的注解 7.缓存问题 ...

  6. 数据湖+数据中台,金山云大数据平台竞争力如何?

    随着疫情稳定,出行的解禁,正是拉动老客户消费和挖掘潜客的机会,那么银行在数字化时代的营销业务是如何实现的?首先在业务层面需要与各大电商平台.OTA.出行.O2O.线下餐饮.购物中心达成广泛的权益合作: ...

  7. 搭建量化系统|股票数据的除权和复权

    在行情软件中经常会看到除权.复权选项,我们选择不同的选项,软件上股票的价格回相应地转换. 在量化交易中,我们开发了一个交易策略,需要对策略在历史行情数据上进行回测,那么我们该选择除权,还是复权,哪一种 ...

  8. Python进阶量化交易专栏场外篇:股票数据的除权和复权

    在行情软件中经常会看到除权.复权选项,我们选择不同的选项,软件上股票的价格回相应地转换. 在量化交易中,我们开发了一个交易策略,需要对策略在历史行情数据上进行回测,那么我们该选择除权,还是复权,哪一种 ...

  9. 干货 | 万字长文全面解析GraphQL,携程微服务背景下的前后端数据交互方案

    作者简介 古映杰,携程研发高级经理,负责前端框架和基础设施的设计.研发与维护.开源项目react-lite和react-imvc作者. 前言 随着多终端.多平台.多业务形态.多技术选型等各方面的发展, ...

  10. 数据中心级交换机考核方法

    最佳数据中心级交换技术能够帮助企业大幅度提高性能.可用性和简化管理.但是要了解不同供应商产品之间的差别却很有难度.本文将介绍一些可用于区分最佳数据中心级交换机产品的场景和特殊分类,它们能够指导我们确定 ...

最新文章

  1. 一文看透 Redis 分布式锁进化史(解读 + 缺陷分析)
  2. SharePoint 部署解决方案Feature ID冲突
  3. 局域网内访问mysql数据库
  4. 设置UITextField占位符的颜色和字体
  5. /etc/sudoers中的含义
  6. netty java_Netty Java快速指南
  7. linux shell脚本 检查IP地址格式
  8. mysql 延时update_转 MySQL延迟更新索引(delay_key_write)
  9. DataDictionaryTool 一款生成数据库字典工具支持mysql和oracle
  10. php app用户验证失败,无法验证app需要互联网连接以认证 建议更换登陆的AppleID
  11. 31 个惊艳的数据可视化作品,让你感受 数据之美!
  12. 工业互联网时代下橙色云CDS的商机直通车服务
  13. python的交互式是什么,python交互是什么
  14. 反向传播与它的直观理解
  15. 中国经济学家与管理学家的错位
  16. LWN:5.18 合并窗口,第二部分!
  17. 【白皮书分享】2020脱发治疗白皮书.pdf(附下载链接)
  18. 三星电视显示服务器无响应,三星液晶电视死机怎么办 三星液晶电视死机解决方法...
  19. php 单例模式实现
  20. 如何手写一个RPC(面试要知道)

热门文章

  1. flv.js简单使用示例
  2. ARM嵌入式体系结构与接口技术
  3. 随机在数组中抽取两个数据
  4. SecureCRT中文乱码-显示和复制和粘贴乱码解决办法
  5. PM2.5的加重,和建筑工地关系大不大?(附扬尘治理方案)
  6. 汤唯:在街头卖艺的那些日子
  7. /etc/shadow文件介绍
  8. 北京科技大学计算机专业在哪个校区,北京科技大学有几个校区及校区地址
  9. 采样频率和带宽的关系_示波器的采样率及存储深度
  10. Mel中级教程精华篇预告