python 读取 通达信 数据 pytdx

该文章已生成可运行项目,

python 读取 通达信 数据 pytdx

pytdx 1.72
https://www.cnpython.com/pypi/pytdx

https://rainx.gitbooks.io/pytdx/content/pytdx_reader.html

pip3 install pytdx

from pytdx.reader import TdxDailyBarReader, TdxFileNotFoundException
from pytdx.reader import BlockReader

reader = TdxDailyBarReader()
df = reader.get_df("C:\\new_tdx\\vipdoc\\sz\\lday\\sz000001.day")
print(df)


df = BlockReader().get_df("C:\\new_tdx\\T0002\\hq_cache\\block_zs.dat")
print(df)

df = reader.get_df("C:\\new_tdx\\vipdoc\\sh\\lday\\sh601688.day")
print(df)

11


[9843 rows x 4 columns]
             open   high    low  close        amount      volume
date
2010-02-26  21.01  21.94  21.00  21.06  6.631745e+09  3109136.36
2023-10-09  15.61  15.82  15.32  15.78  7.417075e+08   475096.64

volume — 成交量 47.51万手 475096.64手 一手等于一百股
amount — 成交额 7.42亿

最高:15.82
今开:15.61
涨停:17.39
最低:15.32
昨收:15.81
成交量:47.51万手
成交额:7.42亿

1

通达信软件官方免费提供沪深京日线、5分钟、1分钟k线数据下载,每日盘后提供当日数据下载,数据更新时间也很快,对于想要免费获取可靠数据进行投资的朋友来说是一个不错的选择

数据下载
通达信数据免费下载操作步骤如下:

首先,在通达信官网下载通达信金融终端软件
下载完成后将其安装在默认路径C:\new_tdx即可
安装后打开,在菜单栏点击: 选项 --> 盘后数据下载,弹出下面的面板:
勾选日线和实时行情数据, 选择需要下载的对应时间范围的数据, 点击开始下载, 数据会保存到本地。 其中上证数据会下载到C:\new_tdx\vipdoc\sh\lday\sh000009.day, 深证数据会下载到C:\new_tdx\vipdoc\sz\lday\sz000009.day。 注意C:\new_tdx\为安装路径,如果不是使用的默认路径,需要进行更换
数据解析
通过通达信下载的day文件是二进制文件,可以使用手动解析,也可以使用lib库进行解析。下面分别介绍:

手动解析

def day2csv(source_dir, file_name, target_dir):
    # 以二进制方式打开源文件
    source_file = open(source_dir + os.sep + file_name, 'rb')
    buf = source_file.read()
    source_file.close()

    # 打开目标文件
    target_file = open(target_dir + os.sep + file_name[: file_name.rindex('.')] + '.csv', 'w')
    buf_size = len(buf)
    rec_count = int(buf_size / 32)
    begin = 0
    end = 32
    header = str('date') + ',' + str('open') + ',' + str('high') + ',' + str('low') + ',' \
             + str('close') + ',' + str('amount') + ',' + str('volume') + '\n'
    target_file.write(header)
    for i in range(rec_count):
        a = unpack('IIIIIfII', buf[begin:end])
        # 处理date数据
        year = a[0] // 10000
        month = (a[0] % 10000) // 100
        day = (a[0] % 10000) % 100
        date = '{}-{:02d}-{:02d}'.format(year, month, day)

        line = date + ',' + str(a[1] / 100.0) + ',' + str(a[2] / 100.0) + ',' \
               + str(a[3] / 100.0) + ',' + str(a[4] / 100.0) + ',' + str(a[5]) + ',' \
               + str(a[6]) + '\n'
        target_file.write(line)
        begin += 32
        end += 32
    target_file.close()

使用mootdx解析
需要安装mootdx库,使用pip install -U mootdx 进行安装

from mootdx.reader import Reader

reader = Reader.factory(market='std', tdxdir='C:/new_tdx')

# 读取日线数据
reader.daily(symbol='600036')

# 读取1分钟数据
reader.minute(symbol='600036')

11

from mootdx.reader import Reader

reader = Reader.factory(market='std', tdxdir='C:/new_tdx')

# 读取日线数据
df = reader.daily(symbol='600036')
print(df)

# 读取1分钟数据
df = reader.minute(symbol='600036')
print(df)


由于篇幅有限,上面只给了示例代码, 更完整的代码可以关注公众号“诸葛说talk”后加群进行交流

小结 & 交流
如果对通达信数据下载使用或股票投资感兴趣,请关注公众号后回复“入群”获取邀请加入A股交流群,名额有限,不要错过。

写文章不易,觉得本文对你有帮助的话,还请帮忙点赞转发赞赏,让笔者有坚持写好文章的动力。

参考
https://www.tdx.com.cn/soft.html
这个手动解析函数可能有问题,试了3,5只股票,解析出来的数值都远大于真实值
数据没复权的

https://www.mootdx.com/zh_CN/latest/

本文章已经生成可运行项目
Python读取通达信数据时连接服务器失败,可按以下方法解决: ### 检查网络连接 确保设备网络正常,可尝试访问其他网站或服务来验证。若使用的是无线网络,可尝试切换到有线网络,或者重启路由器。 ### 检查服务器地址和端口 确认使用的服务器地址和端口是否正确。如引用中的示例,连接扩展行情接口时地址和端口可能会发生变化,需要及时更新。可以参考通达信官方文档或社区获取最新的服务器地址和端口信息。示例代码如下: ```python from pytdx.exhq import TdxExHq_API # 正确的地址和端口 address = '180.153.18.176' port = 7721 ex_api = TdxExHq_API(auto_retry=True, raise_exception=False) try: connected = ex_api.connect(address, port, time_out=30) if connected: print("连接成功") else: print("连接失败,请检查地址和端口") except Exception as e: print(f"连接出错: {e}") ``` ### 检查防火墙和安全软件 防火墙或安全软件可能会阻止Python程序与通达信服务器之间的通信。可以暂时关闭防火墙或安全软件,然后再次尝试连接。若关闭后连接成功,可将Python程序添加到防火墙或安全软件的允许列表中。 ### 检查Python库版本 确保使用的`pytdx`库是最新版本。可以使用以下命令升级: ```bash pip install --upgrade pytdx ``` ### 增加重试机制 在代码中增加重试机制,当连接失败时自动进行多次重试。示例代码如下: ```python from pytdx.exhq import TdxExHq_API import time address = '180.153.18.176' port = 7721 max_retries = 5 retry_delay = 5 ex_api = TdxExHq_API(auto_retry=True, raise_exception=False) for retry in range(max_retries): try: connected = ex_api.connect(address, port, time_out=30) if connected: print("连接成功") break else: print(f"连接失败,第 {retry + 1} 次重试...") except Exception as e: print(f"连接出错: {e},第 {retry + 1} 次重试...") time.sleep(retry_delay) if not connected: print("多次重试后仍连接失败,请检查网络和服务器设置") ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值