前言
在星球《玩转股票量化交易》中我们提供了获取实时行情数据的方式——每间隔3秒爬虫从财经网站上实时采样全市场个股最新行情数据,类似于Level1级别的更新!
具体可以查看这篇公众号文章:
对于做短线策略的交易者来说,得到实盘的量价数据之后,还需要把这些数据转换为各种技术指标,在策略中去使用和分析。
由于本地采样时间和交易所推送数据时间会有微小的差别(ms级别),时间长了之后计算出的技术指标会累积成更大的误差,于是在实盘中得到一个相对标准的分钟级别数据(通常技术指标使用的最小单位是分钟)用于计算技术指标非常关键。
于是我们使用通达信的这个接口来修正技术指标,因为在实盘中这个接口可以获取到最近的分钟级别的行情数据。
比如14点30分去调用该接口的时候可以获得最新的分钟级别行情数据。
接口使用介绍
接下来介绍下如何使用这个接口吧!
首先安装pytdx库,该库提供了获取通达信行情接口
pip install pytdx
其次在程序中引入模块
from pytdx.hq import TdxHq_API
然后,创建对象
api = TdxHq_API()
之后,通常连接到行情服务器上,建议是使用with 语法,可以省略disconnect()语句
with api.connect('119.147.212.81', 7709):
# some codes
获取k线的接口get_security_bars,其中的各个参数含义如下。
K线种类:
-
0—5分钟K线
-
1—15分钟K线
-
2—30分钟K线
-
3—60分钟K线
-
4—日K线
-
5—周K线
-
6—月K线
-
7/8—1分钟K线
Market市场代码: 0—深圳,1—上海
Stockcode:证券代码;
start :指定的范围开始位置;
count:要请求的 K 线数目,最大值为 800
比如以下语句表示获取获取股票深证的000001股票最近的10条1分钟数据
api.get_security_bars(7, 0, '000001', 0, 10)
数据获取的接口一般返回list结构,如果需要转化为pandas Dataframe接口,可以使用 api.to_df 进行转化 如:
api.to_df(api.get_security_bars(7, 0, '000001', 0, 10)) # 返回普通list后转DataFrame
多进程实盘方案
根据以上的接口介绍可以看出,这个接口只能获取单个股票最新的分钟级别数据,如果要监测多只股票的话,要保证在1分钟内将全部数据更新完成。
于是我们采用了多进程的方式加速分钟数据的获取。开了8个进程后,实测下来1分钟内可以更新900多只股票的分钟行情数据!已经足够用于实盘动态监测股票的数量了。
start = time.time()
p = Pool(8)
for val in basic_code_list():
res = p.apply_async(tdx_download_if, args=(val,))
p.close()
p.join()
print('总耗时:%.5f秒' % float(time.time() - start))