通达信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)为双精度浮点数,可精确表示较大数值。
相关推荐
梯度下降者19 小时前
零基础入门Python 爬虫
爬虫·python·数据分析·入门指南·webcrawler
“AI国潮设计-小江”21 小时前
【AIGC实战】Python+Stable Diffusion打造“英歌舞财神”IP,解锁“马到成功”等爆款情绪营销文案设计
开发语言·人工智能·python·prompt·aigc
benchmark_cc1 天前
用 Python 拉 A 股全市场实时快照:Notebook 请求、结果校验与易错点
python·数据分析·pandas·量化交易·股票数据·quantdash
伞伞悦读1 天前
【第70期】Adam二阶矩不是方差:偏差校正、动量与AdamW完整实验
python
外收内放1 天前
Python基础语法练习题(73)
java·前端·python
锋行天下1 天前
Langgraph HITL 中断运行,用户输入后输出打字效果
人工智能·python
时早玖沐1 天前
给 AstrBot 写一个天气推送插件:12 次提交、6 个坑
python·开源·ai编程
触底反弹1 天前
🚀 FastAPI 五大重难点深度剖析:从 500 报错到彻底搞懂 Depends、Pydantic 与 SQLAlchemy
python·fastapi
cpolar技术支持1 天前
网关加 gzip,同时开启 chunked,下载回来的包解不开:把两层编码的解压顺序与长度核对做成只读页
python·http·网络编程·socket·内网穿透
小嘉丶学长1 天前
Day14 · 字典与集合
java·开发语言·网络·python·学习·1024程序员节