使用Python解析通达信本地lday数据结构

通达信软件中的vipdoc是一个存储股票行情数据的文件夹。在通达信软件的安装目录下,可以找到一个名为vipdoc的文件夹,里面存放着各个股票的分时、日线、周线、月线等行情数据文件。这些数据文件可以用于自定义分析和回测股票的走势和交易策略,前提要把加密的数据解析出来,才能调用,解析方法如下使用Python解析。

数据存放的位置,bj代表北交所,sh代表上海,sz代表深圳的股票

在这里插入图片描述
看日线就在通达信lday文件夹目录下去找,E:\zd_cjzq\vipdoc\sh\lday
在这里插入图片描述
#01.通达信日线*.day文件的结构

文件名即股票代码,每32个字节为一个数据,其中每4个字节为一个字段,每个字段内低字节在前。00 ~ 03 字节:年月日, 整型04 ~ 07 字节:开盘价*1000, 整型08 ~ 11 字节:最高价*1000,  整型12 ~ 15 字节:最低价*1000,  整型16 ~ 19 字节:收盘价*1000,  整型20 ~ 23 字节:成交额(元),float型24 ~ 27 字节:成交量(手),整型28 ~ 31 字节:上日收盘*1000, 整型

#02.通达信5分钟线*.5数据结构:minline 文件夹:包含了股票和期货的分钟线数据文件,以 .lc1 扩展名结尾。每32个字节为一个5分钟数据,每字段内低字节在前。

00 ~ 01 字节:日期,整型,设其值为num,则日期计算方法为:year=floor(num/2048)+2004;month=floor(mod(num,2048)/100);day=mod(mod(num,2048),100);

02 ~ 03 字节:从0点开始至目前的分钟数,整型

04 ~ 07 字节:开盘价(分),整型08 ~ 11 字节:最高价(分),整型12 ~ 15 字节:最低价(分),整型16 ~ 19 字节:收盘价(分),整型20 ~ 23 字节:成交额(元),float型24 ~ 27 字节:成交量(股)28 ~ 31 字节:保留,一般都是0

以下是解析贵州茅台后的图片
在这里插入图片描述
600519csv数据文件在这里插入图片描述

import struct
import datetime
import os
# 1.新建一个文件夹,用于存放解析好的股票数据
os.makedirs('股票数据',exist_ok=True)#区分沪深,北交所股票,找到对应股票的文件位置
def hs_stock(code):if code[0] == "6":str_code='sh/lday/sh' + codeif code[0] == "3":str_code='sz/lday/sz'  + codeif code[0] == "8" or code[0] == "4":str_code='bj/lday/bj' + codereturn str_code#2.解析通达信日线数据
#F:\new_tdx\
def stock_csv(filepath,code,name):data = []filepath=filepath+hs_stock(code)+'.day'with open(filepath, 'rb') as f:file_object_path = '股票数据/' + name +'.csv'file_object = open(file_object_path, 'w+')while True: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,reservationif not stock_date:breakstock_date = struct.unpack("l", stock_date)     # 4字节 如20230812stock_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)+","+str(stock_low[0]/100)+","+str(stock_close[0]/100)+","+str(stock_vol[0]/100)+"\r"file_object.writelines(list)file_object.close()print(code+'股票数据解析完成!!')stock_csv('E:/zd_cjzq/vipdoc/','600519', '贵州茅台')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/66524.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023最新Windows编译ffmpeg详细教程,附msys2详细安装配置教程

安装MSYS2 msys2是一款跨平台编译套件,它模拟linux编译环境,支持整合mingw32和mingw64,能很方便的在windows上对一些开源的linux工程进行编译运行。 类似的跨平台编译套件有:msys,cygwin,mingw 优势&…

【视频】使用OBS将MP4推流至腾讯云直播

1、下载OBS OBS官网:https://obsproject.com/ OBS支持Win、Mac、Linux,如果下载速度很慢,建议使用迅雷下载 2、OBS推流设置 2.1 添加场景 默认会有一个“场景”,如果想继续添加可以点击“+”按钮 2.2 添加媒体源 1)点击“来源”窗口中“+”按钮 2)支持的媒体源如…

培训报名小程序-订阅消息发送

目录 1 创建API2 获取模板参数3 编写自定义代码4 添加订单编号5 发送消息6 发布预览 我们上一篇讲解了小程序如何获取用户订阅消息授权,用户允许我们发送模板消息后,按照模板的参数要求,我们需要传入我们想要发送消息的内容给模板&#xff0c…

JS逆向系列之某多多 anti_content

文章目录 声明目标网址anti_content参数分析参考js 环境python 调用测试往期逆向文章推荐声明 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请私信我立即删除! 目标网址 aHR0cHM6Ly9tb2JpbGUueWFuZ2tlZHVvL…

MySQL之深入InnoDB存储引擎——redo日志

文章目录 一、为什么需要redo日志二、redo日志的类型1)简单的redo日志类型2)复杂的redo日志类型 三、Mini-Transaction四、redo日志的写入过程五、redo日志文件1、刷盘时机2、redo日志文件组 六、log sequence number1、lsn的引入2、flushed_to_disk_lsn…

STL文件格式详解【3D】

STL(StereoLithography:立体光刻)文件是 3 维表面几何形状的三角形表示。 表面被逻辑地细分或分解为一系列小三角形(面)。 每个面由垂直方向和代表三角形顶点(角)的三个点来描述。 切片算法使用…

[C++] 模板template

讲模板之前呢,我们先来谈谈泛型编程: 泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。 模板分为两类:函数模板与类模板 1、函数模板 1.1 函数模板概念 函数模板代表了一个函数家…

【第二阶段】kotlin的lambda学习

匿名函数lambdm表达式 1.两数相加 fun main() {//匿名函数lambda表达式//两数相加 等价:val addResult:(Int,Int)->String{a,b->"两数相加结果:${ab}"}val addResult{a:Int,b:Int->"两数相加结果${ab}"}println(addResul…

安装docker的报错问题

先关闭安全机制 systemctl stop firewalld.service setenforce 0 安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 设置阿里云镜像云 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装d…

计算机网络:网络通信相关概念入门

目录 一、网络发展背景二、理解网络通信三、理解IP地址1.简述IP地址2.IP地址的版本3.提高地址利用率的技术 四、理解端口1.简述端口2.使用端口的原因 五、理解网络通信协议 一、网络发展背景 网络发展背景: 最初的计算机是单机,那么单机是这样传输数据的…

win10 + VS2022 安装opencv C++

最近需要用到C opencv,看了很多帖子都需要自己编译opencv源码。为避免源码编译,可以使用VS来配置opencv C。下面是主要过程: 目录 1. 从官网下载 opencv - Get Started - OpenCV 2. 点击这个exe文件进行安装 3. 配置环境变量 4. VS中的项…

IC人必看| 模拟IC方向面试常考问题及答案汇总(二)

有不少小伙伴说还想要更多模拟IC方向的面试题目,这不就来了!(文末可领全部面试题目) 1. Bandgap 里有几种反馈?原理是? 正反馈和负反馈。 2. 负反馈种类?负反馈的优点? 种类&am…