扩展行情接口API
首先需要引入
from pytdx.exhq import TdxExHq_API
然后,创建对象
api = TdxExHq_API()
之后,通常是如下的格式
if api.connect('61.152.107.141', 7727):
# ... same codes...
api.disconnect()
当然,我们也支持with 语法,可以省略disconnect()
语句
with api.connect('61.152.107.141', 7727):
# some codes
api方法列表
参数一般性约定
一般来说,股票代码和文件名称使用字符串类型,其它参数都使用数值类型
1: 获取市场代码
可以获取该api服务器可以使用的市场列表,类别等信息
api.get_markets()
返回结果 api.to_df(api.get_markets())
一般某个服务器返回的类型比较固定,该结果可以缓存到本地或者内存中。
2017-07-31 21:22:06,067 - PYTDX - INFO - 获取市场代码
market category name short_name
0 1 1 临时股 TP
1 4 12 郑州商品期权 OZ
2 5 12 大连商品期权 OD
3 6 12 上海商品期权 OS
4 8 12 上海个股期权 QQ
5 27 5 香港指数 FH
6 28 3 郑州商品 QZ
7 29 3 大连商品 QD
8 30 3 上海期货 QS
9 31 2 香港主板 KH
10 32 2 香港权证 KR
11 33 8 开放式基金 FU
12 34 9 货币型基金 FB
13 35 8 招商理财产品 LC
14 36 9 招商货币产品 LB
15 37 11 国际指数 FW
16 38 10 国内宏观指标 HG
17 40 11 中国概念股 CH
18 41 11 美股知名公司 MG
19 43 1 B股转H股 HB
20 44 1 股份转让 SB
21 47 3 股指期货 CZ
22 48 2 香港创业板 KG
23 49 2 香港信托基金 KT
24 54 6 国债预发行 GY
25 60 3 主力期货合约 MA
26 62 5 中证指数 ZZ
27 71 2 港股通 GH
2: 查询代码列表
参数, 起始位置, 获取数量
api.get_instrument_info(0, 100)
Demo:
3: 查询市场中商品数量
api.get_instrument_count()
4: 查询五档行情
参数 市场ID,证券代码
- 市场ID可以通过
get_markets
获得
api.get_instrument_quote(47, "IF1709")
5: 查询分时行情
参数 市场ID,证券代码
- 市场ID可以通过
get_markets
获得
api.get_minute_time_data(47, "IF1709")
6: 查询历史分时行情
参数 市场ID,证券代码,日期
- 市场ID可以通过
get_markets
获得 - 日期格式 YYYYMMDD 如 20170811
api.get_history_minute_time_data(31, "00020", 20170811)
7: 查询k线数据
参数: K线周期, 市场ID, 证券代码,起始位置, 数量
- K线周期参考
TDXParams
- 市场ID可以通过
get_markets
获得
api.get_instrument_bars(TDXParams.KLINE_TYPE_DAILY, 8, "10000843", 0, 100)
8: 查询分笔成交
参数:市场ID,证券代码
- 市场ID可以通过
get_markets
获得
api.get_transaction_data(31, "00020")
注意,这个接口最多返回1800
条记录, 如果有超过1800条记录的请求,我们有一个start 参数作为便宜量,可以取出超过1800条记录
如期货的数据:这个接口可以取出1800条之前的记录,数量也是1800条
api.get_history_transaction_data(47, "IFL0", 20170810, start=1800)
9: 查询历史分笔成交
参数:市场ID,证券代码, 日期
- 市场ID可以通过
get_markets
获得 - 日期格式 YYYYMMDD 如 20170810
api.get_history_transaction_data(31, "00020", 20170810)
多线程支持
由于Python的特性,一般情况下,不太建议使用多线程代码,如果需要并发访问,建议使用多进程来实现,如果要使用多线程版本,请在初始化时设置multithread参数为True
api = TdxExHq_API(multithread=True)
心跳包
由于长时间不与服务器交互,服务器将关闭连接,所以我们实现了心跳包的机制,可以通过
api = TdxExHq_API(heartbeat=True)
设置心跳包,程序会启动一个心跳包发送线程,在空闲状态下隔一段时间发送一个心跳包,注意,打开heartbeat=True选项的同时会自动打开multithread=True
抛出异常 和 重连机制
参考 标准行情 pytdx.hq 对应的章节
获取流量统计信息
In [12]: api.get_traffic_stats()
Out[12]:
{'first_pkg_send_time': datetime.datetime(2017, 9, 13, 13, 42, 3, 596519),
'recv_bytes_per_second': 116.0,
'recv_pkg_bytes': 2759,
'recv_pkg_num': 18,
'send_bytes_per_second': 15.0,
'send_pkg_bytes': 368,
'send_pkg_num': 9,
'total_seconds': 23.716146}