PYthon读取通达信期货日线数据
import os
import struct
import datetime
# 读取通达信.day文件,并生成对应名称的csv文件
def stock_csv(filepath, name, targetdir) -> None:
# (通达信.day文件路径, 通达信.day文件名称, 处理后要保存到的文件夹)
with open(filepath, 'rb') as f: # 读取通达信.day文件,并处理
file_object_path = targetdir + name + '.csv' # 设置处理后保存文件的路径和名称
file_object = open(file_object_path, 'w+') # 打开新建的csv文件,开始写入数据
title_str = "Date,Open,High,Low,Close,Open_interest,Volume,settlement_price\n" # 定义csv文件标题
file_object.writelines(title_str) # 将文件标题写入到csv中
while True:
stock_date = f.read(4) # 读取0-3
stock_open = f.read(4) # 读取4-7
stock_high = f.read(4) # 读取8-11
stock_low = f.read(4) # 读取12-15
stock_close = f.read(4) # 读取16-19
stock_open_interest = f.read(4) # 读取20-23
stock_vol = f.read(4) # 读取24-27
stock_settlement_price = f.read(4) # 读取28-31
# date,open,high,low,close,open_interest,vol,settlement_price
if not stock_date:
break
stock_date = struct.unpack('l', stock_date) # 4字节 如20091229
stock_open = struct.unpack('f', stock_open) # 开盘价
stock_high = struct.unpack('f', stock_high) # 最高价
stock_low = struct.unpack('f', stock_low) # 最低价
stock_close = struct.unpack('f', stock_close) # 收盘价
stock_open_interest = struct.unpack('l', stock_open_interest) # 持仓量
stock_vol = struct.unpack('l', stock_vol) # 成交量
stock_settlement_price = struct.unpack("f", stock_settlement_price) # 结算价
date_format = datetime.datetime.strptime(str(stock_date[0]), '%Y%M%d') # 格式化日期
day_str = date_format.strftime('%Y-%M-%d') + "," + str(stock_open[0]) + "," + str(stock_high[0]) + "," \
+ str(stock_low[0]) + "," + str(stock_close[0]) + "," + str(stock_open_interest[0]) + "," \
+ str(stock_vol[0]) + "," + str(stock_settlement_price[0]) + "\n"
file_object.writelines(day_str) # 将文件写入到csv文件中
file_object.close() # 完成数据写入
# 设置通达信.day文件所在的文件夹
path_dir = 'C:\\new_tdxqh\\vipdoc\\ds\\lday\\'
# 设置数据处理好后,要将csv文件保存的文件夹
target_dir = '../day/'
# 读取文件夹下的通达信.day文件
listfile = os.listdir(path_dir)
# 逐个处理文件夹下的通达信.day文件,并生成对应的csv文件,保存到../day/文件夹下
for fname in listfile:
stock_csv(path_dir + fname, fname, target_dir)
else:
print('The for ' + path_dir + ' to ' + target_dir + ' loop is over')
print("文件转换已完成")
原文链接:https://blog.csdn.net/qq_38242953/article/details/120083856
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具