本次重点介绍通达信的临时日线缓存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万
数据结构解析
文件结构总览
文件头 (14 字节)
1 | |||
0 | |||
0 | |||
数据记录 (每条 32 字节)
官方
注意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 = 14rec_size = 32records = []for i in range(count):off = header_size + i * rec_sizerec = 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 | |
感兴趣的自行研究。技术就是不断学习才能收获。
股市有风险,投资需谨慎。任何技术指标都存在局限性、滞后性及失效的可能。历史走势不代表未来表现。请您独立进行思考和分析,切勿盲目根据公式或他人的分析进行投资决策。据此操作,风险自负。
夜雨聆风