通达信各周期数据格式(day、lc5、lc1)详解

通达信各周期数据格式(day、lc5、lc1)详解

通达信各周期数据格式(day、lc5、lc1)详解

下载安装通达信软件后,打开“系统”菜单,找到“盘后数据下载”选型,可下载日线、5分钟、1分钟历史数据。

如:日线数据下载后,存放位置在安装目录\vipdoc\sh\lday下(上证数据)和安装目录\vipdoc\sz\lday下(深证数据),每个股票对应一个文件。通达信的日线数据格式如下:每32个字节为一天数据每4个字节为一个字段,每个字段内低字节在前。

(一)通达信日线数据格式

00 ~ 03 字节年月日,整型;

04 ~ 07 字节开盘价*100,整型;

08 ~ 11 字节最高价*100, 整型;

12 ~ 15 字节最低价*100, 整型;

16 ~ 19 字节收盘价*100, 整型;

20 ~ 23 字节成交额(元),float型;

24 ~ 27 字节成交量(股),整型;

28 ~ 31 字节(保留)

(二) 通达信5分钟、1分钟数据格式

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

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

04 ~ 07 字节开盘价*100,整型

08 ~ 11 字节最高价*100,整型

12 ~ 15 字节最低价*100,整型

16 ~ 19 字节收盘价*100,整型

20 ~ 23 字节成交额*100,float型

24 ~ 27 字节成交量(股),整型

28 ~ 31 字节(保留)

(三)Python实现批量解析通达信day文件,导出至CSV

import os

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+')

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,reservation

if not stock_date:

break

# 4字节如20091229

stock_date = struct.unpack("l", stock_date)

#开盘价*100

stock_open = struct.unpack("l", stock_open)

#最高价*100

stock_high = struct.unpack("l", stock_high)

#最低价*100

stock_low= struct.unpack("l", stock_low)

#收盘价*100

stock_close = struct.unpack("l", stock_close)

#成交额

stock_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])

相关推荐

逆战开服几点:全新资料片开启,精彩活动等你来
在哪个应用商店能下载365

逆战开服几点:全新资料片开启,精彩活动等你来

📅 07-13 👁️ 1847
特斯拉家庭充电桩wifi怎么用?特斯拉超充wifi怎么连接
在哪个应用商店能下载365

特斯拉家庭充电桩wifi怎么用?特斯拉超充wifi怎么连接

📅 07-13 👁️ 1878
逆战开服几点:全新资料片开启,精彩活动等你来
在哪个应用商店能下载365

逆战开服几点:全新资料片开启,精彩活动等你来

📅 07-13 👁️ 1847
十大军事新闻网站
365bet中文官网

十大军事新闻网站

📅 07-10 👁️ 261