通达信LC1文件结构解析指南

文件结构解析

  1. 文件头(32字节)

    • 前4字节:文件标识(固定为0x0E
    • 后续28字节:保留字段(通常为0x00
  2. K线记录(每笔40字节)

    • 时间戳(4字节):小端序整型,需转换为时间格式
    • 开盘价(4字节):小端序浮点数
    • 最高价(4字节):小端序浮点数
    • 最低价(4字节):小端序浮点数
    • 收盘价(4字节):小端序浮点数
    • 成交量(4字节):小端序整型
    • 成交额(8字节):小端序双精度浮点数
    • 预留字段(8字节)

Python解析代码

python 复制代码
import struct
import datetime

def read_lc1_file(file_path):
    data = []
    with open(file_path, 'rb') as f:
        # 跳过文件头
        f.read(32)
        
        # 逐条读取K线记录
        while True:
            chunk = f.read(40)
            if not chunk:
                break
            
            # 解析二进制数据
            timestamp, open_price, high, low, close, volume, turnover, _ = struct.unpack('<Iffffd8x', chunk)
            
            # 转换时间戳(通达信时间戳为自1990-01-01的秒数)
            dt = datetime.datetime(1990, 1, 1) + datetime.timedelta(seconds=timestamp)
            
            data.append({
                'datetime': dt,
                'open': open_price,
                'high': high,
                'low': low,
                'close': close,
                'volume': int(volume),
                'turnover': turnover
            })
    return data

# 示例调用
kline_data = read_lc1_file('path/to/data.lc1')

关键说明

  1. 字节序 :所有字段均为小端序<符号在struct.unpack中指定)
  2. 时间戳转换: $$ \text{时间} = \text{1990-01-01} + \text{时间戳(秒)} $$
  3. 精度处理:成交量需转为整数(原始数据为浮点存储的整数)

输出数据结构

返回结果为字典列表,每条记录包含:

python 复制代码
{
    'datetime': datetime.datetime(2023, 5, 17, 10, 30),  # 时间
    'open': 15.23,  # 开盘价
    'high': 15.45,  # 最高价
    'low': 15.20,   # 最低价
    'close': 15.40, # 收盘价
    'volume': 51200, # 成交量(手)
    'turnover': 785920.0  # 成交额(元)
}

注意事项

  • 不同版本的通达信可能存在细微格式差异,建议先验证文件头标识。
  • 成交额字段(turnover)为双精度浮点数,可精确表示较大数值。
相关推荐
1941s18 小时前
Google Agent Development Kit (ADK) 指南 第六章:记忆与状态管理
人工智能·python·agent·adk·google agent
no_work18 小时前
万能图像处理小助手1.1_傅里叶变化_椒盐噪声_直方图均衡等图片批量处理
图像处理·人工智能·python
2401_8846621018 小时前
CSDN年度技术趋势预测文章大纲
python
叶子20242218 小时前
在压力面前保持本色
python
wefly201718 小时前
告别本地环境!m3u8live.cn一键实现 M3U8 链接预览与调试
前端·后端·python·音视频·m3u8·前端开发工具
yaoxin52112318 小时前
358. Java IO API - 使用 relativize() 创建路径之间的相对关系
java·linux·python
biubiuibiu18 小时前
探秘新飞机:从包装到起飞的全程指南
数据库·python
racerun18 小时前
跳转链接批量解析工具 python
开发语言·python
q_354888515319 小时前
计算机毕业设计:Python当当网图书大数据分析平台 Django框架 爬虫 Pandas 可视化 大数据 大模型 书籍(建议收藏)✅
大数据·爬虫·python·机器学习·数据分析·django·课程设计
知智前沿19 小时前
什么是 RAG?通俗易懂讲解 + 核心流程梳理
人工智能·python