Pytdx是一个基于C++接口开发的Python第三方模块。
使用它我们能够很方便地获取通达信上的标准行情数据、历史行情数据、专业的财务数据,并且支持macOS系统,非常方便。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器来编写小型Python项目:Python 编程的最好搭档—VSCode 详细指南
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),输入命令安装依赖:
pip install pytdx
2.Pytdx 查询分时成交
为了能够查询数据,我们第一步需要创建API,连接通达信服务:
from pytdx.exhq import * from pytdx.hq import * api_hq = TdxHq_API() api_hq = api_hq.connect('119.147.212.81', 7709)
第二步,使用这个API查询历史分时数据:
from pytdx.exhq import * from pytdx.hq import * api_hq = TdxHq_API() api_hq = api_hq.connect('119.147.212.81', 7709) print(api_hq.get_history_transaction_data(TDXParams.MARKET_SZ, "002560", 0, 500, 20220916))
效果如下:
[OrderedDict([('time', '14:29'), ('price', 7.91), ('vol', 582), ('buyorsell', 1)]), ... ... ]
请注意,查询的日期必须填写整数,不然会查询不到数据。
3.查询完整历史分时数据
在前面的示例中,我们查询了 002560 这个股票在 2022-09-16 的最后500条数据。
如果我们想要查询当天的全部数据,需要不断改变start和limit,即api_hq.get_history_transaction_data的第三个参数和第四个参数。
代码如下:
# 公众号: 二七阿尔量化 # 2022-09-17 from pytdx.exhq import * from pytdx.hq import * api_hq = TdxHq_API() api_hq = api_hq.connect('119.147.212.81', 7709) def get_all_trans_data(api, code, date): start = 0 data = [] while True: part = api.get_history_transaction_data(TDXParams.MARKET_SZ, code, start, 888, int(date)) data.extend(part) if len(part) < 888: break start += 888 return data data = get_all_trans_data(api_hq, "002560", 20220916) print(len(data)) # 3776
data 的格式如下:
数组里的顺序是乱的,因为我们请求数据的时候并不是按时间序列去请求的,因此还可以做数据规整化处理:
# 公众号: 二七阿尔量化 # 2022-09-17 from pytdx.exhq import * from pytdx.hq import * from collections import defaultdict api_hq = TdxHq_API() api_hq = api_hq.connect('119.147.212.81', 7709) def get_all_trans_data(api, code, date): start = 0 data = [] while True: part = api.get_history_transaction_data(TDXParams.MARKET_SZ, code, start, 888, int(date)) data.extend(part) if len(part) < 888: break start += 888 return data date = 20220916 data = get_all_trans_data(api_hq, "002560", date) print(len(data)) # 3776 trans = defaultdict(list) for tran in data: # "%Y%m%d %H:%M" trans[datetime.datetime.strptime(str(date) + " " + tran["time"], "%Y%m%d %H:%M")].append({ "price": tran["price"], "volume": tran["vol"], "turnover": float(tran["price"]) * float(tran["vol"]) * 100, }) trans = dict(sorted(trans.items(), key=lambda x: x[0]))
这样,trans的数据就是格式化好的:
4.其他查询方法
除了历史分时数据,pytdx还可以查询:
股票行情数据:
api.get_security_quotes([(0, '000001'), (1, '600300')]) # 参数格式:[(市场代码, 股票代码), ...]
K线数据:
api.get_security_bars(9,0, '000001', 4, 3)
参数如下:
读取公司信息详情:
api.get_company_info_content(0, '000001', '000001.txt', 0, 100) # 参数:市场代码, 股票代码, 文件名, 起始位置, 数量
读取财务信息:
api.get_finance_info(0, '000001') # 参数:市场代码, 股票代码
还有其他更多的功能,大家可以阅读Pytdx的说明文档:
https://rainx.gitbooks.io/pytdx
我们的文章到此就结束啦,如果你喜欢今天的 Python 教程,请持续关注Python实用宝典。
有任何问题,可以在公众号后台回复:加群,回答相应验证信息,进入互助群询问。
原创不易,希望你能在下面点个赞和在看支持我继续创作,谢谢!
Python实用宝典 ( pythondict.com )
不只是一个宝典
欢迎关注公众号:Python实用宝典