Python读取通达信数据

一、介绍

python获取股票数据的方法很多,其中Tushare 财经数据接口包很好用,当然,也可以通过通达信本地的数据获取,这样更为方便。

日线数据存在这路径下D:\通达信\vipdoc\sh\lday(我的通达信安装目录是D盘)

接着我们需要的就是解析这些数据,在分别存为csv格式的数据就行了,这样我们可以方便的用pandas或其他方法读取和分析。

通达信的日线数据格式如下:

每32个字节为一天数据每4个字节为一个字段,每个字段内低字节在前00~ 03字节:年月日,整型04 ~ 07字节:开盘价*100,整型08 ~ 11字节:最高价*100,整型12 ~ 15字节:最低价*100,整型16 ~ 19字节:收盘价*100,整型20 ~ 23字节:成交额(元),float型24~ 27字节:成交量(股),整型28~ 31字节:(保留)

打开一个.day的文件,发现是乱码,以二进制格式存储,那么我们只需按照上面存的字节数解析下就可以了。

先读取一天的数据

>>> f =open("D:/通达信/vipdoc/sh/lday/sh000001.day","rb") >>> f.read(32)b"\xa2\xde2\x01\x14\x9b\x03\x00\x0f\x9d\x03\x00\x8d\x91\x03\x00\xef\x93\x03\x00\xcb\xbc\x14Q\x9a\xfb|\x02-\x01Z\x02"

这应该就是一天的数据了,我们对这个数据进行解析,这里需要用到struct模块中的unpack 方法

>>>import struct >>> f =open("D:/通达信/vipdoc/sh/lday/sh000001.day","rb") >>> li =f.read(32) >>> data =struct.unpack("lllllfll", li)>>> data (20111010,236308, 236815, 233869, 234479, 39926411264.0, 41745306, 39452973)#分别为日期,开盘,最高,最低,收盘,成交额,成交量,保留值

unpack用法:前一个参数是格式,"lllllfii"就是一个浮点数格式(f,这里对应日线数据中的成交额是float格式)和其他整形格式(i,这里对应日线数据中的其他数据是int格式)

那么剩下的问题不大了

二、完整代码

在 sh目录下新建了个pythondata文件夹,注意文件路径分隔符是/

import struct import datetime def stock_csv(filepath,name): data = [] with open(filepath, "rb") as f: file_object_path ="D:/通达信/vipdoc/sh/pythondata/"+ name +".csv" file_object = open(file_object_path, "w+") whileTrue: stock_date = f.read(4) stock_open = f.read(4) stock_high =f.read(4) stock_low= f.read(4) stock_close = f.read(4) stock_amount= f.read(4) stock_vol = f.read(4) stock_reservation = f.read(4) #date,open,high,low,close,amount,vol,reservation if not stock_date:break stock_date = struct.unpack("l", stock_date) #4字节如20091229 stock_open = struct.unpack("l",stock_open)#开盘价*100stock_high = struct.unpack("l", stock_high)#最高价*100stock_low= struct.unpack("l", stock_low)#最低价*100stock_close = struct.unpack("l", stock_close)#收盘价*100stock_amount = struct.unpack("f", stock_amount)#成交额stock_vol = struct.unpack("l", stock_vol)#成交量stock_reservation = struct.unpack("l", stock_reservation)#保留值date_format =datetime.datetime.strptime(str(stock_date[0]),"%Y%M%d")#格式化日期list=date_format.strftime("%Y-%M-%d")+","+str(stock_open[0]/100)+","+str(stock_high[0]/100.0)+","+str(stock_low[0]/100.0)+","+str(stock_close[0]/100.0)+","+str(stock_vol[0])+"\r\n"file_object.writelines(list) file_object.close()stock_csv("D:/通达信/vipdoc/sh/lday/sh000001.day","1")

运行下,打开1.CSV 文件

OK

三、批量解析

import os import struct import datetime defstock_csv(filepath, name): data = [] with open(filepath, "rb") asf: file_object_path ="D:/通达信/vipdoc/sh/pythondata/"+ name +".csv" file_object = open(file_object_path, "w+") whileTrue: stock_date = f.read(4) stock_open = f.read(4) stock_high =f.read(4) stock_low= f.read(4) stock_close = f.read(4) stock_amount= f.read(4) stock_vol = f.read(4) stock_reservation = f.read(4) #date,open,high,low,close,amount,vol,reservation if not stock_date:break stock_date = struct.unpack("l", stock_date) #4字节如20091229 stock_open = struct.unpack("l",stock_open)#开盘价*100stock_high = struct.unpack("l", stock_high)#最高价*100stock_low= struct.unpack("l", stock_low)#最低价*100stock_close = struct.unpack("l", stock_close)#收盘价*100stock_amount = struct.unpack("f", stock_amount)#成交额stock_vol = struct.unpack("l", stock_vol)#成交量stock_reservation = struct.unpack("l", stock_reservation)#保留值date_format =datetime.datetime.strptime(str(stock_date[0]),"%Y%M%d")#格式化日期list=date_format.strftime("%Y-%M-%d")+","+str(stock_open[0]/100)+","+str(stock_high[0]/100.0)+","+str(stock_low[0]/100.0)+","+str(stock_close[0]/100.0)+","+str(stock_vol[0])+"\r\n"file_object.writelines(list) file_object.close() path ="D:/通达信/vipdoc/sh/lday/"listfile =os.listdir("D:/通达信/vipdoc/sh/lday/")for i in listfile: stock_csv(path+i, i[:-4])

