乐于分享
好东西不私藏

通达信临时缓存K线获取方法,附源码

通达信临时缓存K线获取方法,附源码

本次重点介绍通达信的临时日线缓存K线

当我们在浏览个股行情页面时,会相应的在本地安装目录产生一个,命名为市场+code.~~~day的临时缓存文件。

示例

D:\test\new_tdx64\T0002\cache

实际数据示例

文件: sz000036.~~~day大小: 13,454 字节记录数: 420 条日期范围: 2024-08-29 ~ 2026-05-29示例记录:  2024-08-29  开:2.80  高:2.80  低:2.76  收:2.79  成交额:833.09万  2024-08-30  开:2.80  高:2.93  低:2.79  收:2.89  成交额:3284.87万  2024-09-02  开:2.88  高:2.90  低:2.83  收:2.83  成交额:1632.52万  ...  2026-05-29  开:5.34  高:5.44  低:5.15  收:5.19  成交额:17078.06万

数据结构解析

文件结构总览

区域
偏移
大小
内容
文件头
0
14 字节
元数据
数据区
14
N × 32 字节
日线记录
文件尾
-
-
无

文件头 (14 字节)

偏移
类型
字段
说明
0-3
uint32
magic
固定值 1
4-7
uint32
reserved1
保留,值为 0
8-9
uint16
reserved2
保留,值为 0
10-13
uint32
count
记录总数

数据记录 (每条 32 字节)

偏移
类型
字段
说明
0-3
uint32
date
日期 (YYYYMMDD)
4-7
float32
open
开盘价 (元)
8-11
float32
high
最高价 (元)
12-15
float32
low
最低价 (元)
16-19
float32
close
收盘价 (元)
20-23
float32
amount
成交额 (元)
24-27
float32
volume
成交量 (手)
28-31
uint32
reserved
保留/复权因子

官方

注意day文件和~~~day文件是不一样的

python解析代码

import structfrom datetime import datetimedef parse_auc2_day_file(fpath):    """    解析通达信 .~~~day 日线临时缓存文件    """    with open(fpath, 'rb') as f:        data = f.read()    # 解析文件头    magic = struct.unpack('<I', data[0:4])[0]    count = struct.unpack('<I', data[10:14])[0]    header_size = 14    rec_size = 32    records = []    for i in range(count):        off = header_size + i * rec_size        rec = data[off:off + rec_size]        date_val = struct.unpack('<I', rec[0:4])[0]        date_str = f"{date_val//10000:04d}-{(date_val%10000)//100:02d}-{date_val%100:02d}"        records.append({            'date': date_str,            'open': struct.unpack('<f', rec[4:8])[0],            'high': struct.unpack('<f', rec[8:12])[0],            'low': struct.unpack('<f', rec[12:16])[0],            'close': struct.unpack('<f', rec[16:20])[0],            'amount': struct.unpack('<f', rec[20:24])[0],            'volume': struct.unpack('<f', rec[24:28])[0],            'reserved': struct.unpack('<I', rec[28:32])[0]        })    return {        'magic': magic,        'count': count,        'records': records    }# 使用示例result = parse_auc2_day_file(r'D:\test\new_tdx64\T0002\cache\sz000036.~~~day')print(f"记录数: {result['count']}")for r in result['records'][:5]:    print(f"{r['date']} 开:{r['open']:.2f} 高:{r['high']:.2f} 低:{r['low']:.2f} 收:{r['close']:.2f}")

照猫画虎,根据结构体定义,编写数据提取解析代码。

功能扩展

与标准 .day 文件的区别

特性
.~~~day
 临时缓存
标准 .day 日线文件
路径
T0002\cache\vipdoc\sz\lday\
价格格式
float32
 (直接值)
uint32
 (需除以100)
成交量
全为0 (未填充)
实际成交量
文件头
14字节
无文件头
记录大小
32字节
32字节
用途
盘中临时缓存
盘后持久化存储

          感兴趣的自行研究。技术就是不断学习才能收获。

【重要风险提示】
本文中展示的所有股票代码、指标公式(包括但不限于其组成部分)及技术分析逻辑,均为技术交流与案例分析之用,不构成任何形式的投资建议、买卖指导或收益承诺。

股市有风险,投资需谨慎。任何技术指标都存在局限性、滞后性及失效的可能。历史走势不代表未来表现。请您独立进行思考和分析,切勿盲目根据公式或他人的分析进行投资决策。据此操作,风险自负。

相关学习资料