|
Pytdx是一个基于C++接口开发的Python第三方模块。
使用它我们能够很方便地获取通达信上的标准行情数据、历史行情数据、专业的财务数据,并且支持macOS系统,非常方便。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上,如果没有,可以访问这篇文章:超详细Python安装指南 进行安装。
(可选1) 如果你用Python的目的是数据分析,可以直接安装Anaconda:Python数据分析与挖掘好帮手—Anaconda,它内置了Python和pip.
(可选2) 此外,推荐大家用VSCode编辑器,它有许多的优点:Python 编程的最好搭档—VSCode 详细指南。
请选择以下任一种方式输入命令安装依赖:
1. Windows 环境 打开 Cmd (开始-运行-CMD)。
2. MacOS 环境 打开 Terminal (command+空格输入Terminal)。3. 如果你用的是 VSCode编辑器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install pytdx2.查询分时成交
为了能够查询数据,我们第一步需要创建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
print(len(get_all_trans_data(api_hq, &#34;002560&#34;, 20220916)))
# 3776data 的格式如下:

数组里的顺序是乱的,因为我们请求数据的时候并不是按时间序列去请求的,因此还可以做数据规整化处理:
# 公众号: 二七阿尔量化
# 2022-09-17
from pytdx.exhq import *
from pytdx.hq import *
from collections import defaultdict
api_hq = TdxHq_API()
api_hq = api_hq.connect(&#39;119.147.212.81&#39;, 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, &#34;002560&#34;, date)
print(len(data))
# 3776
trans = defaultdict(list)
for tran in data:
# &#34;%Y%m%d %H:%M&#34;
trans[datetime.datetime.strptime(str(date) + &#34; &#34; + tran[&#34;time&#34;], &#34;%Y%m%d %H:%M&#34;)].append({
&#34;price&#34;: tran[&#34;price&#34;],
&#34;volume&#34;: tran[&#34;vol&#34;],
&#34;turnover&#34;: float(tran[&#34;price&#34;]) * float(tran[&#34;vol&#34;]) * 100,
})
trans = dict(sorted(trans.items(), key=lambda x: x[0]))这样,trans的数据就是格式化好的:

4.其他查询方法
除了历史分时数据,pytdx还可以查询:
股票行情数据:
api.get_security_quotes([(0, &#39;000001&#39;), (1, &#39;600300&#39;)])
# 参数格式:[(市场代码, 股票代码), ...]K线数据:
api.get_security_bars(9,0, &#39;000001&#39;, 4, 3)参数如下:

读取公司信息详情:
api.get_company_info_content(0, &#39;000001&#39;, &#39;000001.txt&#39;, 0, 100)
# 参数:市场代码, 股票代码, 文件名, 起始位置, 数量读取财务信息:
api.get_finance_info(0, &#39;000001&#39;)
# 参数:市场代码, 股票代码还有其他更多的功能,大家可以阅读Pytdx的说明文档:
https://rainx.gitbooks.io/pytdx
我们的文章到此就结束啦,如果你喜欢今天的量化投资内容,请持续关注二七阿尔量化。
希望你能在下面点个赞和在看支持我继续创作,谢谢!
欢迎关注公众号:二七阿尔量化 |
|