运行下

通达信行情数据获取--python_Python读取通达信数据相关推荐

  1. 通达信行情数据获取--python

    通达信行情数据获取方法,其中可以通过通达信每天下载导自身文件获取(通过c或者c++写一个接口就可以了),但是每天需要手动同步数据.下面介绍一个比较好网上接口.需要到"Tushare金融大数据 ...

  2. 通达信行情数据获取--python_利用 Python 获取余额宝历史收益数据

    最近想做一个关于用一些指数基金与余额宝组成的简单 风险-无风险 投资组合的实验计算,发现通达信之类的行情软件并没有提供完整的余额宝收益信息,如通达信仅有年化收益率的数据,并没有万份收益的数据.因此考虑 ...

  3. 自动化软件测试 - 利用短信转发器结合Selenium读取短信验证码

        上一篇博客介绍了怎样通过 Android Studio 开发 App 自动拦截读取短信验证码,今天将介绍另外一种非开发App 的方法去实现,通过利用第三方工具短信转发器 结合 Selenium ...

  4. 通达信行情数据获取--python_股票量化交易-获取数据的两种方法

    量化交易第一步就是获取数据,介绍两种免费的方法 1.通过pytdx获取本地通达信数据 2.通过requests爬虫爬取腾讯财经数据 通过python第三方库pytdx获取 这是个很强大的第三方库,原理 ...

  5. 通达信行情数据获取--python_[python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上...

    1 #coding=utf-8 2 3 #读取'[paint]'开头的csv文件 4 #copyright @ WangXinsheng 5 #http://www.cnblogs.com/wangx ...

  6. 从QQ同步助手上导出的短信文件*.csv中读取短信,并运用在Qt程序中

    登陆"QQ同步助手"的网页,我们可以将里面的短信信息批量导出到本地存为*.csv文件.该文件可以用Excel打开,看到里面的短信信息.         在用Qt编写一个小程序的时候 ...

  7. grib1文件解析 python_python读取grib格式数据

    python 读取grib/grib2格式数据 一般利用NCL(NCAR Command Language)读取.利用Python语言的pygrib库也可以读取grib/grib2格式数据 grib/ ...

  8. python通信达数据_Python读取通达信数据

    Python读取通达信数据 一.介绍 python获取股票数据的方法很多,其中Tushare 财经数据接口包很好用,当然,也可以通过通达信本地的数据获取,这样更为方便. 日线数据存在这路径下 D:\通 ...

  9. java读取通达信day_Go读取通达信历史日线数据

    原标题:Go读取通达信历史日线数据 突然间想使用Go从通达信读取A股历史行情信息,其实也蛮简单的.从通达信获取数据难点在于分析数据结构,而读取则各类语言分分钟搞定. 准备工作 1、下载安装通达信,通达 ...

最新文章

  1. oracle 分组排序 update,oracle分组排序
  2. 菌群与疾病的关系探讨之一:先有鸡还是先有蛋?
  3. html 右边是iframe 左右结构_HTML布局之左右结构,左边固定右边跟据父元素自适应...
  4. 使用 ServiceStack 构建跨平台 Web 服务
  5. python字符串怎么表示_python中字符串的几种表达方式(用什么方式表示字符串)...
  6. 转载-聊一聊深度学习的activation function
  7. 区别vue的this和JTopo中的this
  8. bundle 安装_centos6.7安装zabbix4
  9. Linux服务器安全简明指南
  10. 如何实现 java 接口中的部分方法
  11. Linux 进程内存掉电保存,Shell脚本可在Linux断电时停止应用程序
  12. WPS-JS宏开发-基础知识-01-初识
  13. SiteSucker Mac版(整站下载工具)中文版
  14. 2018/7/31-zznu-oj-问题 F: 手机密码--【裸dfs+for循环即可!——据说三个小时内只有两个人读完了题意并轻松AC了】...
  15. 【雅思】【绿宝书错词本】List13~24
  16. 使用IDEA写程序时,运行忽然报错,提示:在类*** 中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)
  17. 三菱PLC伺服XZ轴定位程序 程序都有注释、注释全面,用的三菱FX3U系列plc
  18. Laplace算子和Laplacian矩陣
  19. Day.js格式化时间
  20. Android Studio 调试技巧大全

热门文章

  1. Java 常用HTTP请求工具类HttpUtils
  2. Unity开发_通用材质
  3. 编辑部的故事:后厂村有没有生活?
  4. addEventListener和attachEvent的区别
  5. RH850进不去烧写
  6. unity中UI连线
  7. 鸢尾花数据集基本用法
  8. VGG16、VGG19网络架构及模型训练 tricks :训练技巧、测试技巧
  9. python画星环_TranswarpDataHubTDH企业级一站式大数据综合平台白皮书-星环.PDF
  10. CFT-ctf.show-信息收集闯关